Nearly two years ago, my goal was to learn Python well enough to write effective code. Last year it was to complete two applications written in Python, an automatic configuration and meter reads manager and a web site running on Django. This year my goal is to write more sophisticated web programs utilizing whatever tools seem best. I’ve been able to create primitive, albeit useful, web sites for years, but none of them are sophisticated. That will change.
The aforementioned work was to support a major public works project to upgrade how water meters are read. I did not have to choose Python. I could have used older programming tools with which I was more familiar. I chose Python for two reasons.
1) Python is known by a lot of people. In fact, it is the first Computer Science language taught to freshman in our high school. My work can be taken over by other programmers without a lot of research.
2) By implementing in Python, I learned something new and can do my job more efficiently. Python’s support library is starting to rival Perl’s, and that is quite a feat. If there is anything you want to do in Python, from parse a .csv file to file transfer that file somewhere on the network, you can do it easily in Python. To get to this point I declared my knowledge — or at least part of it — obsolete and set out to correct that problem.
I have seen other posts encouraging obsolescence. Two that stand out in particular are from Michael Fogus, one of the authors of The Joy of Clojure — http://blog.fogus.me/2011/04/21/never-feel-safe/ and http://blog.fogus.me/2011/05/17/become-obsolete/ . I feel like we were separated at birth. 🙂
Another way you can think about obsoleting yourself is to see that lying around being complacent does not help your career. Either way, a most difficult part lies ahead. Although people do not like change, if folks don’t change voluntarily, change will be forced on them. I would prefer to change on my own terms.