I've been working with Ruby on Rails full-time now for close to 4 years. Two years as a full-time employee and two years as a freelancer. In that time I've worked with and built all manner of Rails applications. Content management systems, business support applications, healthcare service portals and my own little product, DailyMuse. It's still my choice of web framework for new projects, but I feel that lately I've become too settled with Rails. Yes it's a fine framework to work with and who could argue. It has a thriving community that offers great support and ensures the ongoing development of the framework, but there's more than one web framework out there.
In the last few months I've been trying out the Rust systems programming language. It's been a hit and a miss getting my head round the syntax but largely I feel that I am wasting my time with it. Why? Well Rust is still fairly new and at the time of writing this it's just about to emerge from its 1.0 beta phase. Despite the immeninent release of the stable version of the language, I still think I arrived at the Rust party too early. I've never been an early adopter of technology. I like to sit on the fence longer than normal before making any decisions about investing in a language or a framework. I might re-visit Rust in six months time or even a year to see how popular it is and whether it's worth investing my time in. So, putting Rust to the side has left a space for me to look at another language or framework.
Looking at the market today, there's such a variety in the demand for different languages and frameworks. I've done .NET in the past and while I think there's going to be a steady demand for it in the future, I do want to try something completely new. A language I've never used before. Enter Python.
Okay, it's not completely different to Ruby. It has duck typing and It's dynamic but it is also an established programming language. If I was going to learn a new language then it was going to be something that I could use in my career. Getting a Python contract with no experience might be tricky, but I'm prepared to tart up my Github page with a couple of projects done in Python that could add weight to my cause.
Also, if I'm going to pick a language that gives me extra tools to use then I want something that sits alongside it just like Ruby on Rails sits alongside Ruby. I not only want to learn a new programming language but a new web framework that is made with that programming language. Enter Django.
In the past I've tried to learn different programming languages and failed spectacularly but this feels different. Rather than picking an new cutting edge technology, I've picked an established programming language and an established web framework to go with it. They're not completely different from Ruby and Rails, but that's the idea. I'm a web developer, therefore it makes sense to learn another web framework. This might be a low risk investment, but that's okay. There's enough developers chasing the bleeding edge technology. How many are chasing established technology?