01 May 2014
This “Why I Quit Programming” page is consistently one of my top ten web hits, partly because of its strong Google ranking.
This “Programming Sucks” rant has become one of my three favorite rants about software ever written.
The other two are Benji Smith’s “Why I Hate Frameworks” rant and Andrew Clover’s (bobince’s) extra special response about parsing HTML with regex.
Once upon a time, a former coworker had left software engineering entirely and was having money problems. I asked why not go back into programming? It had paid former coworker well.
Former coworker replied, “It’s not what I do after hours.” No interest in writing software outside the scope of a job.
I didn’t understand the idea. At all.
One of my life sayings is: “You don’t get to choose what you do (or don’t) care about. What you do get to choose is what you do about it.”
I vowed that if I ever felt the same way my former coworker felt about software, I’d give up writing it for a living.
I’ve been there for some time. For a while I thought maybe it was burnout, but it’s not. It’s a fundamental change. ## Programming Sucks: The Web Edition
One day, I walked into the break room and heard a coworker say, “The Web is an error condition,” referring to the deplorable state of code out on the Web. I think that was the end of the end for me, because it just depressed me. It depressed me not because it was untrue, but because it was so perfectly true.
Honestly, I miss the days when Netscape Navigator would just halt rendering in the middle of your page, saying, “No, I will not parse any more of your shit until you fix it.”
Then IE came out for free. Suddenly, the game of web browsers changed from paid apps to supported by advertising and search revenues. The only way to get users to use your browser (and thus get more money to develop with) was to parse all the shit you used to reject.
The web became a co-evolution of crap and trying to render crap. (It’s gotten more complicated since then, but because there’s been a habit of rendering crap, no one suddenly wants to stop.)
Don’t believe me?
Copy the URL to some web site who should be able to afford first-class web developers into http://validator.w3.org.
CNN.com’s home page just resulted in this crap:
Errors found while checking this document as HTML5!
Result: 349 Errors, 104 warning(s)
NYTimes.com’s home page just resulted in this crap:
Errors found while checking this document as HTML5!
Result: 605 Errors, 32 warning(s)
You don’t get that bad by accident. You get that bad by deeply not giving a fuck.
But, hey, it’s HTML5, right? No, they just dressed up the pig that was HTML 4.01 Transitional and still have crap that hasn’t been valid on any newer spec than the one published in 1999. Last Millenium. (No, I’m not counting XHTML, why do you ask? Okay, even if you grant that XTHML is a good thing, the reasons the above two pages don’t meet the HTML5 spec are also why they’d fail the XHTML spec.)
I’ve had code that flew into space that didn’t have 605 errors in its entire fucking lifecycle. Yeah, okay, it was a digital tape driver I had to squeeze onto a smaller PROM, but still. Can’t just send that sucker into space with that many errors.
I’ve been paid to program in twenty-six different languages. I’ve written code to reduce power plant emissions. Space and power plants I did before I was twenty, and continued the latter for several more years. I’ve written code to help manage whole blood inventory for anti-D injections (so Rh- mothers can safely have Rh+ babies).
I’ve done a lot of other things, too, from writing database apps for mailing list companies to writing commercial Mac software for calendaring to working on the Safari team at Apple to writing an App to help the Omidyar Foundation invest its money. I’ve worked on a Jabber client for Be, I’ve worked on the TiVo service, I’ve worked on software for companies big and small.
I’ve worked hard and had my vested shares undergo a million-to-one reverse split. Rounded up. At that point, it’s not worth sending me the damn paper that’s required. As Rachel Chalmers says in her excellent piece for Model View Culture, “No face-saving exits for them.”
Quite a few years ago, I realized that I knew how to approach essentially any programming problem I cared about. It may not be the best approach or the one some other person would pick, but I could write a working implementation of anything I chose to.
The catch is, I kept choosing to do other things.
It’s not to say that I have no interest in software. Of course I do. I’m an introvert and a numbers geek, and it’s served me very well as a career for thirty-eight years.
What I mean is that I can’t do it for someone else the way I used to.
Instead, I need to pick projects that I care about and not spend long stretches of time on things I don’t.
I have some ideas of what I want to do software-wise, but I’m not ready to announce them yet. It’s got to fit in between my other plans.
Part of it will mean needing to do some real design work using stuff like Illustrator. In amongst all this software writing I’ve done, I’ve been putting off learning Illustrator since I opened the Illustrator ’88 box in, uh, 1988.