After reading a couple of posts about programmer burnout today I started to think about how I’ve kept interested even after working in such a long career (since 1981). Why do I still care to write code?
Of course I covered some of this in my popular post Yes I Still Want To Be Doing This at 56 almost three years ago. But that was regarding the programming side of being a programmer, this is about about how I can still stand to work as a programmer, which isn't just about writing code. What is it with jobs that take you from being excited to opening your text editor or IDE in the morning to dreading even dragging your butt to the office?
Thinking back to the jobs I've loved and the jobs I hated and those that were livable, what were the differences? What have I done to make it this far?
Just as a start, here are a simple description of all the employers I've had in time order (note I rarely put real names on these unless they are pertinent). Missing are times I worked for myself on various things, some I'll mention later.
My Startup #1
My Startup #2
Help Desk Software Company
Apple (before the return of Steve)
3D Online Gaming
Notice anything odd—like maybe I never worked in the same industry twice? The consulting firms’ projects were likewise in radically different areas.
My two startups were probably the only ones with any continuation, both in Mac software but in the first we acted as our own publisher and in the second we wrote for other people. Working in something substantial that is yours is both a blessing and a curse. It was awesome and fun when things went well but the first ended when we clearly didn't have the capital to compete with Microsoft and the second after 5 years working on Deltagraph the publisher wanted to move in a different direction and the Mac market had dried up.
Now I started both companies and not only was the lead programmer but also President and had to do all the business stuff and in the first I did all the press interviews, ran stockholder’s meetings and worried about benefits. After those two I decided I didn’t want to try to do both things anymore and just worked for other people. At that point (almost 21 years ago or so) I had only worked at one place I didn't run.
In the past two decades I’ve mostly worked for other people, either as a programmer or some kind of architect/programmer and sometimes I've had to do other roles as well but never as a pure manager. So after all this time why can I still stand it?
(1) I don't do overtime, other than the occasional end of project time. Of course I covered this in the popular post Why I Don't Do Unpaid Overtime and Neither Should You. Some employers (often consulting firms) insist on virtually infinite hours and don't care if you burn out. But you don't have to work for them. It's simply not worth destroying your love of programming by making you no longer want to do it.
(2) I try to find a place that is compatible with how I like to work. The problem is that you don't always know when you start if it fits the kind of things you think are important, the process, the way projects are organized, even the expectations that people put on everyone. I would rather work in a place where people don't dictate everything I do, where I can maximize my contribution by using all my abilities. Everyone has strengths and experiences and ideas and it's far more pleasent to find a place that lets you be you. The trick is trying to identify it before you start, or at least finding a reasonable way to move on without leaving people in the lurch. Life is too short to be an ill-fitting shoe—you won't like it and you won't be able to be a big benefit either.
(3) Don't assume you always need to do the same thing over and over in the same industry, or even worse never leave your first job and just stick around. I know people who've worked for the same company for 25 or 30 years because they were afraid to leave their comfort zone. You get so stuck in a rut you don't realize that there are much better places to work. I haven't always left a company because I wanted something new, sometimes they just went out of business! But new places means new opportunities and new challenges and new things to learn. New doesn't automatically mean better, but sticking with the same thing forever for sure won't get better.
(4) Sometimes you have to just stop and do something because you want to. Several times I have done something because I was interested or wanted something completely radical for a while. I researched and built a futures trading system after my second startup ended just because it was interesting. I made no money (not enough to trade in those days) but it was a lot of fun to learn. I played an online FP MMO for 10 years but was always frustrated with the quality (the company never had enough money to do much and fixes were not valuable enough) so since they were local I worked for them for more than 2 years. It was the hardest work I ever did and got paid almost nothing. But it was so challenging and complex working in a huge 3D codebase on two platforms and OpenGL with tons of issues to fix, and I was like a kid in a candy store. Sadly I had to quit as I needed a real income!
(5) Unless you own the company or have some massive amount of options or stock, do not be afraid to leave. You only owe the employer the best work you can do for what they pay (for 40 hours a week!); you are not a slave and you owe nothing in loyalty outside of that commitment to do good work. Find a good place and stay a while but if it's not good or no challenge or boring or the people are irritating or management is dumb or whatever don't be afraid to find something else. I know it isn't always easy (there were lean times in the 00’s) but keep your eyes open and never be afraid to talk with recruiters or buddies or network even if you are currently happy. You never know what cool thing might come along.
(6) You can't always start your own company but it's a great option to let you see what having to worry about business is like; often you get a new perspective on what an employer has to care about. Plus you get to lots of new things (like sales and benefits) you might otherwise miss out on! I spent 9 years running the two companies and I enjoyed it a lot during most of that time (but not the end parts), I got to work with awesome people and write stuff people actually used! I never made much outside of a nice salary but it was an experience I wouldn't trade for anything. You could always work for someone else's startup, often you get to do a lot of different things but keep in mind it might not be worth working yourself to death.
Hopefully something in this list is useful to you, at least these things have helped me manage a very long and not over career. I have to add that writing this blog for nearly a decade has been great to, I get to talk with great people (and occasionally hear from them) who apparently find something worth reading and I certainly get a lot out of putting words down.
Remember your career is all up to you. Manage it like it’s a lifetime long and it might just become that. Never work in a terrible place if you can avoid it and keep your eyes wide open. Then you might actually retire someday and say “I had a blast”.