Am I doomed to a gradual decline from programmer middle age through to programmer senility?

I don’t think so…at least not without a fight. 🙂

I remember in my first job as a programmer, in my first bloom of enthusiasm, I’d trot up to the team leader and ask why we weren’t upgrading to the newly released compiler only to be greeted by a look of sheer puzzlement as if I was suggesting something so completely insane that I should be locked up, straight jacket and all. Of course I now know why, you don’t change anything just before you are going to release a new version of your software. The last thing you want to be doing is chasing down compiler porting problems the day before you ship your code.

Still, at the time I thought he was a complete dinosaur, not the sensible engineer he actually is.

There are plenty of exciting things happening in software, it’s just that you have to temper your enthusiasm. You can’t know or use everything. Jumping on every new release of software is a great way to never get anything done.

Similarly, jumping on every new agile method, design pattern or practice is a brilliant way to kill productivity. Too much design has killed as many projects as no design at all.

Slowly the software industry is figuring out how to “engineer” software. Agile methods may not suite every situation, but they are a valid contribution to making software production better for many projects.

Programmer tools are getting a lot better, and about time. Visual Studio, Eclipse, NetBeans and IntelliJ are marvellous tools when compared to tools available even ten years ago. Code coverage, performance measurement, unit testing, static analysis and even code formatting tools are all readily available.

A thriving market in powerful scripting languages is also on the boil. You can now pick from at least three languages (Perl, Python & Ruby) and know that you’re using a well supported, portable language with great library support.

New programming paradigms and languages are also competing for mindshare. The easy performance gains are at an end and we as programmers have to figure out how to benefit from the new multi-core world.

And of course there are the classics like LISP and Smalltalk with lots still to contribute. Smalltalk is like an unrequited love affair from school. You love it dearly but you know that the relationship is never going to be consummated. Nobody is going to pay you to write Smalltalk code.

So, maybe its not just that I’m entering programmer middle age, its that programming as a discipline is entering middle age. Gone is the youthful optimism that software creation is soon going to be so easy anybody can do it, to a realisation that it is hard, and likely to stay hard for some time, and requires tools, practices and discipline just like every other engineering discipline.

The belief that the next tool will be thesilver bullet is a problem. A little skepticism is a useful productivity aid.

Author: Jack Hughes

An experienced software engineer with 20+ years experience writing products for Microsoft Windows based operating systems as well as 12+ years experience hosting websites on Linux and Windows including e-commerce and CMS systems.
View all posts by Jack Hughes

I am definitely a middle ager in both real age and programming age. I miss getting all excited about the latest tools. I kind of go through waves. I get excited about learning new things but not necessary using new tools to do the same thing.

@Sara – New things are great, but you need a little voice in the back of your head that makes sure you don’t get ahead of yourself. Wanton deployment of new technology kills far more productivity than sticking with tried and tested languages and tools.