I’ve been spouting my fondness of my job around here and elsewhere for quite some time. It’s no secret that I like my job. I like what I do and I enjoy doing it every day. Obviously some days are better than others, but overall I can’t complain too loudy.
A recent discussion about the Good Job Trap got Big G thinking about what his ideal job might be. Although he couldn’t nail it down to a single job, he has some requirements. And since I believe I have an ideal job, my job needs to meet those criteria:
1. I guess the biggest thing for me is I want to be able to get excited about whatever I’m doing.
While this is his #1 requirement, I will skip this for now because the rest of his criteria really tell the story about why programming is exciting…
2. I want the opportunity to be creative.
Having been trained formally as an artist and being a rather artistic fellow for much of my life, I know what that kind of creative is. Art is fun but and you can make anything you want and not have to worry too much about the outcome. This is where programming beats art; you do have to worry about the outcome. And because you have a limited set of tools, you have to be creative in how to solve your problems. You also have to be creative in how you build things for the people that will eventually be using your program.
It doesn’t matter if you can’t make things pretty yourself (see #4) because that is a designer’s job. Programmers need to solve problems technically so the final product is stable, reliable, and supportable.
3. I enjoy solving problems. There is something quite satisfying about knowing that you just came up with a great solution that isn’t simply a hack.
Programming is all about solving problems. Through creativity you solve problems. A customer comes to you and says, I want a program that tracks and organizes our inventory of widgets. How do you do that? They don’t know + you don’t know = Problem that only you can solve.
For me, there are two problems to every situation: design and function. First I have to figure out how the program will look and work for the people using the program. After I do that, I have to figure out how to make all it all work as designed. Granted, the design member of your team should do this, but I have no such resource.
Now, you will have your hacks here and there, they are unavoidable. It doesn’t matter how well you plan, execute, and test, there will be someone somewhere that uses your program in a way you could never anticipate and naturally, that way will cause a problem or break your program. Apply hack here to get it fixed now then go back with a branch and add in a stable solution that makes sense.
4. I want to be part of a team. It doesn’t have to be a big team, but what good is it to really enjoy what you’re doing if you can’t really share that?
In theory, a software team should be an A-Team with people that are specialized in the aspects required to make a product. At my job I don’t have such a luxury directly, but I am part of a team of developers. We’re not necessarily working on the same thing at the same time, but we all collaborate to discuss problems and solutions.
As far as sharing the joy is concerned, even when you are a team of one (like me), that doesn’t mean you can’t share your happy life at work with others. Just ask my wife! She hears about my great job all the time (and hates it).
5. Quality. Whatever I do, I want other people to be impressed with the results.
OK, this requirement is deceiving. First off, since programming involves technology and computers, 90% of your customers will be impressed with the results just because they think computerizing is some sort of mystic art. Their inability to make a toolbar reappear in Word means when you give them something they asked for that works, they will almost instantly be impressed.
That’s just one edge of the sword. The other edge is to not let this acceptability by the customers to make you lazy. People will accept crappy technology because they know that crappy technology is better than no technology. This doesn’t give you a licsence to half-ass your work.
Now, take all these things and they add up to criteria #1 - excitement. Everyday I am able to go into my office and know there will be a new problem that I have to solve using limited resources and a lot of creativity. That’s exciting. Then once you reach your goal it turns out like you expected and like your customer expected, there’s more excitement. Yay you!
However, despite the fact that programming meets all the needs of Big G’s ideal job, the reason the match up for me is because I want to do it. I am passionate about making good products that help people. But any and every job can be made to fit those five things, but if you don’t honestly want to do the job, it doesn’t matter how many boxes you check off in the list.








It’s funny you say this, as I keep coming back to programming as an ideal job. Too bad I’m a total hack when it comes to programming.
I keep thinking that what I want to do is come up with some great web app. or something.
BTW…
It might get easier though, now that I’m off dialup up here. We couldn’t take it any more. I picked up a Verizon PCMCIA card for their 3G high speed service. It’s like $80/month (which is why it took me so long to bite) but we couldn’t get by on dialup any longer.
The cheapest router that supports these cards is $300, so I’m working on rolling my own. Good thing I still had an old K6-III 450 lying around to throw Linux on and convert it into a router. It’ll be like the old days, before Linksys took over my turf!
G+
Well, maybe you’re a hack at programming because you don’t do it regularly. You know, if you keep trying and learning, you’ll get better. I was a hack too…and still am when needed.
I suppose having a good (worthwhile) project to work on would probably help.
G+
> …what I want to do is come up with some great web app
The first step is coming up with that good idea. What great web app idea do you have?
Start with what YOU want it to do, don’t think about it in terms of “what will other people want it to do”. Then just find some tutorials online and do a lot of copy-paste code examples. That’s how you will learn.
Right now would be a great time to learn web programming too because there is a lot of new(ish) technology that is being used for development - like Ajax. I’m having to learn Ajax and retrofit it to older stuff. You can learn it from the get go and be ahead.
Don’t shoot yourself down early or you’ll never end up doing what you want.
Patience, young Jedi. Patience.
Programming is anything but the ideal job. A few reason are listed below:
The failure too sucess rate is way to high.
It can be frustrating beyond immagination.
Most of your work is in code.
Missing a “,” or “:” or “;” can make all the difference in the world.
Documentation is the key, and documentation sucks.
Personally any job that you can step back at the end of the day and “I did that” and then go home and not worry about work is a good one. I would think programming would meet the first part but if your coming down to a deadline then your going to start worrying about it at home. But, those are just my thoughts.
Documentation does suck. That’s why I don’t do any.
But programming isn’t an ideal job to Thee because he doesn’t want to do it - which is why he doesn’t. That’s just it. A job you want to do is ideal. I’m sure Thee can make his job fit the Big G criteria…and then I can debunk those reasons ;)
I agree with Lorkin entirely. Satisfaction that you’re doing something is very important - but that sort of part of the ‘enjoyment’ criteria.
Personally, I never bring my work home. Sometimes I get called to fix “oh shit” problems on the weekends, but I’m not working on projects at home at any time. Keeping work at work is by far one of the most important rules. If you’re bringing work home, then you aren’t doing your job at work, or you aren’t being provided the resources you need to do it at work - which is cause enough to consider leaving - thus, of course, making it less than ideal.