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)