Related link: http://www.python.org/

I’m sure that at some point, we’ve all run across a heated discussion debating whether or not one programming language is better than another, and I’m not trying to get into that here. For the moment, let’s just acknowledge that all programming languages are tools that enable us to get work done, and the “right” tool for any particular job depends on some combination of the programmer’s experience, the task at hand, and how much effort someone is willing to exert to get the job done.

With that said, I think it’s helpful to take an inventory of what’s in your toolbox every once in a while and to think about how the tools you’re using complement (or don’t complement) one another. Out of necessity, most of my coding for the last good while has revolved around Objective-C, Java, and Perl, but after thinking about it, I’ve decided to try out something new: stop drinking so much Java and instead start wrestling with Python.

One thing I really appreciate about Java is the huge code base that’s out there, so one of my first concerns was whether or not I’d be continually faced with source code and library shortages. After about ten seconds of searching, I determined that there’s certainly no kind of shortage, so I’m feeling pretty optimistic about finding stuff when I need it.

Two things I won’t be finding in Python, however, are Java’s verbosity and overloading madness — things that simply result in excess code that I have to develop, maintain, and debug. Python elegantly takes care of both of these issues and seems to be pretty darn concise overall. I’m also excited about the functional programming features that Python brings to the table; you have to love being able to do things like write a Quick Sort in just a few lines of code.

One final thing I’m looking forward to trying out is PyObjC — the Cocoa-Python bridge that makes it very easy to leverage Cocoa frameworks from Python. Since I spend a lot of time in the wonderful world of Cocoa, I’m interested to see how much productivity I’ll be able to gain by developing with PyObjC. I’ve been trying to be more agile with my development practices lately, so I’m hoping that PyObjC will be as helpful as it looks like it will be.

Again, I don’t say any of these things to spark up a Python vs Java debate. I really just wanted to share some of my recent reflections and to try and encourage you to take a step back and do some reflection of your own. If you’re long overdue, slot off some time this week to take an inventory of what’s out there and think about how the tools you use complement or don’t complement one another.

If you’re wasting time, you’re probably losing money.

What tools are you using to get work done? Have you found any particular combinations to produce crazy amounts of synergy?