Among all the non-programmers I've talked to about work, I've never found one who doesn't have to deal with some sort of constant, repetitive negative feedback. Teachers have to deal with some kids that simply won't stop acting out, and who continually perform poorly on assignments (not to mention parents happy to tell them everything that the teacher is doing wrong). The salespeople have countless deals they fail to close. The manager has to make painful decisions about other peoples' livelihoods, and absorb the criticisms coming down from higher up the chain. The artist has to deal with everyone being a critic, and doesn't have the luxury of dealing with things that either work or don't work, it's all subjective. The doctor can't cure everyone. The lawyer can't get justice for everybody. The data-entry clerk peon has to ignore that they're completely replaceable and that they'll probably be replaced by a computer sooner or later. Anyone building anything (not just software) has to deal with the reality that 95% of the time, it's not done yet, and you still have more work to do and things to fix.
That's not to say that some people aren't going to be happier in certain fields than others, or that some subsets of the field fit some mindsets better than others, but software is pretty good work. The article acknowledges this right up front, and then ignores that to dwell on the negatives. It blew my mind a little to see such a negative perspective. If I fix a simple bug in my code, it doesn't bother me much, because I know I sometimes make mistakes. If I find and fix a really interesting subtle thing, then it means I learned something new, and that the product is now in better shape than it was yesterday. If there's a usability issue, it's an opportunity to figure out a new way to do it. And all the while I have the constant positive feedback of knowing that this thing that I built is doing something, I can directly watch it do that thing, and that it's being used by people to get stuff done.
Unless you build everything exactly right the first time, and never have to deal with external changes that mean the software needs to change, you're never going to be free of negative feedback. So you should start looking at why you're letting the negative parts drive your attitude.
EDIT: My own personal idiosyncrasy is that I get very suspicious, maybe even paranoid, about a complex task if everything seems to work right the first time and I don't have a few cycles of negative feedback. I know it's complex, and so I don't expect perfection out of the gate, so a few runs through the "fix one thing, find another issue" washer are oddly reassuring to me. Even though rationally I know that fixing things I knew to test for doesn't mean it's any less likely that there are errors in the things I haven't thought to test.
I agree. I thought about going into academia for a while, and started on a Ph.D programme, but then realised that a large chunk of my life would be spent explaining the basics of the subject over and over again to people who may not necessarily be as passionate or excited about it as they could be.
I sort of realised eventually that given how expensive going to university is now (9x more expensive than when I went), I'm not necessarily going to be teaching the brightest and best. Instead, I'll be teaching the brightest and the best who also have the willingness to get massively in debt and/or who have rich parents willing to pay for it all. Suddenly, the important moral purpose disappears, and you are left with: well, I could get paid the same amount in about five years time as I get paid now to write code. Why do I want to do this?
And I kind of like software as an industry. It's not perfect: there's douchebags and posers and so on. But it's reasonably recession-proof, it's not on a doomed-path-to-hell like lots of industries, it often lets me work on quite interesting problems (often having some satisfaction doing it), most of the people are pretty nice, the bureaucracy is minimal (for me anyway) and the pay is decent. The main downsides: RSI and those nagging calls from my parents about how Google Fireface isn't talking to their printer. The latter is a trivial problem and the former is mostly fixable by posture adjustment and exercise.
Maybe it's just me but I've always seen these things as positive feedback loops. I write a failing test so that I have a guide as to what to do next. I fix a bug so that my app does a better job for my user. I'm not sure where his negative attitude comes from, maybe he likes to believe he can write perfect software and takes it at as a personal failure when he gets a bug report? Personally I find coding therapeutic, at the end of every day I know that the product I'm working is a little bit better than it was yesterday.
I agree with you. I feel like this article is pretty melodramatic. I've been a (professional) programmer for the better part of 10 years and I've had my share of ups and downs, but this job is definitely a very, very good one. The sheer amount of freedom we get from a) the good pay and b) the fact that programmers are so in-demand right now that companies bend over backward for us really can't be matched in many other jobs.
The lamenting in this article is from somebody with very little perspective on what most people have to do just to survive.
I think these are two different things. It can still be a nice job to have, even if the process is broken. Writing reliable code is hard, probably harder than it should be. Just look at the amount of software with security holes[0] and/or performance issues.
I have to agree with you. In so many careers your performance is subjective. The cool thing about programming, to me, is that when there's something wrong, it's objectively wrong, meaning it can be fixed. Sure you might be able to 'fix' things more quickly or less quickly than someone else, or implement a solution better or worse. But the product you create pretty much either works or doesn't work.
Perhaps it's a matter of expectations. No one expects a salesman/woman to close 100% deals or even 50%,a manager's job is pretty well known, and the stress associated with it is taken care of from the start. Lawyers get paid whether they get justice or not most of the time, data-entry clerks have jobs that end at the end of the day, and they won't be thinking about a product they coded that might have some critical flow and come back to bite them months after the release.
If I remember well teachers and medical staff have depression and other work related mental issues rates on par with programmers, so you would be right about the negativity they also face everyday.
Of course it's not the end of the world, it's just something that is not brought on the table so often I think.
I think part of the reason the article is negative is that in much of the industry it's not you building anything, but it's you fixing some garbage that was hacked on by an army of a thousand morons before you into something that isn't really fixable into what management wants.
All the while dealing with people around you who do not understand what you do, whatsoever. This last part is crucial and it is everywhere. I have yet to meet someone who is not an engineer or ex-engineer who actually understands what I do and what I have to deal with not only with my own code (which is far from perfect) let alone code written by some overseas contractor who just got his copy of Java for Dummies so he can learn PHP.
That's not to say that some people aren't going to be happier in certain fields than others, or that some subsets of the field fit some mindsets better than others, but software is pretty good work. The article acknowledges this right up front, and then ignores that to dwell on the negatives. It blew my mind a little to see such a negative perspective. If I fix a simple bug in my code, it doesn't bother me much, because I know I sometimes make mistakes. If I find and fix a really interesting subtle thing, then it means I learned something new, and that the product is now in better shape than it was yesterday. If there's a usability issue, it's an opportunity to figure out a new way to do it. And all the while I have the constant positive feedback of knowing that this thing that I built is doing something, I can directly watch it do that thing, and that it's being used by people to get stuff done.
Unless you build everything exactly right the first time, and never have to deal with external changes that mean the software needs to change, you're never going to be free of negative feedback. So you should start looking at why you're letting the negative parts drive your attitude.
EDIT: My own personal idiosyncrasy is that I get very suspicious, maybe even paranoid, about a complex task if everything seems to work right the first time and I don't have a few cycles of negative feedback. I know it's complex, and so I don't expect perfection out of the gate, so a few runs through the "fix one thing, find another issue" washer are oddly reassuring to me. Even though rationally I know that fixing things I knew to test for doesn't mean it's any less likely that there are errors in the things I haven't thought to test.