Athletes often peak in their early twenties, this can be later depending on the sport. In some cases experience can offset the slowness and tiredness which comes with age but only up to a point.
Mentally we also slow down a little with age, although keeping an active mind can help this.
Is there a time where age affects your ability to program, and does experience gained over time more than offset this?
I guess I am thinking long term career development, I am in my early thirties and think I am still improving, though a lot of this gain is from experience and practice. If I continue to develop my skills will this continue?
Should I look in the long term to moving away from coding into areas where my experience will still count but the mental agility required for coding is not so important. I am thinking of training or consulting but there could be other obvious options, but other ideas would be appreciated.
I've been programming full time professionally for about 25 years now, and about another five years as an intensive hobby before that. I'd say that I write more reliable and pertinent code now than I ever did. For any of you that believe you levelled out and are on the downward slope now, I challenge you to compare the code you wrote yesterday with the code you wrote five years ago. For most of you, I'd guess that your more recent code is better. If not, then maybe it is time to move on.
Programming is not akin to athletecism, it is an intellectual pursuit that improves and changes with age and experience. Do other intellectual pursuits suffer with age? When do authors peak? What about artists? If you were once good, and find yourself crap now, it is more likely that you are bored or not sufficiently challenged. Unless you are well past retiring age, I would seriously doubt that it is the accumulated years.
Not only do programmers peek, but they also push, pop and shift.
Personally i would say a programmer peaks just before the point when they stop learning and stop being open to new techniques and methodologies.
I peak between 9:45 and 10:00 every day, then it's all downhill.
I write less code now than I did twenty years ago, but it is better code!
I don't believe the peak is comparable to professional atheletes, or any other profession that involves intense use of a finely tuned, highly functional body (dancers, for example). In those professions, injuries to the body may not fully heal, and age has a tested correlation to the body's ability to recover and heal. As time progresses, function diminishes. There's statistical outliers, but I'd say these are a rare few with a gift for not injuring themselves, and a lucky biological capability to heal well.
I do think, however, that there is a potential for damage to the mind in programmers. First, there's the once burned twice as shy effect - when a developer has gotten thoroughly hosed by an implementation/design decision, they are less likely to make the same mistake twice, but they are also less likely to reconsider the same solution -- even when the surrounding problem is different. If enough burned patches impact the developer, I could see someone getting caught in stasis, where all they see is the negative and they are unwilling to take risks. Since every choice has potential risk, it can leave a person afraid to do anything at all. I'd say some corporate cultures can cause or prevent this type of burnout.
Second there's the demotivation of working in certain environments. If it's clear that writing good code takes a backseat to writing code in the correct mindless process, it's pretty easy to burn out developers. I'd guess there's a 50/50 chance that the developer leaves to find a better place to work, vs. gives up completely and either stops trying to write good code, or stops writing code all together.
The first burnout scenario is something I'd expect to see after 15 years in corporate world... but mileage varies depending on the company and team. And the amount of beating that occurs when a wrong choice is made.
The second burnout could happen at any age. It might even be worse for those in their first professional job, since they don't have anything to compare to. I know when I entered the workforce in 1998, within 5 years, half of my fellow software engineer friends from school had quit to become massage therapists. After the 5 year mark, most of collegues have stayed in the business, they just shift teams and companies when they don't like the scenario.
But I don't think either burnout is inevitable. The key is realizing the signs in yourself, and finding a way to change the situation so you still enjoy the work.
Athletes peak due to physical constraints. So I suppose when my fingers don't work as well as they do now, my eyes are worse and I have difficulty remembering the piece of code I wrote 10 minutes ago I would consider I was past my prime (but hopefully that will be in my 70's or 80's).
I have seen most of the people moving from full-time programming to Consulting/Training. And this is the peak point.
A programmer has peaked when he starts thinking of becoming a manager.
I think there's a few factors that have part in this 1) Do you keep educating yourself by reading blogs, books, practicing new techniques, listening to other peoples opinions? 2) Are you still a (very) regular programmer? 3) Are you not a big arrogant twat who thinks he is the law of programming?
In that case, in my opinion, you keep developing your skillset and thus you get ever better. The moment one or more of the above apply to you, you peaked.
Programmers peak when they are satisfied with what they do, and decide that they don't need to improve any further.
Compare two similarly-aged developers in my organization: one happily sat on his piles of FORTRAN spaghetti that had made him internally famous 10 years ago, and refused to learn new languages, technologies, or methods. (Source control? Why? I can copy files from .0 to .1!)
Developer two is on top of new languages and technologies, continues to pose innovative solutions to problems, and isn't scared to branch out and take risks. No one criticizes developer two for being older than our dads, and no one believes he's anywhere near his peak.
There is no such thing as peaking. it is purely a psychological effect of expecting to reach your peak and then decline. Once you know for certain that you will keep improving, you will keep improving. The mere idea of asking yourself about reaching your peak means your state of mind is wrong.
Instead, ask yourself, what I should do now to become better in what I do in the future. (for me its spending 1/2 hour a day on photoshop tutorials). If your state of mind will absorb this (which takes time and effort) you will never reach your peak.
Definitely. While you can still learn new technology stacks and additional skills your whole career I think people peak and reach a point where they are as "good" a programmer as they are ever going to be.
You have this rapid upward curve of improvement and then it levels off once you hit your peak. After that it is a much, much more gradual upward curve consisting of small incremental improvements.
Where you peak is different for every person and depends on a lot of factors but it definitely happens.
Hmmmm... Where to begin?
Donald Knuth can probably still out-program 99% of us! (and it's a shame that Markdown messed up the zero-origin numbering ;-)
Don't forget Dara Torres, the 41-year-old Olympian. People aren't always predictable (or stereotypical).
Instead of comparing retired professional athletes in their 50s or 60s with the new top kids in the game, think about how their fitness can compare with that of the general population (especially in Some Countries That Shall Remain Nameless, where alarming rates of obesity and poor fitness are increasingly common, and at lower ages).
Quite a number of sports impose physical strains and risk of injury that tend to limit the length of time one can engage in them (again, especially at the highest competitive levels.)
Instead of comparing programmers with athletes (especially competitive athletes), try comparing with other high-skill human performers, such as classical musicians. It's quite common to see classical musicians with world-class skills (and successful careers) well into what are normally considered "retirement years".
It wouldn't be a surprise if corporate employees who wanted the higher compensations often available only to management chose to leave their specialties behind and move in that direction. But that may say more about the pay practices and value systems of their employers than about the ability of those individuals to continue to perform at high levels.
I've been programming about 50 years.
I would say my creativity has varied inversely with people skills. I think I'm still pretty creative, but compared to 15 years ago, I don't have the "fire in the belly". What I do have is a more mellow attitude - better for teamwork.
Sometimes I wonder if I'm still able to solve the hard problems, but I knuckle down and get it done, especially where math is concerned. I still handle a big chunk of the responsibiility, and my bug list bounces around zero.
My younger colleagues may be at the peak of their capability, but it seems to me what they are peaking at is the ability to shovel massive amounts of code, rather than doing more with less.
So maybe this "peaking" is multi-demensional. Maybe early on you peak in prowess, and later you peak in subtlety.
Coding is a sport. In other words, some people are talented, work hard, and stay at the top of their game. Others have coded for 10 years and can't follow a design pattern if their life depended upon it.
If you stop improving, then you stopped trying. There are many ways to solve a problem and there are 10's, 100's, 1000's+ of problems in a single program. If one approaches programming with the hopes of having "learned it all," then you are already setup for failure. Lifelong learning is a way of life for Doctor's and should be a foundational topic for Computer Scientists as well.
The purpose of a good education is not to cure us of our ignorance, rather to expose it. To expose our ignorance so irrevocably that it becomes a part of who we are. By doing so, our facts become hypothesis and our lack of knowledge, a place for improvement. Finally, we realize that our ignorance is not something to be ashamed of (as is stupidity) and, simultaneously, recognize stupidity as being persistence of ignorance in those who choose not to expose themselves to the difficulties of this process. Then, we become frustrated by the stupidity in others and their unwillingness to translate their stupidity > into an acknowledgement of ignorance > into knowledge.
It depends on how much you like programming and how much you like to learn new things. After 25 years of programing, I still like doing it. The fun is in learning new thing, writing more efficient code, and more importantly a LOT LESS chances to make "stupid mistakes" that takes hours to debug. My only complaint is as I get older, I don't learn new things as fast or retaining them as much. However, in this field, there are so many more things to learn.
It's more common for programmers to over specialize than to peak, but the result is often the same. E.g. you go from being king of the hill to finding you have no hill at all when your specialization becomes obsolete, and the climb back up a new hill often becomes less interesting/viable because of changes in your life situation rather than your mental capacities.
As someone in his mid-50's who has never aspired to be a manager, I feel that I haven't "peaked" so much as I've broadened out my career interests. Some years ago I would have derived great satisfaction from spending endless hours tweaking code or learning the latest and greatest programming languages or techniques. Today I still do a good amount of that, but I do it from a more business-centric approach. The programming itself is more a means to an end, and my interest is the entire application and the business value delivered to my management and users.
I suppose with time I've gravitated to the "good enough software" mentality. From being just a programmer, I've allowed myself to wander over to other areas such as systems, network, and database administration -- even to tech support and help desk. I've probably slowed down a bit with age, but it most likely comes from the realization that not everything is a blazing firestorm as some of your more emotional users would have you believe. Whatever might be lost in detailed mental agility, it is offset with a better measure of intuition, experience, and "steady as she goes" pragmatism and patience. Well, usually.
But then, I'm the main "IT Guy" in a smaller manufacturing company where this approach appears to work. It might not be feasible elsewhere where you are coding for space shots, nuclear events, or cardiac medical devices :-)
Speaking as a developer in his mid-50s, I know more than I ever did, and I'm better in most respects than I ever was. However, I'm not as fast to learn new things as I was ten years ago, and fast learning is useful when trying to assimilate a complicated code base, and probably also when trying to gain proficency in a sufficiently new environment (although going from Unix C++ to VS 2005 with MFC and much more STL didn't faze me a bit).
I think the key is to stay engaged. If software gets boring for you, you'll probably stop learning, and you've peaked right there. It's never been boring to me, and probably won't before I retire (when I anticipate writing free software as a hobby).
To play the devil's advocate, I'd say that brain functions actually do seem to peek in our thirties. For instance, most world-class chess players retire young - my totally unscientific guestimate would be that the career of a world-class chess player is probably not that much longer than one of a sports professional.
And it would make sense that the brain would age and decline at relatively the same rate as the rest of our bodies.
However, I doubt that programming, even of the most exciting and challenging kind, approaches the kind of mental horsepower needed for playing chess at that level.
We programmers have tools and techniques to compensate for brute force, so in the end it's mostly a question of experience and creativity, which probably don't depend so much on pure brain power.
So many answers here seem to assume no programmer ever peaks as long as they feel like they want to keep learning and expanding their horizons etc. I call BS on that, everyone peaks.
Athletes do when they reach their physical prime, and find it's increasingly hard to keep up with the young ones. Programmers do for the same reason, but as their job is an intellectual one, so it is probably later at the point where the mind is still flexible and the ample experience they've collected helps them to learn and apply technology faster than at any other point in their career.
This does not mean that you don't keep learning and are not a damn good programmer for the rest of your career. It just means that as age progresses, you'll find it harder and harder to assimilate new concepts, to bang out new code and to come up with new and interesting design. While at some point in your career you'd be able to absorb the API for a new library in a few hours, it might now take you the better part of your day.
As we age, our brain ages and diminishes in capacity, that's all there is to it.
I don't think we peak, in as much as our interests change over time. When I first started programming I was more interested in things far closer to the code. Gradually as I've aged I've stepped back a few times and started seeing the bigger picture. Code in isolation holds fascination, but when seen in its operating environment there are far more interesting lessons to be learned.
It turns out to some degree that nearly anyone, with enough effort, can write something that works. Once is an accomplishment, but it's keeping that going for years and years, and versions and versions that is the really difficult skill.
Initially you learn how to code, later you learn how to build systems, and even later you learn how to use a computer to solve real problems. But it takes quite a while to get there.
More:
http://theprogrammersparadox.blogspot.com/2008/09/some-lessons-from-experience.html
Paul
I think you have peaked if you struggle to shifted with change and ability to learned new things. If you can do both then you havent peaked yet.
I think we become more professional, which is good for holding down a job but not so great for the adventurousness of the code we produce.
When I was 16 I'd think nothing of sitting down one afternoon to write a program that has a conversation with the user in English.
Now, 18 years later, I wouldn't dream of attempting it because I'm aware that I don't know enough to do it properly.
sigh...
I think its hard to peak when there is always another language to learn or concept to explore, that can/will change the way you do things or how you lok at problems When there are no new problems to solve then all programmers will have peaked
I usually peak between 4pm and 5pm. That's often the most productive period of time of the whole day.
Quite often I don't really do much the whole day besides tinkering a little with the code in between slashdot and the like, and end up implementing everything in that 1/2 or 1 hour.
While age will affect my ability to program, the environment is changing enough that this also plays a role in how well programs can be written and used now compared to 10 or 20 years ago. Consider what kind of web development was there 10 years ago compared to now. The changes are in 3 areas, IMO: Hardware, software and methodologies. The last part is in reference to how now there are a variety of ways to design and build software that I'm not sure were all around back in the "good old" days."
Another question is whether you want to stay within the programmer role or move on to other areas like management or architecture that are where one can go after programming though some may want to stay a programmer for life. Consulting and training are other areas one could "graduate" into though these have a different set of skills that would get sharpened, such as how to find customers and ensure customers are satisified enough to recommend you to others so the business survives.
I would say every programmer peaks right until he gets promoted to a manager.
Programming is not an athletic enterprise.
While the vigor of youth may make it possible to go on mad programming sprees, experience allows you to not have to do so.
It all depends on how motivated you are to continue doing what you're doing. If you truly love programming, you will love it the same way today, tomorrow, next week or 20 years from now. You may not always feel “wow this piece of code just sent chills down my spine”, but that does not mean you are not as smart as you once used to be; actually, it probably means you’re smarter.
It's like acceleration. You move a steady pace to reach the peak. And then, it's all up to you. It all depends on how hard you press.
Programmers can never (IMO) become a "Master of all trades" character. A good programmer picks his/her field of interest and drives him/herself towards programming nirvana. This field is quite flexible and always keeps broadening(positively speaking).
at my work i speak with my team and we have many points to speake not in work but
in many things rather than work
this make the work best and make live easy