I have started learning Python a while ago and so far used it in scripting in server side tasks. It was quite powerful, easy and fast for small tasks. And that’s all I know of Python. Then a year ago, I read few articles about how big names started using Python and that’s when I come to know of Django, Flask etc. I always wanted to use Python for my web applications, but since my company doesn’t allow it, I decided to give it a try.(Everything was tested in my local machine. Not hosted solutions.)
For those who don’t know, all my experiences so far is with Struts/Spring/EJB/CI(PHP)/Grails and trying out something like Python was breath of fresh air for me. I felt like WTF!! I know Python is expressive and all, but with Web, I never expected it to be this easy! I can write and run an web app under a minute!!(Of course, Hello World! What else do you think). So I thought I can use it for my pet project which I did in Spring. The project was mostly CRUD with some recursive functions to calculate some financial and sales data. It took me close to ~30 hrs to finish it with Spring 4+MySQL(Lack of Scaffolding is obvious here).
Main Idea was to try Python Web FW and do it as quick as I can. Tried Django, loved it’s “Batteries Included” approach. Setting up was quite easy, to my surprise. Got CRUD part up and running after lot of fiddling and what-not in under 4 hours.(Main culprit was finding MySQL driver and connecting it with ORM). Then started customizing to add my recursive functions and since logic is already written, all I had to do was re-write it. Code base reduced to less than half, and speed was good too.
So, after 10 hours, I was ready with my application up and running with my existing DB and I re-used HTMLs which was tedious, because I heavily relied on jQuery and now with django, I wanted to use templating for the sake of learning, which took me most of my time. I was pretty happy, that I can able to develop such simple projects in such short amount of time. Added few additional modules in the application for sake of testing features and it was good.
Here is my view on Python Frameworks : Awesome! Why? It’s ease of use, expressive and productivity. From now on, all my freelancing and pet projects will be in Python.Why? Those works are small-medium scale and as only developer, I find managing Python code base to be easy. No tedious configuration, LoC is heavily reduced, no boilerplate coding and all regular python advantages. I never thought pet projects can be so much fun. I am not saying Spring is boring, but to certain level yes.
Does it mean, I hate Spring? No, not at all. Both have it’s own usage and excels at different scenario. If I have a chance to sneak python into my [past] organization, I can use it for all cumbersome Spring modules into Python, and get best out of both worlds. But I know that is a long shot and for now,I try to use them for my pet projects to know more about it.
UPDATE (Mar 2016): As much as I loved Python, I didn’t get a chance to use it. After initial excitement fade off, doing thing in Python was little tough. Be it writing proper code, configuring it in server etc, where all becoming nightmare for me. After a lot of thinking, I decided to drop it, because it ain’t worth the time.
1. I am not doing any mission critical freelancing projects which need such powerful framework
2. I don’t have enough time to get it up and running whatever environment I work!
3. Things get little ugly, because you know, it seems that I don’t like dynamic typing after the initial excitement. It mainly because of my years of experience in Java!
These things were pretty hard, but after getting into Nodejs and host the app within few days, got me thinking. So I said adios to Python and Aloha to Nodejs. Nodejs, here I come! Wait, not really.