For the last two years or so, I have been involved with Python in an on-off relationship of sorts. I possessed syntactical familiarity, had completed a MOOC and couple of web projects using Django. I had also read up on some of its novel features (list comprehensions et al.) and played around a bit. I knew that Python is great and that a lot of very smart people loved the language. I knew about how it keeps readability at its core and is great for teams. And the list could go on and on.
However, I just “knew” all this; sadly, I had never experienced much of the above. That was about to change when I first started looking at it last year during a Data Science competition. I went through a few tutorials, and most of them had their code written in Python. I was able to understand them all right since I had conceptual familiarity with the topics. But to play with the code itself, I chose to set up conda on my machine (I absolutely love the Anaconda distribution but that is a topic for another time). That is how, I started using the Python scientific and data science stack (scipy, scikit-learn, pandas, etc) in addition to R. It has been a great experience till now. In particular, pandas is a great tool. The data-frame data structure is one of the best features that R offers. To implement them in Python as well was a game-changer.
For the record, R was (and still remains) my primary choice for most things data. But the future is uncertain and full of possibilities. The P just might overthrow the R!
But I hadn’t quite experienced why Python just clicked by then. However, I did during the last three weeks. All that had been missing previously was a hint of my love for Open Source! There were a couple of projects that I really wanted to contribute to. Both were implemented mostly in Python (as are a huge number of other open source projects). Now any good open source project requires you to be above a certain threshold before you can make any meaningful contribution. My rusty skills and unstructured experience with the language weren’t enough. I decided to take the challenge head on and learn the Pythonic way of dealing with things. I ended reading up some good resources and tutorials. The best of which was an excellent guide created and maintained by Kenneth Ritz: Hitchhiker’s Guide to Python.
By the way, I am delighted to inform you that I was successful in getting some pull requests merged. 😛
Python’s readability and commitment to doing away with unnecessary clutter comes to the fore when observed in the realm of open source. With well-defined standards (read PEP8) and a host of packages and tools, I finally see why so many people are gung-ho about it. Sure, it has its quirks and not everyone is satisfied with Python’s performance or heavy usage of duck typing. It is, for obvious reasons, not a good choice for doing tasks closer to the metal (systems stuff).
There will always be fanatics who will claim that Python is the very best. Obviously they are best ignored. But it’s a great programming language and works for an amazing array of tasks. Plus the Zen of Python is pure awesomeness!
I usually like to think of myself as being language-agnostic (which I sadly am not). But I will definitely continue my journey of learning the Pythonic way of things. See you around!
P.s. I am but a novice and might have made some mistakes in the above write-up. Please correct me in the comments with appropriate references and I will be happy to make the edit.