The programmer has a fixed amount of time and concentration that he can give every day. He must give a bigger piece of the pie to the bad technologies, simply because they require more. In other words, he ends up spending most of his days working with tools and technologies that he hates. Therefore, the good programmer is made miserable.
I’m torn on this. I think it’s very well written and it’s the sort of musing I enjoy. But I’m not sure I agree with the conclusion.
Actually, the premise does ring a strong bell with me, but as a parent, not as a programmer. It’s easy to spend the most time with the child who screams the loudest, and leave the other kids neglected.
Anyway, I was having a conversation with Bryan Liles, Chris Strom and Matt Scilipoti while I was setting up for a talk the other night. Bryan was talking about taking better paying work over the most satisfying possible work because he has a family and bills to pay. And, knowing I’ve made some similar choices recently (e.g. I don’t do interesting startups right now, because they don’t pay well enough) he said “you know what I’m talking about, right Avdi?”
I thought about it for a second, and this is what popped into my head: no matter what job I take these days, I’m being paid to write Ruby code. Ten years ago when I discovered and fell in love with Ruby I thought the chances of being paid to do it full time were pretty slim.
Back then I worked primarily with C++, a language that, while I still respect it, is notorious for putting arbitrary obstacles in the path of the developer. Back then I worked with OSes that was so buggy a lot of time had to be sunk into writing software workarounds for the bugs, and hardware that would start failing for no reason.
These days I barely think about the hardware. I get paid to work with Linux and Ruby and Rails and RSpec and jQuery and DataMapper and Emacs and the list goes on and on. Regardless of the work, I get to compare notes with awesome people in the community like Bryan and Matt and Chris. It’s really not a question of work I love vs. work I hate; it’s more awesome vs. differently awesome.
Do I have to work with frustrating problems? Yeah, sometimes. And occasionally it’s an obscure HTML problem. But more often it’s the result of immature development practices, like insufficient testing. And you can’t automate quality work. Plus, helping organizations mature to have a more sustainable development process is one of the things I enjoy doing, so as long as I can be part of improving the situation, well, I’m still doing what I love.
The truth is, no matter what the job of the day is, I’m profoundly blessed to be working with technologies I love, in an unbelievably vibrant and supportive community. I am very, very far from miserable. And very, very thankful for that fact.