As a software architect, compared to software developer, I face more choices and challenges every day when constructing software systems. There’s no silver bullet in software development as told by Fred Brooks, but there’s always a better way to build software considering cost and productivity, and the last but the most important factor for modern software development: being happy programmers.
“Rome is not built in one day”. I must accept the fact that which programming language community is stronger or even strongest for certain domain in the programming world for the time being. That means we may have strong reasons to choose that language, which are solid platform, more mature developers, more 3rd party framework or libraries. That said, for Web Development domain, Java and PHP are the top two choices. Why not them?
Java is a good language and it’s been there for years. But I have read the rantings from Steve Yegge, and I agree with him that Java is clumsy and verbose. I have used Java for many years since 2001, that is quite a time, but the more I know the language, the more I feel I should switch to another one for a try. I said to myself, why not think dynamically, why not dynamic language?
Well, for dynamic languages, I don’t know PHP, I know a bit of Ruby, but I heard a lot about Python. They say, “life is short, I use Python”. Although Steve also ranted on Python saying about the indent or exit(). But I am totally comfortable on these points.
Back to Java, the most attractive to stay with Java is JVM platform. There are many excellent frameworks and libraries, besides, JVM platform is good at performance. As we talk about dynamic languages, they are not even comparable. So it’s hard, it’s hard about the hardest language choices. What is the solution? I searched around the performance optimization methods for Python and I am sure that for the early phase, we don’t have a ton of visits, so we can optimize the system as it grows along the way. It’s not that horrible! Remember twitter? They use Ruby on Rails at first and they changed it to Java back-end when the PV becomes huge. And I learned a lot of famous websites use Python, like Youtube, or Instagram. That improves my confidence.
I love Scala for over 2 years, but I am afraid it’s not a good time to adopt it in a young team, which means we don’t have Scala developers or polylot programming fans in our team. That’s very hard to propagate it over and over again to just let others love Scala. It’s hard and not necessary at least for now. Clojure, oh, No.
So actually at last I don’t have many choices, Python is the winner. Amongst Python web frameworks, Django is the best although it’s heavy(Really?). Tornado? or Flask? I compared all of the famous Python web frameworks through the articles and Q&A on the web, and finally choose Django. I don’t need to repeat the arguments but I’d say it’s best suited for our team, young team with a strong leader. I explore and build the infrastructure and ask team to build applications.
The facts, the rationales and the conclusion, all of them, they all come from what you have and what you want to achieve. Django - The web framework for perfectionists with deadlines. It’s suited for us and it may be suited for you.
Enjoy the way of Django!