Becoming a programmer can be a daunting task. After reading Your First Year in Code, you might wonder what awaits you long term. My book, What is Programming covers more of the skills you’ll need, but here I want to share the personal challenges.
I’ve been programming over 30 years now. That’s a long time to be in this industry. I know many people that didn’t make it this far or have grown overly distraught. As the years ticked by, there are some major problems I faced and seen others endure.
Technology changes faster than any individual can follow. The nature of programming is that tools learned this year will not likely be relevant five or ten years from now. If you haven’t noticed yet, learning is the most needed skill for a programmer. Every year, every month, every day, brings with it something new.
I’ve jumped between a lot of jobs: an employee at startups, a contractor at larger companies, and in my own side projects. My continuous exposure to new things has helped me avoid stagnation. Without this job hopping, it can be difficult to learn new things. Yet you have to, otherwise you’ll find yourself increasingly distant from modern programming. Job listings will become increasingly foreign and best practices you see online evermore confusing.
Fortunately, the approaches to programming change a lot slower. These are the major themes, for example, how to manage a project and the best practices for coding. Unlike specific tools, this knowledge transfers to new projects. However, it does change, and it’s important to keep up. Many people sit on one project for ten years or longer. This extended period may cause losing track entirely of what programming has become.
There’s no need to endlessly learn all the shiny new things, but you need to follow the overall trends. By taking the time to appreciate the concepts behind the tools, you’ll find your knowledge transfers easily to new tools. By showing even a passing interest in the industry as a whole, you should be able to keep abreast of major changes.
The cycle of learning has a toll on us. It requires a continual input of energy. We don’t get this option of riding on our current knowledge for long. I can’t say how often I would have appreciated a job where I could apply my current knowledge. In freelance contracts, I sometimes bid on projects, not because they are interesting, but solely because I won’t have to learn anything new. It saves energy.
On top of the learning is the stress of switching jobs. Changing companies is a massive change in your daily life. Even transferring within a company can be a significant change. The adjustment period adds stress. It’s a great way to avoid stagnation, but comes with a personal cost.
Our lives change as we age. The innate drive of a twenty-year-old fades as you enter your 30s and 40s. You’ll have found other ways to spend your time. Your late night hobby may no longer be fiddling with code. A life won’t be only programming. This means less time for all the learning you need to do.
On the other hand, it’s often these non-programming activities that bring energy back. I don’t think I could have maintained my energy so long without them. I’ve done writing, music, massage and more. There’s a balance to be reached, and I tended to overwork, which is a bottomless energy sink.
Physical well-being plays a significant role, and it’s not uncommon to succumb to a poor lifestyle. From my experience, the stereotypes of unfit programmers are unfortunately common. I’m not judging, but a lack of physical health brings you down. Learning is exhausting and requires a fit mind, which requires a fit body. And as you lose energy, you lose time. You lose the time to exercise and eat right, which further diminishes your energy, throwing you into a downward spiral.
I dedicate a lot of my time to health and wellness, though still perhaps not enough me time. It’s easy to get sucked back into projects. And despite my goal of having a project where I learn nothing to conserve energy, it ends up being those which drain even more energy. Once the motivation is gone, my energy dwindles.
Honestly, I’m still trying to figure this one out. I’ve had a good run of 30 years where I don’t think my motivation faded, but the energy is definitely lower. I’m facing a bit of a problem now. But fortunately, I’m writing about the first 30 years and can ignore the ones that come after.
And what happens when you get tired? When my motivation drops and I don’t have an interesting project, well, I become right proper sick and tired of it all. Cycnicism is not a new problem, but it’s definitely a big one.
The cycle of learning and a lack of energy leads to frustration. The inevitable feeling that you’ve done this before. Why do we keep learning new tools when the old ones work? Why don’t these new tools do what the old ones did? After all these years, why hasn’t anything gotten any better?
It’s hard to watch things come and go, to watch your best work fade into obscurity and then be requested to do it all again. Keep programming long enough, and the novelty wears off. There fails to be any more interesting projects, any fields where you haven’t worked already, or anything you’re remotely interested in doing.
This attitude often may result from stagnation or waning energy. The more one closes themselves off to a changing career, the more they come to despise that field. Keeping abreast of new things, and contributing to the field, can help stave off negativity.
But I think there’s more to it. Even with my diverse career, or perhaps due to it, I become overly cynical at times. I need to remind myself that though similar, the problems we’re solving now aren’t the same as those from 20 years ago. I even give presentations to this effect, about how much has truly changed in software.
Trolls and idiots don’t help here either — see, that’s my sour side talking. I get angry with people who write bad code online, advice about bad code, or staunchly defend dumb approaches. Good thing I didn’t have twitter when I started, otherwise I would have been pissing off some old programmer as well.
Recognizing a negative trend in your attitude is important. It’s the first step to understand there’s a problem and find ways to fix it. Find the programming that makes you happy. Ignore the battles that you can’t win. Remember the joy you had when you started out. Don’t let cynicism take away.
Given that we might be antiquated, drained of all energy, and hate the industry, it’s not surprising that many teams don’t want to work with us. Stubborn old farts are terrible for a team. They’re stuck in the past and consider themselves the best. This results in them making bad decisions and being arrogant to younger team members.
I don’t consider myself to be part of that stereotype, and I know many people who are not. I wish I could say I’ve never met the stereotypical old programmer, but I have, and often. As have my colleagues who do interviews, or are otherwise involved in hiring. I’m clueless as to a percentage of good versus bad.
Which means, even if you’ve become a great programmer, you get to deal with that the stereotype. Unlike the other problems, there’s not much you can do about this one. Be aware of it and be aware that you’ll be the old person going in for the interview. If you’ve kept up-to-date, and still have a positive attitude, I don’t see age as a significant hurdle...
...except, when it comes to contracts or payment. Part of the issue of ageism is that young people are cheaper. Companies are reluctant to compensate senior programmers for their knowledge. Without an objective way to measure individuals I can understand that. I guarantee I’ll be cheaper in the long run, and that my product will be superior, but of course everybody competing for a position will say the same thing. It’s only after you work with me you’ll see the difference.
Young people are also too willing to give up their free time to a company, which is overly relevant in the startup sector. I’m willing to work long hours, for a while, and if you pay me for it. My loyalty to a company exists only so long as it’s beneficial to me as well. I don’t tolerate any company advantaged relationships. This is all part of the balance in my health, keeping fit mentally and physically. But until you find a convincing way to show companies this results in better products, we’ll be fighting the image that well experienced programmers don’t work as much.
See how easy it for me to let my cynicism shine though! Ageism is a real problem, and it’s due both to reality and stereotypes. Combating this is hard. I think that as long as you keep a positive attitude, and avoid stagnation, it’s possible to navigate around the problem.
Those are the problems I’ve confronted, that you’ll eventually face. Realistically, for your first ten years you can probably ignore these ramblings entirely. File them away in the back of your head. Once things look to be going wrong, remember it’s not you. Stagnation, fatigue, and cynicism will happen to all of us. Recognize it, then find a way to get over it.