Prologue: How I fell in love
It was 1977, and I was 11 years old at the time. The planet was still in a head-spin over a rash of new electronic inventions such as calculators (TI started manufacturing them in 1966) and the world’s first video game, Pong, released in 1972. Up until then, computers had been the stuff of scientists and government. Before then, hard drives were the size of washing machines, and programming was something done by feeding punch cards into a slot. At the time, software engineering wasn’t a job that most people even knew existed, let along as something to build a career out of. The internet wouldn’t arrive on a public basis until almost 13 years later when Tim Berners-Lee released it in 1990.
How strange it is to have a built my own career from a technology that didn’t exist while my father was still alive
My older brother, who had always been a bit of a visionary, was an early adopter of the latest cool technology being sold at Radio Shack, the TRS-80 Model I. For a mere $600 ($3,500 in 2018 dollars) you got an absolutely whopping 4Kb (yes, Kilobytes) of memory, a 64x16 uppercase-only black and white monitor (green screens were released later after screen “burn in” was recognized as a problem) and no built-in storage device whatsoever. In fact, the only way to load or save data was to connect a tape recorder to the computer and “play” the data into the audio port. A version of BASIC was built into the ROM, or you could code in Assembly Language if you could understand it.
Fortunately for me, my brother hated it. He was looking to sell the PC as fast as he could. In the meantime however, I started to bang around on it. At the time, “Learning to code” meant either taking a Comp-Sci course in college (at 11 years old, that wasn’t an option) or you went to the book store and the library and picked up every book and magazine you could about coding. At a pace that only a child can sustain, I learned everything there was to know about BASIC (which admittedly wasn’t much, and was painfully slow) and then delved into Assembly language, writing RPG games, my own take on Space Invaders and whatever I could just to get the practice in. A few years later, I would upgrade to an Apple II+, learn C++, COBOL, and a few other languages that I can’t even remember the name of now.
When I was old enough to join the working world, I had the thought in my head that doing programming for a living was the worst idea ever. I thought that turning my passion into my job would take all the fun out of coding, and that I would end up hating not only my job, but the one hobby I was passionate about. So instead I worked in retail for several years, and then in the world of service and support (I worked for Compaq and AT&T) for about 10 years. One day, I wrote a small program to help my fellow phone support staff to fill out our required forms more quickly. I really only meant to write it for myself, but when my manager saw it, he loved it, and insisted it be put on every computer in the service department. Call times were dramatically reduced, everyone was happy, and I was offered a new position as a software engineer. It was at that point in time that I realized that doing what I loved for a living did not detract from my enjoyment at all. In fact, I was finally getting paid decent money for I had been doing for free all along.
Now, at age 51, I have worked professionally as a software engineer for roughly 17 years using a Microsoft stack of C#, SQL Server and ASP.NET. I’ve worked for Fortune 500 companies (Deloitte & Touche, Ceridian, Medica, General Mills), and have written software that you may even have used in the healthcare, insurance and banking industries, as well as several startups. I’ve worked many years in consulting as well, which gave me enormous experience opportunities, and the change to both teach and learn from others. I’ve been an avid speaker in user groups, participated in online help forums such as Experts Exchange, and released several articles about programming on CodeProject before blogging was even “a thing”. In the past 5 years or so however I’ve given up most of that and have decided to specialize in UI\UX design. Today my main tools are HTML5, CSS3 and Angular 5.
So why have I chosen to share all this minutia with you? I just want you to understand who I am and where I’ve been, and to ask you to take a good long look at my career, because chances are that your own career may mirror that of my own. Granted, you may have chosen different platforms, languages and specialties than I did. The life of a programmer however is much the same no matter what you do however, and that is why I am writing this article now. Being a software engineer can be a challenging and rewarding career, but it may also leave you hanging one day, and that’s the thing that no one seems to “tell you” early on. And by the time we do learn that painful lesson, it is too late, or we play the “I’ll worry about that when I get there” game. When you “get there” however is not always within control, so while it still is, let’s have a frank discussion about what’s to come, and why you should be preparing for it now. Take it from an old guy… I’ve been in your shoes, and while things change every day, they also stay the same. The old adage of “failure to plan is planning to fail” is true. By understanding what is to come, you can make decisions now that will serve as a parachute down the road when the plane is still flying but you suddenly find that you are no longer on it.
Take it from an old guy… I’ve been in your shoes, and while things change every day, they also stay the same.
Let’s Talk About Non-Recoverable Burnout
“Burnout” is a term you hear tossed around in the programming industry all the time. Usually we use the term after experiencing a unusually challenging point in time at work. Perhaps the company is making a big push to get some new features out in time for the “Big EXPO”, or the government made retroactive changes in policies that require changes to be made practically overnight. Regardless of the reason, we end up working long, hard hours, banging out heads against the wall trying to figure out how to get things done, and in essence, giving up our lives for our jobs, at least for a period of time. Once the “sprint of death” is over, if you are lucky, employers usually know enough to keep the workload light for a little while, or offer the programmer some additional PTO days in order to recoup. Why? Because we are “burned out”.
burn·out (ˈbərnˌout) : noun
Physical or mental collapse caused by overwork or stress
Fatigue, frustration, or apathy resulting from prolonged stress, overwork, or intense activity
Yup, according to dictionary definition of burnout, it does indeed sound as though we are “burned out”. But I would like to challenge that notion, and redefine burnout slightly. In my opinion, it is a mistake to view burnout as a solitary condition. In other words, to view it as something that exists, or doesn’t exist. Instead, I would suggest that we view burnout similar to how we view autism, not as a singular diagnoses, but as a “spectrum” or “scale”. The amount of burnout, and its associated effects, can present much differently between (for example) a 20 years old programmer who just burned through a difficult 2 week sprint, and a 40 year old programmer who has experienced 6–12 difficult sprints ever year for the past 20 years.
RB versus NRB
On one end of the spectrum, we have what I would I would like to reclassify as “Recoverable Burnout” (RB). RB is what you get when you experience short-term burnout. It is “recoverable” because a few days of rest and relaxation is usually all that is needed to get the programmer back to their usual level of mental and physical health, and back into a productive mindset, one that is ready and able to continue doing their jobs as is expected of them. The programmer is once again able to function efficiently.
On the other end of the spectrum, there is what I call, “Non-recoverable Burnout” (NRB). NRB is not usually something that occurs in a short period of time unless there are other psychological and/or emotional factors involved. Rather, NRB is something that “builds up” (or perhaps it would be better to say “wears down”) over time. NRB is the direct result of stress over time, compounded and affected by other stress factors such as age, health, relationships, quality of life and so on.
NRB is the “smoking gun” of suicide by software engineering. Where we were once young, scrappy programmers, able to not only deal with the level of stress and yet remain inventive and fluid in thought, we now find ourselves in “programmer hell”. The burnout begins to present itself with symptoms such as diminishing memory, a slower learning process, a decline in productivity and creativity, and an overwhelming fear of not being able to keep up with technology.
Younger programmers, often fresh out of college, unburdened by marriage, kids or any reason whatsoever to have a regular sleep schedule, can suddenly program rings around you, and will willingly do so for half the salary of a senior engineer. They will learn new frameworks and technologies faster, put them together more easily, and be more in touch with trends and user demands than you are able to be. While you may marvel over the ingenuity of CSS grids and responsive web design, and spend weeks learning about them on Pluralsight, they are instead sitting with the boss discussing how AI and block chains can be implemented and a global company level, and how they’ve already created a working “proof of concept” demo after a weekend of reading about it online in between binge-watching episodes of Star Trek: Discovery.
NRB is the “smoking gun” of suicide by software engineering.
A few years ago, just before moving to CA, I interviewed for a job at a software startup company. Like most startups, the company was comprised of mostly “20 somethings” and “30 somethings”, with one or two token older guys who were likely just investors anyway. They all sat on bean bag chairs, had no desks, brought their dogs to work, played indie music, had a fridge full of beer, a ping-pong table, and liked to hang out together after work playing Nintendo or chasing Pokemon's around town on their phones or drinking and eating pizza. At that age, that would have been my dream job. At 51 however, I no longer fit in. I can’t relate to them and they can’t relate to me. I went in prepared to show them my problem-solving skills and creative-design. They instead asked me computer-science questions and asked me to build a trebuchet that could launch an egg ten feet using only drinking straws, scotch tape and a rubber band.
I didn’t get the job.
My point is, at some point in your life, this WILL be you. Unlike most careers, software changes quickly. Really quickly. Look back at my first few paragraphs and see what’s changed in just the past 40 years alone. Now peer into the future, and please understand that no matter how much technology you currently know and excel at, none of that, none at all, is likely to be the least bit relevant by the time you hit middle age. Instead, you will find yourself in a world that moves faster than you do, and unless you’ve already made your millions by then, like most of us, you’ll need a source of income that will likely no longer be in the software field.
How to prepare for your eventual career death
If you are the next Mark Zuckerberg and have a startup that will net you millions, then go ahead and move on to the next article. Similarly, if you are a financially responsible “quarter-crisis” age programmer who has dutifully put away a significant amount of of their paycheck into a great performing 401K or other investment strategy, you can also move on. If however, you are like most of us, and haven’t really yet considered how you’ll manage to work and live when you hit “mid-lfe crisis” age, then read on.
Get a secondary career plan going now
The sad truth about programming is that it really doesn’t have many “secondary skills” that conveniently fit into another career paradigm. For some reason, I just always assumed that when I got further in my career, that I would gracefully switch into another, complimentary software role. I’d be a project manager, or a QA person, or a business analyst, or a designer… who knows? Honestly, I just never gave it much thought.
What I suggest is that you find a secondary career and start to build it NOW. Choose a career that love, but that also isn’t likely to disappear 40 years from now. For example, you could be a chef, a writer, a photographer, a carpenter and so on. The idea is to get established now by doing what you love part-time, stuff you can do in the evenings and weekends. For example, obviously, I blog. I am also a professional photographer. While neither of careers will likely net me a salary that matches software, they will likely be enough to survive and exist when retirement comes, and words and photos, while mediums may change, haven’t changed very much in the past hundred years, and are unlikely to do so in the next 100, so once learned, you are good to go. You won’t have to learn a new version of English every year to be a successful writer, the same way you might have to with code.
Don’t rely on your spouse or family to exist
The sad truth is, life is unpredictable. We live in an age where divorce is as common as marriage, and even if your love relationship survives the test of time, our bodies don’t always do the same. People get sick, they get injured, they pass away. Your spouse may lose their job, or the country may go to war. Your family fortune may be lost in one single stock market hit. You house may get robbed and all the money stuffed in your mattress, stolen. No one can predict what will happen, and life has a funny way of adhering to Murphy’s law.
While you still can, learn to invest wisely, and diversify your savings. Balance your risks with safe investments, manage short term and long term vehicles to have funds available when needed. Learn to live below your means (good luck with that one) and put the extra cash into those investments instead. Buy a car that will last you a long time, buy a house that has what you need, move to an area where selling your house will be easy, and by all means…
Take care of your health
Software engineers usually fall into one of two camps. Some are health nuts, go to the gym regularly, ride their bikes 100 miles every weekend, go hiking, camping, do yoga and meditate, and eat nothing but an organic, vegan, whole foods diet. Bastards. :)
The rest of us are usually not so healthy. I have high blood pressure, high cholesterol, no flexibility, and am more than a few pounds overweight. I don’t exercise and I battle with Crohn’s and Type II diabetes. I take 15 pills every day and the pharmacists at CVS know me by name. I have a family doctor, a heart doctor, a nerve doctor, a gastro, a therapist, and several other specialists that I need to see every year, some much more often, and I always seem to be dealing with one ailment or another. Most of this is because I’ve worked in a nice, cushy desk job for most of my life, and have never really paid as much attention to my own health as I did in learning the latest technology.
The result? All this medical attention costs money, and our healthcare options kinda suck right now. It also means I move less and do less, and will likely have a shortened life span, which also increases the amount I pay for life insurance. Don’t be me. The next time you want a pizza and mountain dew, walk to go get it.
And finally, get some “zen” in your life
I”ll admit, I always thought of this “zen” stuff as complete and utter bullshit. The past few years have been some critical ones for my family however, and the stress can run quite high. My doctor suggested that I look into “mindfulness” and in doing so, I found it to be something that benefited me WAY more than I thought it would. I found some amazing apps for my phone and tablet, some of them free, and just 5–10 minutes of some quiet thought can take my stress and anxiety levels down significantly, and will often keep them down more and more over time.
My point is, make sure that in all this rat race lifestyle that we spend being technical gurus, you need to make sure to spend some of that valuable time on yourself too. Learn a skill. Get some rest. Go on a date. Make love to your spouse. Play with your kids. Read a fiction book. Go for a walk. Clean your garage. Buy a new shirt. Toss the ball for the dog. Buy some roses so that you can stop and smell them now and then. Because sooner that you think, the time of being a software guru will end, and the age of being “not a software engineer” will begin, and when that happens, it can be scary. The more prepared you are, and the more you able to love and know yourself, the easier that transition will be for you.