Time stops for no one, as they say, and one day you will find yourself older than you ever thought possible. Undoubtedly this has been the case for me, and somehow I am now in my early 50’s, having programmed professionally for over 25 years. Thus I have some degree of insight into the passage of time from the perspective of a developer. This post will be a heads up on some of the changes that a younger developer may expect to experience throughout their career, using my own experiences as a guide.
Without some grounding, exploring the future can be a fraught process. For example, before entering university, I remember an acquaintance explaining how programming was a dead end because computers would be coding themselves within a few years. It is only now, some decades later, that the likes of GitHub Copilot raises this possibility. Your peers may not be the best source for future planning. Yet judging on Hacker News clearly, people of all ages still seek such answers [1][2][3][4].
In particular, we will look at the impacts of time’s passage in three different ways. Firstly, we will consider the personal implications of ageing and how our ability changes over time. Next, a brief exploration of one’s potential career path. Finally, we will examine the changes that happen in the broader world. Investment products always come with the disclaimer – ‘past performance is no indicator of future results’. In other words, predicting the future is largely down to luck and hindsight. So for this post, we will order our exploration by the level of predictability.
Not so young
We understand how the body ages—your passage will not be unique in this. Time spent with grandparents and other older adults provides the first glimpse of the extremes of the process. It is a very individual journey with specific effects starting at different times. From what I can tell, there are extended periods of gradual change, punctuated by a few short periods of rapid adjustment. At some point in one’s 40’s this first becomes apparent when things like reading glasses become mandatory—tangible signs of not being so young. Still, generally, it is little more than a minor hindrance at this stage.
Cognition
Software development depends entirely on one’s cognitive ability. I think our ability as a programmer peaks somewhere in the 40’s and then declines gradually. Based on working with colleagues, I know it is undoubtedly possible to work well into your 50’s and beyond. For myself, the main effects of age so far have been that things take longer and that I cannot work the same long hours I once did. In addition, I find that my performance suffers more when I am tired now. Correspondingly learning new things also takes more effort.
However, I find that these effects are offset to some degree by experience. Without considering other factors, knowledge alone will make a significant difference for the developer. It provides one with a much broader perspective and understanding. For many things, it becomes the case that you have encountered something like it before. As a younger developer, I remember feeling less sure of myself, and at times tasks seemed more significant than they were – I didn’t always see how things fitted together.
Neuroscience
Studies have looked into the effects of ageing on the brain—these tend to support my subjective observations as described. As we age, our memory & processing ability falls off, but our knowledge capability increases. [5][6][7].
It is this tradeoff between cognition & experience that will allow a career to continue longer than you might otherwise anticipate. But in the end, age always wins, so one should certainly be aware of the graph above and its implications. For younger developers, the trick is ensuring that you are working in the right direction on any given project, then you will have the advantage to complete your work sooner. On the other hand, while younger developers may be more agile, older ones are probably more capable at what they know. Though as we will discuss later, this may not hold up as it once did.
Notes for my younger self
Youth is the time to move about and learn new things, but be aware that perhaps your best work may lie in your future. As you get older, you will want to settle into something you can build up your knowledge. Such a choice may not always be possible, but generally, look to trading in your speed for experience as the years go by.
A Developer’s Career
As a developer, we will spend most of our time in front of a computer screen working. But the exact mixture of what we are up to at a given time will be dependent upon the specific stage of our life. HR likes to quantify things such as this, so there are many ways to divide a career. A quick online search will bring forth many different ways to quantify a career’s progression with such metrics as performance, earnings or stages in life [8][9][10][11][12].
In fairness, when considering someone’s career from a broad perspective and how it changes from year to year, we need some means of comparison. For software developers, our experiences day-to-day are surprisingly similar. It’s a case of waking up, going to work, coding away with meetings, emails and other distractions thrown in, before hometime. Rinse and repeat.
A Career Structured
The diagrams below can help place some structure on the flow of our lives through the various stages of work. But they are relatively dry and attempt to pigeonhole our varied experiences perhaps a little too much. Unfortunately, it’s probably the best we can do and at least represents the phases involved. However, unlike ageing, it is only possible to consider the broad strokes; we only get to view the details once it has passed.
For developers, one of the big career choices you will face is the move to management. Generally, the perceived wisdom is that this is our final career destination. Probably this is the case from purely a monetary side, but it comes at the cost of less coding. With age, once you stop something, picking it up again becomes increasingly tricky. Furthermore, the skills required to be a good manager are very different to those of a developer – such that being good at one does not necessarily translate to the other. For this reason, some developers choose never to make this switch. In any event, whichever path one takes, this is a significant juncture.
My own experiences.
To provide some idea of how a career might progress, I can only provide a quick overview of my own.
Exploration
My first experiences of programming began at the height of the personal computer craze in the early ’80s. The home computer invaded the living rooms across the world. My father began it all by telling me that computers were the future. So started my learning path, eventually leading me to university and out into the ‘real’ world.
Establishment
I finally left the cradle of learning behind in my twenties and, after some faltering steps, began a career as a developer. Work was all about trying to make others happy as I sought to prove my worth. Hard graft and limited rewards were the order of the day.
Mid-Career
My thirties saw things take off, and I found the value of all my acquired skills. This period was about working on exciting projects & making a difference – and, of course, being suitably rewarded for doing so.
Late-career
Through into my 40’s, this continued apace. However, at some point, the challenge diminished, and the monetary rewards became less enticing. Thus the transition into the later stages of my career began. This stage is not yet entirely written, but new opportunities have beckoned.
Notes to my younger self
Careers tend to follow the stages outlined, but the exact details of the path taken will be harder to predict. However, based on our look at ageing, consider moving into management when the right opportunity arises. Management is perhaps a better fit for older age, assuming that one has the aptitude. Keeping in the technical stream is definitely a lot more demanding as time passes and is becoming increasingly so.
Times a changing
With time, some of the most significant changes will occur to the world around you. If you are trying to predict where technology will lead in 20 to 30 years into the future then good luck! In reality, you have to roll with the changes around you – to be more reactive than prescient. Some obvious things will probably come to pass like computers will get faster and AI more pervasive. A further complication is that the world appears to have entered a period of greater instability.
So for this section, I will touch on three significant changes that I have noticed in my career in the hope of providing some idea of the nature and scale of changes you might experience yourself. These are largely down to the most significant technological change in my lifetime – the coming of the internet.
Knowledge is not what it was
The internet provides an extensive pool of shared knowledge all available at the fingertips. I started my career a few years before the internet took hold. Back then it was the older programmers who were most respected and feared. Spaghetti code was the bugbear of the day and ‘the elders’ were able to write the most fearsome examples imaginable. But more importantly, they also held the greatest knowledge in a time when you could not just open a browser to find the answer.
Now it is possible to find out how others have approached and solved even the most obscure tasks. Younger or less experienced developers can now solve problems that they may have otherwise struggled with in the past. Therefore the personal knowledge of the developer is not quite as significant as it once was. I noticed this difference myself when observing different intakes of graduate programmers over the years. Earlier groups struggled to complete tasks, while those a decade later succeeded well enough. First-class students in all cases and their working conditions were largely the same.
Academic drift
Software development has at least perceptually become more academically focused. The past saw more emphasis on the practical side, a bit like engineering. For the majority of developers, their day to day work often involves connecting databases or working on GUIs. It has little to do with the more advanced concepts that are covered in university lectures. Particularly noticeable now is the recruiting process in which almost always includes the solving of obscure programming challenges.
There are probably a number of reasons for this change. Partly because in the 70’s, not every university had a CS department—many people learnt their trade outside of this environment. While they were the people around when I started out, by my generation, CS degrees had become widely available. Additionally, some of these CS graduates went on to form companies straight out of university, becoming the internet giants of today. Inevitably their views would go on to influence the industry at large. So rather than working in offices, some now occupy ‘campuses‘.
The Great Techno Explosion
Finally, the other great change I have witnessed is in the proliferation of software languages and technologies over the last couple of decades. Upon leaving university, there were only a dozen or so languages that I might have expected to encounter at work. However, it has become difficult to follow all the available programming languages and technology stacks. For example, consider how many ways there are to make a ‘simple’ webpage. The internet has aided and abetted this to some degree by reinventing the methodologies, libraries and even languages with which it is developed. I believe that the increase in information and sharing has contributed to the rise of this complexity.
The result
The availability of knowledge with the internet coupled with the emphasis away from the practicalities of the job has resulted in the devaluation of older workers. Their main strengths of knowledge and experience have become less appreciated. By the age of 35, many developers find it challenging to continue working in the industry. As a result, ageism is a real issue despite many of the protections that in theory exist [13][14][15]. One that probably pushes older programmers more into the management pathway, where their experience can still make a difference.
Earlier this year saw the release of GitHub’s Copilot, an IDE plugin that uses AI to suggest whole lines or even functions of code as you type. Controversial as it has used all the public code from GitHub for training. Eventually, such technology would have just as a significant impact on software development as the internet. This time it will be the cognitive load required for software development that will be reduced instead of knowledge and experience. That is, much of the day-to-day coding will become less demanding. It will be as though you only need to type your ‘intent’, and the suitable code will appear. Perhaps a more innovative version of copying and pasting code from StackOverflow.
This technology is in its infancy, so we do not know how it will play out. Perhaps it will help older developers remain relevant by compensating for the effects of ageing. On the other hand, the average software company may be able to get by with even less skilled or experienced coders—with less pay, of course. It will also further increase the trend of more advanced programming being the purview of larger or specialist tech companies.
Notes to my younger self
The big issue with the changes to the world around you is that you do not see them clearly at the time. All you can do is keep up with the comings and goings of the tech world. It may be possible to piece together the larger threads sufficiently to keep ahead some of the time. Try to avoid fads and the promises of new technology—they have a way of disappearing or changing on you.
Closing thoughts
In this post, I have tried to consider the passage of time from the perspective of a developer, with my own experiences as an example. At the start of your career, there may be just too much to take in at once. Thus looking this far forward into your future may seem pointless. But time passes much faster than one expects. Like all things, early planning can help your navigation of the path ahead. Of course, while some things are much harder to predict than others, you can still make out the rough shape of things to come. At the very least, consider the limits that age will force upon us.
As the wise say, the one thing that is certain in life is change. Even the rules of the game may become different by the end of your career. Yet, up until now at least, the act of coding hasn’t changed all that much over the years. The display in front of me is certainly much better now, but alas, perhaps not so the eyes that stare down.
Updated Nov 2023
I included a new header image.
Notice
The header image was AI generated by Microsoft Designer, otherwise all photos & diagrams that appear on this post are my own.