Jamie Lawrence

Thoughts on Software Development as a Career

There’s a fantastic thread on the JoS discussion board in which the original poster was considering leaving a career in programming for some other field. This spawned lots of comments (including from Joel himself) that touched on everything that it means to be a programmer (or not), working in corporate IT, and so on.

This got me thinking about software development as a career choice for me:

  • Other than wanting to be a fast jet pilot (eyesight too short, legs too long), I've never considered a career in anything other than software.
  • I have no desire to leave the software development industry.
  • I enjoy programming to an extent that I do it in my spare time (but it's not all I do in my spare time).
  • I don't enjoy sitting down for 8 hours a day. I need fresh air and a walk a few times a day.
  • I'm currently employed by a huge software company, at a low level position, doing not very interesting work
  • I don't see much of a career path within those types of organisations which have the potential to support a family
  • I am very excited by the potential to create small businesses based on software. The costs and lead-in times have never been shorter although you still need to actually sell the product.
  • I program because I want the end result to exist. I don't particularly care whether it is me or someone else that develops it, just so long as the product exists.
  • Since I'm motivated by the result, I often get very frustrated when the actual development gets in the way. If the documentation is lacking, or a piece of code isn't working as expected, I get annoyed.
  • Since I care about the result, I've become extremely disillusioned with convoluted architectures. My experience is that they cause more problems than they actually solve and rarely live up to the expectations.
  • If I had the money to hire a designer and programmer to implement my ideas, I would. I don't care about the code that much.
  • I don't know a great deal about low-level details of hardware or software. I generally don't care about algorithmic complexity until I have to care about it.
  • I prefer clean, obvious, well-commented code to "smart" or "clever" code. I've found that extremely smart people (up in the genius IQ range) tend to make terrible software engineers.
  • I am surprised by the lack of outside programming interest by my colleagues. They don't code at home, buy programming books, or learn new technologies on their own initiative.
  • I despise restrictive development practices and micro-management (either by people or systems). Trust and respect me. Don't build in systems and "process" that prevents me from doing my job.
  • I don't like being treated like a hammer ("Hammer, go hit that nail"). If there's no creativity then the enjoyment is lost too.
  • I cannot stand technology that doesn't actually help anyone (particularly expensive, broken technology that is sold to the unsuspecting user)