Programming: Love It or Leave It

People have always asked me why I chose to be a dancer. I did not choose. I was chosen. I was chosen to be a dancer, and with that I live all my life. When a young dancer of mine asks me if she should be a dancer, I always answer, ‘If you have to ask, then the answer is no.’

  • Martha Graham

Hm. I disagree, having gone through that same set of doubts just recently. Notice, the man is talking about leaving the industry, not leaving programming behind.

Here’s my observation:

I’ve spent 10 years working on core areas with a direct correlation to revenue that brought in billions of dollars. Yes, that big. It’s been a constant battle with managers and morons, which I passed through because I loved my job and did focus on the problems and making the software the best possible under the circumstances. In the end, what got me was that the folks who constantly (not making this up) forced decisions that I argued against upfront and that proved incorrect later in the cycle were the profiteers. Meanwhile, 10 years later, I have a personal wealth of 300k, no house, no family and shoddy health.

I am aware that there’s people much worse off - but in a similar age and qualification bracket, I can’t help but notice that people who went into careers other than software development (management, marketing, law, medical, journalism, administration … ) end up progressing much quicker and have more time for their private lives.

The problem with working in a field you love is that it opens you up to being exploited - you’ll work the extra hours at night and on weekends because you refuse to ship low quality, you make up with your time for your managements mistakes and you’ll do it at low pay and you’ll be reluctant to walk away and switch, all because you love what you do.

So, yes, I’d like to switch industries, too. I’ll never stop programming, but I am sick and tired of doing the lions share of the work and seeing others reap the rewards. My considered advice to graduates is to find a field where they are not at the end of the production chain (it’s easy to produce high level design documents in word and you won’t get held to deadlines that you miss early in a project lifecycle) and/or a job where the net value is in controlling a resource someone else needs (doctors, lawyers, adminstration).

Focus on your family and programming in your own copious free time.

While working as a programmer I have met really lots of programmers who just couldn’t do anything programming-related. Honestly, it looked like they were missing some body part (brain part maybe?) that is required to understand basics of programmers job.

Then again, they didn’t like this job. But they stayed there even hating it, for a simple reason - as a poor programmer in a poorly managed company you can produce a lot of crap-quality code and spend the rest of your day reading blogs or visiting online dating sites. That’s, from what I’ve seen, was the largest pit full of bad programmers.

@Mecki: Nice comment!

I agree - there’s always a place for a pragmatic programmer.

Software won’t go away. There’s always a place for smart people who get results. Aren’t devs the ones who made blogging take off? Aren’t devs why platforms get adopted? Aren’t devs how things like Amazon’s stack and ITunes, and whatnock innovate and make things happen, changing the game, and in turn making new business models possible? Geeze, it’s probably a dev who will invent the next resource technology innovation that saves the world.

Ironically, the job market matured faster than the industry. Software has so much opportunity to grow in terms of engineering and a craft. Agile’s been cool. Lean will be great. Hopefully we’ll see more bridges between archs and devs … as well as some more focus on system stories and business stories, in addition to the user stories. And I’d love to see patterns and pattern languages become the way we share, support, and grow the knowledge in our fields.

I think there’s a realistic concern about a global resource pool and market maturity. Nothing’s static. It’s a time to simply renovate, regenerate, and reinvigorate programmer 2.0 (or ship an alpha of programmer 3.0 – I am curious and I’d like a sneak peek).

I’m 34. I started coding when i was 12. I’m still in love with programming. Every day i learn something new, there are no nights, no sundays. I LOVE my passion (work is not the right word): programming is every day a new experience.
So after 20 years of coding I:

  1. started my own company (software house of course)
  2. founded a .Net community with some coding lovers…
  3. started an open source framework
  4. started a blog about programming
    Just for fun… It’s a privilege…

I could not agree with you more. What we need in the software industry and IT in general are people that GET IT. They get that they have to learn there trade. I graduated in Comp Sci at an engineering college with other engineering grads. Most had to obtain a professional license to offer their professional services directly to the public (http://en.wikipedia.org/wiki/Professional_Engineer#North_America). Steve McConnell has an interesting view from his side covered in a book he wrote where he wrote a chapter called Novum Organum that outline how the software professional community could start going down a path:

Software development is at a major decision point. We can stay safe in our code-and-fix harbor, not venturing past the Pillars of Hercules and not achieving the significant gains that have already been discovered by software engineering explorers. Or we can boldly venture toward a new profession of software engineering and begin colonizing a new world of higher productivity, lower costs, shorter schedules, and better quality. – Steve McConnell, Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers

I agree with Mr. McConnell that the software industry is not at a point where states or the federal government can certify people in the profession yet but we need to do something beyond vendor certifications. Do I think most people in my industry are horrible programmers? No but I do think that there is a portion in my industry that do not have the skills needed to move forward and that it is these people that either need to re-train or leave the industry.

That’s… Just what the effin’ hell does America have to do with this?

I’d agree that it never hurts to re-evaluate career choices if you’re feeling unsuited for your job, and to explore new avenues. I’ve done this myself - tried software engineering but realised it wasn’t where my strengths lay so I’m now doing something else. I like to stay in touch with that world though - still read this blog after all!

All that being said, there’s a strong smell of arrogance elitism in this discussion - particularly in that linked thread on the JoS board. There seems to be very little toleration or respect for day job coders - those who are competent and professional but aren’t rock stars or especially passionate about programming. I would agree that technical incompetents probably should seek alternative careers!

Nobody would require a car mechanic, a chef or even a lawyer or doctor to be a rock star in their profession before accepting they could do a good job. Of course if they are such, they can command higher salaries and better working conditions, but it’s surely an individual choice whether they want to do this?

If I want a car repaired, I’d be happy to go to any competent mechanic, whereas if I wanted a classic car lovingly restored I would find someone who is more passionate about cars - and I would pay accordingly. I wouldn’t have any less respect for the mechanic as clearly he or she has other priorities in life! I can’t see why this sort of attitude can’t be applied more in programming. There’s plenty of room for a range of talent and dedication - although yes, there does need to be a minimum standard of competence. It would be nice to see a little more respect, consideration and maturity applied to this debate.

One last note regarding arrogance - I hate to say it Jeff but your last Tweet sums it up perfectly. Not necessarily through any fault of their own, many people couldn’t possibly start their own company. They may also have decided they don’t have the right combination of business know-how, technical skill and dedication to make it a success. Suggesting that founding a company is a rational widely applicable way to escape a poor job is, IMO, about as arrogant as it gets.

@Tom: Microsoft rewards its programmers above average for the marketplace, at least in terms of pay.

Yeah, right. They also hire talent that’s WAY above average. Anyone who passed their 5 hour interview can get at least 15-20% more elsewhere. Took me 8 years to figure this out. :slight_smile:

Just because every good programmer loves his job doesn’t mean that everyone who doesn’t love his job is a bad programmer. And I can testify that there are bad programmers who love their job.

Nope, it’s not that simple.

Programming can be a great deal of fun, an exciting roll in the hay. But comparing programming to other careers still makes it a pretty bad deal in the cold light of day. It’s pretty low status, fairly poorly compensated, subject to many upheavals, and rapidly erodes your intellectual capital. So if you’re a smart guy, you probably could make a better career bet.

Perhaps it’s basically like being a musician and best left to the infatuated.

You can tell a passionate programmer by what they do in their free time.

I say passionate, not good, because to me passion is all it takes. Don’t get offended but it’s not rocket surgery, folks. Yes, programming comes easier to some than others. Yes, we’d all love to think it’s a hard science. However, you give me someone that’s excited about it, and I’ll show you a good programmer.

So, I disagree with @Manni. Good programmers aren’t miserable at their jobs. Talented programmers? Yes. However, I would rather hire a passionate programmer that has to work hard at it than a talented programmer who doesn’t care enough to pick up from his job and find another if he’s miserable.

So I agree, good programmers would never want to leave this field. Because you are doing what you love and there can be no bigger happiness in life (I hear having kids is fun too).

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

In general, I agree with most of what you’re saying, but polarized statements like this can do damage to people with limited exposure to our (or any) field. Without decent experience in at least a couple of work environments, the odds are small that anyone has a solid idea of what the field as a whole really is, and not an idea constructed from their own limited and potentially bad experiences. I distinctly remember, as a student, hearing a competent friend of mine express her doubts about staying on a software engineering track after one of her professors had given a similar love it or leave it style talk at the end of his course.

As it turns out, she just didn’t like his course a whole lot. But the strong implication that this will be your life if you stay in this field stuck for a while, even though it wasn’t especially accurate. Now she’s fine, and I’m pretty sure the industry will be better off with her around. My point, then, is that doubts are not always a tell-tale sign of a permanent inner lack of passion. Sometimes people are just people.

Jeff: What you are saying is the exact opposite to what Joel is saying. Joel says (paraphrased) get back to work and you love it or leave it. And both seems to extremly negative comments for someone who has already decided to quit! There is no job that everyone will love (except taking care of unicorns). Joel is basically saying: I love to program therefore everybody will! And look you earn a lot! And you need no education! Maybe the one with the question would be better suited as a psycaitrist and is willing to spend some time and effort on that instead of being another person who hates his job. Jeff you are to kind towards Joel. :wink:

Lehmann: If you haven’t seen a million of programs that you would like to improve or replace or new tools you would like to create and instead focus on somebody elses problems of no value then maybe you are the one that is in the wrong business (I’m sorry, It’s likely you are a good programmer, but please see these things from others perspective: project euler seems like a waste of my time).

Luke L: I fully agree! Some of the worst students of my class just wanted to create games and thought that it could be done in a flash…(it can be done in Flash though…), when they found out that it takes serious effort they quit. We also had alot of: My parents thinks I’m good at computers so programming should be quite easy for me. The sad part is that I’m not kidding.

Vordreller: #8220;Computer science is no more about computers than astronomy is about telescopes.#8221; Edsger Dijkstra. Read some of Donald Knuths books and then tell me programming is as easy as the OO concept. Then again, maybe I’m just trying to make computer scientists out of programmers.

Mecki: I’m better than everybody else and need to let someone know it? Whats the point? Start freelancing.

Joe Brinkman: Some may have downloaded the books on pdf’s and have the books at home. One treats programming as a profession which requires an ongoing learning process. The other treats programming as a job. Something to provide a paycheck. And that is not good for them or the profession. Excellent. I will save this quote.

Our pay is great. There’s no other career except Wall Street that regularly pays kids $75,000 right out of school, and where so many people make six figures salaries for long careers with just a bachelors degree.

I’d love to know who the hell in the Netherlands would pay so much money. These salaries are not standard anymore, at least not here. I’d be happy to make $75,000 after 20 years of working.

Dude, have you counted how many self-referencing links you have? Jesus Christ. It makes your posts impossible to read.

There’s a lot of careers out there where you program, but you’re not a ‘programmer.’ Where I’ve used it, or seen it used:

  • Research assistant
  • Researcher
  • Admin assistant
  • Business / System Analyst
  • Technical lead

I don’t program exclusively, but sometimes, it’s just faster to break out the Python than wait for a dev to be free. I also use it to proto-type for clients (again, faster than waiting for a dev, and cheaper, too).

Not everyone wants to sit in front of a bunch of code all day. Not everyone wants to worry if their current skillset can make it in the current market. However, using code in any profession can take you a long way.

http://elephantangelchild.blogspot.com/2008/07/why-you-should-learn-to-write-code.html

Anything that gets rid of the fly-by-nights from our industry can only be a good thing - we become better respected and the money no longer gets given to morons (well other than management). The only bad thing as a developer is we don’t have anybody to blame if things go wrong!

They had a great analogy on the Java Posse a few weeks ago. Your programming team is much like a professional sports team.

Expanding on that, when you imagine how a pro basketball team would operate if their scouting practices were the same as your hiring practices; that’s how your team performs.

If every company had its own basketball team, I imagine that they would all suck pretty bad compared to a pro team.

Only one in a hundred(thousand? million?) people who WANT to play basketball, could actually qualify for a pro team. They all live and breathe the game. Few would ever consider voluntarily changing careers.

Any two pros could seriously outperform entire teams made up of people who play at the level most programmers program.

Yes, there is THAT much of a difference–at least.