Tax Day, Psychology & Pragmatic Tools

Written on 12:25:00 PM by S. Potter

Since I moved to the US I have always been struck by how wonderful the weather is on Tax Day. Since 2000 I have procrastinated doing my taxes until the VERY last minute (or at least last two days). I have traveled from coast to coast and lived in the midwest all since 2000 and every place I have been on Tax Day is a beautiful sunny, not too hot, not too windy, simply beautiful day! This year the regular Tax Day (April 15) landed on a Saturday so the IRS generously gave us until the following business day to e-file or mail our returns. Technically I finished filling in my tax forms on Sunday (April 16, 2006), but I only mailed the returns and added the extra $1,000 to my Roth IRA for 2005 this morning. Did you know that the limit is $4,000 this 2005 and 2006? Hurry you still have time to make the contribution. Perhaps the reason that the weather is so beautiful on Tax Day is that we appreciate it more knowing we have another 365 days until we need to do it all over again. Is it all psychological? I have been wondering this with respect to my work recently too. Over the last 2 years I have been increasingly more a Python head and less a Java head. Now I have started a medium scale website in Ruby on Rails and am having a great time doing so. The reason I have slowly been withdrawing from Java towards Python and Ruby is that I have found myself actually enjoying my work again on a low-level. It is honestly a pleasure to write Python and Ruby. Don't get me wrong I still need to fix some Java code in older projects that I still look after, and I am not saying Java is a bad language. In fact, compared to C++ (one of the languages I used on my first three jobs) it provides many productivity enhancements to writing servers in J2EE and even GUIs in Swing/JFC (as compared with MFC not comparing .NET here). C++'s Boost libraries are great if you are still a C++ head, but I think they arrived way too late in the game. For me Python and Ruby provide me with tools that psychologically enhance my state of mind while writing code. For example, I do not need to wait for byte compilation the same way I need to wait for a Java project of a similar size to compile. This means I don't loose my train of thought between writing the code and running the tests while checking my emails or getting a refreshment in the meantime. It also means that it simply takes less time to complete. The more time I have for writing and running tests the better in my opinion. I felt in Java and C++ that waiting for the compilation process (especially C++;) made me loose some of my gusto and determination for writing more tests. By providing pragmatic tools that enable me to write more tests without negative consequences, Python and Ruby promote more test writing and result in me having a large collection of test cases to run on a continuous or regular interval. One of the other major benefits of using Python and/or Ruby is their advanced interactive shells (ipython and irb respectively) that neither Java nor C++ possess in a serious fashion (e.g. Groovy, Jython, JRuby, etc. are not truly interactive Java shells in the same way). These two interactive language shells are huge time savers and promote true prototyping in the shell. Prototyping in this fashion makes sure that prototype code is truly thrown away except for the lines of code you have made the extra effort to cut n paste (i.e. the lines that worked the way you needed) and thought about which to keep. Again by using these pragmatic tools we are psychologically driven to doing the *right* thing for the project and learning the APIs more quickly. The third major benefit, and in my opinion the most overlooked (albeit quite new) attribute of these two pragmatic language environments (Python and Ruby), is package management with version/dependency management and discovery mechanisms built-in. In Java you have Maven, which attempts to do this for you in a round about way (and do not get me wrong Maven is very good for the Java world), but this is not a standard, either defacto or otherwise. Sure Python's Eggs (and the associated setuptools module) aren't true Python standards yet, but they soon will be and are very widely used both in open source and corporate worlds. Both Ruby's Gems and Python's Eggs provide developers, development teams and system administrators as a whole an easy way to manage multiple versions of code packages and components without worrying about setting environment variables and/or server container arguments appropriately, which might be out of the developer's control. The less time developers need to spend time on configuring their environment the better. Eggs and Gems streamline much of the configuration processes significantly as compared to Java's JARs limited functionality. While my personal experiences catalogued above isn't necessarily applicable to all developers, overall I think one of the keys to boosting development productivity in a language is understanding on a psychological level what developers NEED to work smarter!

If you enjoyed this post Subscribe to our feed

No Comment

Post a Comment