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.
Happy is one of those weird terms. It is almost used in relation to something else. I'm happy about my career's progress as of this point, but I wouldn't be happy to keep it here forever.
There are also some real truths to my life as well. There is a certain amout of money I need to make a year due to real world committments. These aren't hopes and dreams. What I bring home isn't just for me because I do have a wife and children that depend on me.
I guess everyone has their goals, and mine are to make the best life I can for my wife and kids. As much as it may suck, I can't always do what I think is best, but I'm ok with that, because smiles and hugs are much more important than money.
Good points about happy. I find the term “happiness” almost completely useless as a measure of success. A much more interesting gauge to me is “fulfillment”, or maybe “satisfaction”.
But I suspect that you would agree with that if a skilled developer in a Western nation is genuinely “miserable”, he's doing something wrong. Software development is one of the few bright spots in our economy, and if a programmer can't find a job that brings him or her satisfaction along with a decent income, they should probably consider switching careers.
Well said 🙂