You know when you’ve reached programmer middle age, a new operating system/IDE drops through your letter box and you don’t run off to install it. 😉
Even Eclipse managed to release a new version without me noticing.
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 the silver bullet is a problem. A little skepticism is a useful productivity aid.