Programming: Love It or Leave It

I am passionate about professional software engineering. Programming / coding is a small part of software engineering. In all the companies that I have been employed by that produce software I have not seen any professional software engineering practised in the creation of said software. Most of the people that have coded said software remarked that they ‘loved’ coding /programming. All of the released software has been unrelentingly poor in quality.

I do pray that the average surgeon is not the average programmer with respect to the level of professionalism attained.

My hope is that the cheerleading, blindfolded, fanboys like you and Joel, leave the industry. When’s the last time either of you debugged a race condition? You manage programmers and therefore have a vested interest in keeping the illusion alive. Programming is a JOB. It is often HARD. It is very STRESSFUL.

You obviously have no clue.

Here are some relevant True Stories:

True Story #1:
After getting hired at a software company, I went out to get fitted for some new suits. I mentioned to the salesman that I was getting these suits for a software consulting job on Wall Street. Salesman says to me oh yeah, I used to be a mainframe developer on Wall Street. I asked if he was working in clothing retail because he made his fortune and wanted to do what he loved. Oh, no - they started using visual stuff for everything - drag-and-drop. No real coding in assembler like I did - just drag-and-drop. So I gave up and now I’m doing this.

True Story #2:
Real Estate Agent who sold me my current apt mentioned that he used to be a C++ developer but gave up and moved into real estate because he got laid off and didn’t have time to take classes to learn Visual Basic.

Now, to be fair, it’s easy to forget that the Internet didn’t exist 15 years ago in the form we now know it - with its bountiful tutorials and online books. But these two encounters were enough to plant the seeds of doubt in my mind regarding my career choice.

@DMB
Even Microsoft will pay more than that to qualified candidates.
Hang on, even Microsoft? Microsoft rewards its programmers above average for the marketplace, at least in terms of pay.

Echostorm wrote:
If a doctor screws up, at worst, one person dies

…but if Jeff Goldblum screws up, the aliens think to install anti-virus software and the whole earth is destroyed.

Nice article

I suspect that many of us love parts of our job(s) but there are lots of things that are frustrating or irksome. At first I was surprised by Joel’s response(s), but, it’s not like we really know him anyway.

Apparently he is becoming frustrated with the lack of talent he can recruit. My observation and advice to him is that either he has to relent on the co-location thing in order to get good people in the (virtual) door, or he has to sacrifice on the quality of the people he hires. I know which one I would do and I have seen that model work. (hint - it is not the one about lowering standards of people)

Joel is competing with (what has been) some of the bigger and highest paying employers around - the financial industry. Perhaps now he is not, but I suspect most of the people in that world (or who recently belonged to it) are not interested in writing a defect tracking system or a remote control help app or some other webby type application. The people want to work on harder and more interesting problems - and in an industry where millions of dollars flow in matters of minutes or seconds.

Personally, I’d like to work at fog creek, but I have no interest in either moving to NYC or commuting the 90 minutes each way from my little slice of suburbia.

I recently began to wonder why Joel is so interested in people who have learned C, C++, Scheme (all the stuff I cut my teeth on) but his company uses technologies like VB in daily activities. The people he wants to hire (at least from my experience) have an aversion to that sort of stuff. They WANT to work on hard problems and from what I see of Joel’s stuff it is not that technically interesting.

So perhaps we can forgive Joel his seeming cruelty and advice to suck it up.

I sometimes love my job (not my day job tough - just the two side/freelance/startups I am working one) and many times I can’t stand some of the work I do and the people I work with and the ridiculous policies and bosses. Again, I suspect I am not alone in that. How else can yo explain the near universal acceptance, appeal, rejoicing and identification with Dilbert, office space and the office?

Life would be great if we all were as smart, talented and productive as Linus or Edsgar or Anders, but we’re not and that’s ok. At times we aspire to do great things and sometimes we actually do them. Other times we just want to get through the day.

I’m just hoping I don’t waste so much time on stack overflow tomorrow so I can get some work done on my business plan.

Well, I took the extended christmas holiday opportunity to… set up Eclipse and Scala on my new computer. God, I’m a geek! Thanks! :slight_smile:

When’s the last time either of you debugged a race condition?

Sounds quite interesting, actually – would love to see a blog post on the specific work you did!

Programming is a JOB. It is often HARD. It is very STRESSFUL.

All of this is true, but it is also AWESOME. And, seriously, you should blog about your work! There is a community of people like us who are interested and engaged, and it can only help you professionally.

Second post in a row based on something on JoS.

Getting ready to jump that shark, Jeff?

@echostorm: you’re a little off here; most code doesn’t mean much in the bigger picture. some manager or offshore outfit or paradigm shift will make it obsolete.

I need my oil change done right, I need my car brakes done right – these things can save my life.

Joel wrote a bug tracking software and was lucky enough to have some Summer interns write his next successful product.

Jeff is a great blogger not so much anymore because of his knowledge, but because he figured out how to LEVERAGE his blog, linking to himself and Amazon, and most importantly, get people (including me) to read and comment (hmmm, a New Year’s resolution is coming…) and STIR the pot of silly emotion.

@Veteran: Absolutely. There is a problem with doing what you love as a job. If you really love it, of course, you’ll do it for nothing, and when someone takes advantage of that it’s called exploitation.

When I refuse to work extra (or even HARD), it’s not because I don’t love programming (I positively do). It’s because there are other things I care about more. Like my health (primarily mental health, but also physical), my own programming projects, and a life outside of work! So fsck the attitude that says a good programmer is one who will do anything for the benefit of the project, at the expense of everything else.

I would even go so far as to say that if you are one of those programmers who does anything and everything for the sake of shipping a great product, STOP! Think about what you’re doing. It’s not fair to your co-workers to be held to such a (horrific) standard. Just because you’re ok with being exploited doesn’t mean everyone is. Start a project of your own or something. Chill out! (something most good programmers seem to be unable to do) Attempt to uncover (and heal from) the mental wounds that you’ve suffered from for so long, the wounds that allow you to be put in a position where you’re ok with being exploited.

Mecki: you can’t be a truly good programmer until you can read other people’s code. You may think the other people can’t program: sometimes their idioms will just be different from your own, and they are great in their own way. The worst programmers I’ve ever met were very, very proud of their own work and couldn’t stand anyone else’s. They tend to be the ones who can’t learn new tricks. Are you sure you are not one of them?

Personally I don’t think we should teach writing code before we teach reading code. If I had a programming class to teach, my final exam would be Here is a 100,000 line program. There are 14 known bugs. Here are the bug descriptions. Fix them.

@EchoStorm

I agree with you on there for the most part.

In the end, I like programming and think it’s fun – unfortunately now that I HAVE to do it every day (and mainly to build things for other people) it just … isn’t as fun anymore.

In terms of stress and the ‘having to take work home’ aspect … as I’ve got some physical problems, being a 9-5 programmer is sometimes all I can physically stand.

The way things move so fast nowadays, it seems that unless you are spending your Christmas holidays fooling around with servers you aren’t dedicated enough to eventually fall into obsolescence.

@steve I’m off because you say so? You might be writing ho hum business apps but a lot of the guys I know are in a little deeper.

One friend writes an app that keeps track of pharmacy orders for nursing homes. Another works on stock trading software. I write software for a major home security company. My old boss maintains an app used in hospitals to keep track of patient records. Another at CMU’s work is used by NASA. One uncle does mainframe work for an energy company. Another uncle codes things for the DOD that he can’t even talk about. An old classmate handles the online billing for one of the major telcos. I could go on.

While I do have coder friends in game companies and less critical companies the majority do have rather heavy burdens.

I’ll agree that I’d prefer that my mechanic is competent if it came down to one bad oil change or the children’s ward getting the wrong meds I think its a no-brainer.

Personally I don’t think we should teach writing code before we teach reading code. If I had a programming class to teach, my final exam would be Here is a 100,000 line program. There are 14 known bugs. Here are the bug descriptions. Fix them.

Gil on December 29, 2008 12:00 PM

Ha Gil that sounds good but you would weed out MOST of the students in the class! A 10,000 line program with the same number of errors would be better for the little tykes who are in college and haven’t ever worked professionally. As for your comment about Mecki I’ll leave that between you two.

So if a programmer ever hints, even in passing, that they might possibly want to exit the field – they probably should.

That is an extreme over simplification. As Veteran described, there ARE other reasons to leave software development than incompetence although I acknowledge that there is a disgusting amount of incompetence in our industry.

I love to code, design software, develop products, market solutions, and plan business strategies, and I happen to be pretty damn good at them all, but that does not mean I have never reevaluated my career and the pros and cons it has on my life.

Yep I agree love it or leave it. But post-assembly most abstract languages have lowered the barrier to program, which means a whole lot of people can do it without loving it. my 2 cents to add to a great post and even better comments.

It can depend on what your programming, I found when I started doing jobs that were too far away from the bits of programming that interested me (doing server side stuff with j2ee, with a really horrible codebase) for a while, I started to question whether I wanted to give it up - turned out that I just needed to be coding the stuff that interested me to have an interest + put the effort in.

I totally agree, but with one small exception. The thought of leaving the field is sometimes garnered by the inept and the exhausted… sometimes a bad work environment can really twist your perception of what a field is supposed to be.