You only see top programmers who started as kids and probably won some Olympiads and programming competitions, and this continued in their 20s and maybe kept their skill up till 30s but that's about it. What do they do after that?
I'm 30 and missed my chance to be a kid prodigy in programming or math and clearly not happening now. Is there an area where you can be good at as you get older and what is the old man's game options as a programmer?
Be open also for changes, we went from desktop applications to the web. Learn the technologies involved.
You need people with different backgrounds on the field though, just because I started very early, it doesn't mean that I don't respect or take to high regard somebody that would start coding on their 30s, but the opposite, they are important and valuable to have in a team. Developing software is much more than only programming and much less related to maths or olympic medals lol.
Nowadays there are so many materials and courses that makes getting into programming so easy, I had to go through many phases you just don't have to.
I've spent countless hours configuring servers in a way that nobody does anymore, using programming languages that almost nobody does, text editor configurations nobody use and so on. You'll never need to waste time with that. But once you are working 10+ years in the field, it will be expected from you that you learn new things.
I created htmx (intercooler 2) when I was 40 and it has been far more successful. I also created hyperscript when I was 40.
I'm working on new stuff as we speak.
I could have made a lot more money by moving over to tech management at around age 30, which is what I think sucks a lot of programmers out of the game, but I like writing code.
I do have memory issues compared with when I was younger, but I've been coding so long that the total set of stuff I know about is huge comparatively. I'm also much less intimidated by technical challenges since I have a lot more techniques I've successfully worked with and I'm more patient with problems.
I'm definitely not the same programmer as I was in my 20s, I can't do weeks of 12 hour days in front of the computer like I could then, but now I have a much better and more intuitive understanding of what needs to be done, so I waste a lot less time.
I tried to summarize what I've learned here:
But, to answer the original question... wait, what was the original question?
I am just now starting to feel like I can no longer be competitive as a professional developer. The younger people I work with just seem to get more work done. I feel like I understand aspects of business, software complexity, and practical aspects of development better than most people I work with and have worked with, but those are also becoming more common skills. I very much enjoy writing and working on my own open source projects, which is what I plan on doing, but I will profoundly miss social interactions around developing large systems as a part of a team.
If you are 30 and enjoy programming and you can get paid adequately, then I don’t think you have any problems with your career choice.
What matters is not having youthfully crackling synapses, but motivation, curiosity, hard work. Though a youthful memory certainly would be a help, it’s nothing more than an enhancement to your capabilities. Experience counts for more.
30 is still young to start programming. At 30 you can still spend 30 years programming till retiring at 60.
Full disclosure I’m an “old” guy, but I’m just as passionate, curious, hard working, motivated, technically cutting edge, up to date and interested as I was in 1987.
It is a young man's game in the sense that your priorities in life change. Just lose your motivation to
* learn the next hottest framework on the weekends,
* doing leetcode puzzles to change jobs
* 25 yr old nitpicking your PR that you didn't organize your imports in alphabetical order.
* plateauing at L6 level while your peers become directors. Why would you want to make 250k while your friends make 450k.
Sure you if are really good at programming you might get the respect and become a wise sage staff engineer. But most ppl and organizations are average where its hard to distinguish your self writing crud apps or data pipelines.Effort required to increase pay becomes exponential in coding after a certain point to the point that its just not worth it.
Yes, your chances of becoming a world-class developer (or athlete, or musician) are slim. But they were slim when you were 15 too. That's not the point. The world still needs heaps of above-average programmers, whatever the age.
Also, I'm in a rock band with some 65+ guys, playing anything from Beatles to AC/DC. They would have a good laugh if they heard your concerns :)
I started playing guitar 8 years ago under a good teacher (couldn't even play a chord before that), and after a LOT of practice I can now play pieces like Capricho Arabe with deep feeling and skill that gets standing ovations.
It's not about when you start; it's about how much you put into it through regular, mindful practice (sometimes I'll put an hour into one basic technique or progression that involves 5 notes because it doesn't feel automatic and natural yet). Your brain doesn't harden as you age and lose its ability to learn new things; only your attitude towards new things tends to change (if you let it) because the familiar is comfortable. When you're young, you don't have as many familiar things to rest upon so there's more incentive to embark upon journeys of discovery.
These questions are always thinly veiled ageism.
Regardless of age, some people become set in their ways. With age, this becomes more apparent and noticeable because people are looking for it. Sometimes being older DOES mean a lack of open mindedness and adaptability.
I think the perfect hire is a young head on old shoulders. Experience, wisdom, intuition, a lack of dogma, honed pragmatism ... but also a willingness to be wrong and persist, a ragged determination that comes with youthful foolishness.
So, even for me, age does correlate with some negative traits that MAY develop. I try my best to stay current, but use my developed nose to sniff out the fads, trends and anything without substance.
I feel this in myself and others provides massive value, more than the benefits of youth.
Software engineering needs ten self-aware Grugs for every child prodigy.
Getting in might be hard though. See, I’ve been on the hiring side and guilty as charged, I have passed on people aiming for Junior positions later in life. Not because ageism or anything, but because I need to make sure I have someone who just likes tinkering and staring at a monitor the whole day, not someone who figured to do a career change for better money. The second motivation is a recipe for disaster. You have to like this in order to do it well.
And this has to be visible already on the resume.
I am a JavaScript developer. I am much older than you. It is very much a young persons game, but let me qualify this.
Most people actively programming JavaScript for employment cannot program, at least not to the level considered minimally employable in many lesser popular programming fields. Hiring is structured around this, so much so that employers much make a specific dedicated choice between a risk adverse tool user versus an innovative problem solver focused on product superiority. They will almost certainly choose the former because it’s a safer option. Employers willing to take a risk on developers interested in doing original higher quality work tend to be those that work harder to retain their developers.
So there’s that.
On the other hand I didn’t start programming until I was 28. It didn’t take long to become better than average. Now, a bazillion years later, I can do things now that are vastly superior to what the big companies are putting out. It’s not because I am talented or a child prodigy. It’s because I measure things and make original decisions not based on popularity or some community consensus bullshit.
This is exactly how I felt in my early 20s. As young as I was, I still felt I had fallen behind the curve. There were programmers far younger than me contributing to major OS projects, hacking their own operating systems, and creating video games.
I think already has said how it's never too late, but I want to say something different that I wish I should've known. Programming is one of those fields where you can grow in unimaginable amount of ways. You can be a competitive programmer, if you can think fast in a high-pressure environment. Like making apps and products? You can become a full-stack engineer and join an early startup. Have a fun artsy side? You can be a game developer. Like detective work and combining multiple hints together? Maybe security engineering is for you.
The fact is that you can play on any of your strengths and become something unique. You'll stop comparing yourself, because you'd realize you're bringing something better to the table than the prodigies. The competitive programmers might be great at thinking in terms of algorithms, but they absolutely suck (from what I have seen) at startups where you need quick hacky skills to combine things together.
My advice is to ignore the noise. Let your interests drive you, and you'll become eventually stop thinking about the how famous programmers are better than you.
I think you'll find most programmers become better over time well into their 40s, as making the right architectural/structural decisions easily trumps any minor loss you may experience in "fast thinking".
Also I noticed that you mention missing out on being a prodigy. Nobody should aspire to that, that's a set up for disappointment, either by not achieving it or by flaming out early. A lot of kid prodigies don't actually go on to become successful in their field. Breadth of experience appears to be more important.
It also overestimates the actual work and results these prodigies will eventually arrive at.
Very skilled mathematicians solve hard real world problems with math from the 17th century. None of them rediscover Calculus and linear algebra from scratch, and they also don't need to excel relative to the field oft mathematics or engineering. Nor will they move the field of mathematics forwards. That even goes for many very skilled researchers.
Very skilled programmers solve hard programming challenges by effectively "gluing" code blocks together others have created. They don't need to advance the field of computer science for this.
The idea that math, engineering or programming only make sense if you have a shot at rivaling the likes of Peter Scholze and Terence Tao or even popular programmers like Carmack is ridiculous.
Also: many child prodigies (like those kids finishing Masters degrees <20 and winning competitions at 14) are people you never hear from ever again afterwards because they move on to perform the same (still important) "mundane" tasks as anyone who finishes their degree at mid 20 or even 30.
I think that competitive spirit, or arrogance, depending on how old you are, lessens with age. Also, the older you get, the less time you can spend with any competition (try to play some MMOs against teenagers in your thirties). Finally, your body is peaking around 20. You can of course fight that and many top-level athletes compete at a very high level in their forties (think Fernando Alonso), but even these outliers are arguably less capable than ten years ago and have literally decades of experience.
Fortunately, programming as a profession is not a competition.
I think a big part of the myth comes from barely-legal techbros repeating what they heard, and maybe high-fiving each other. I half-jokingly blame PG for seeding this idea into early dotcom startups that took over tech, but I suppose it would've happened anyway (consider stereotypical teenagers thinking adults are dumb).
One thing that does happen is that, as you learn more, you're not as easily impressed with yourself.
Another thing that does happen is that a lot of people put their time and energy into other things. This is a long discussion, and I can hear the objections, but addressing them pre-emptively was getting too lengthy.
Another thing that happens is we forget how hard it was to learn some things that now seem easy. Besides the implications for collaborating with or teaching people who haven't yet learned particular difficult things, we need to remember it for ourselves, when we have to learn something new (and leveraging things already known isn't enough). Discouragement is a big deal at any age.
Health can slow down an individual in general. And that's important for 20yos to understand for themselves, not for generalized prejudice against others. Good nutrition, good sleep, exercise, try to avoid serious injuries (and when injured, make sure you're getting good medical advice on recovering properly), don't be shotgunning "energy drinks" and coffee or worse, don't think you're managing bad stress just by getting through it (nope, you're doing possibly permanent damage), mental health, good relationships, establishing financial security (too bad we don't just have this by default in a wealthy country, but until we do, financial security leads to better health, and can also solve problems that come up).
If you want to get into software, it just takes time and effort. You can start very vocation-oriented (e.g., do nothing but learn and practice React), or you can be guided more by curiosity and getting a broader diversity of experience over a longer period, and see what you end up diving into deeper. Or both.
Does that make me a prodigy? I don't know, I've never felt so. I just keep learning and doing and over the years I've been building larger and more complex systems. Nowadays I spend more time directing the development of several development teams in building solutions and occasionally do some hands-on development just so I retain a familiarity with the challenges facing today's developers.
Anyway, I think I have enough juice left in me to keep going until I'm 67 which is when I plan to retire.
I have 500 medium and hard leetcodes solved in the last year. Before I started grinding leetcode, I was terrible at leetcode (who would've thought). Same for Systems Design. I was terrible at it, got my ass handed to me in the first interviews it showed up. Okay, fine, go to the internet, find exercises, go through it. Learn the terms, the systems, the examples. Practice, practice, practice.
Nowadays, I pass leetcode and systems design interviews without a sweat. Behavioural interviews? Always the same shit, interviewers always want to hear the same boring story how magnificient you are but still humble and a team player. So you practice on 10 stories 100 behavioural interview question and focus on impact and teamplay. Takes a bit of time, but after that it's just choosing the right story at a given interview, easy.
Got an offer from Adobe which I rejected becasue they didn't offer full remote and got very far in the Google interview shortly before I stopped it, because they didn't offer full remote. Surprise, I'm now working full remote as a backend Software Engineer.
I have a ~50h week, of which is ~20h productive coding work, ~10h meetings, ~5h noise, ~15h for self-improvement, including leetcoding, design practice, APIs, frameworks, programming languages, general tech topics and whatever. Compensation could be higher (still, 75th percentile of salaries in my country), but I'm living well enough and can always join big tech later in life.
At the moment, I want to figure out if I can manage to build my own thing and life off of it. So, big tech can defintiely wait for another while.
What you can read out of that is; it's a grinding game. You suck at something, you start grinding it. Grinding means; do lots of exercises until you get good at it. You are stuck on a problem for 1+ hours? Look up the solution and understand it. Then a day later, you try again without the solution. Rinse and repeat until you are good. It costs a lot of time, especially at the beginning, but eventually, it gets easy.
People doing math and coding olympiads invest a lot of time into solving problems that prepare them well for those kinds of olympiads. There's prodigies, sure, but even they need to grind. If you don't want to invest the time to grind, that's fine, but there's no way around it. There's no shortcuts in life, especially if you're not born rich.
They get a life. You know, a partner, a different hobby from programming, some kids.
Imagine you are 35, have kids (and care to spend time with them) and you have to train your body or it will break down so you must go to gym even if you don't like it. You have to sleep good or you'll crash.
Compare that when you're 22, no kids, no need to exercise, young energy, can sleep bad, you want to change the world(overworking), programming is also your hobby, etc.
> I'm 30 and missed my chance to be a kid prodigy in programming or math and clearly not happening now.
To be good at math olympiad you have to train for it (a math olympiad professor told me). You can't just be "smart". It's like HackerRank, you just have to study HackerRank to pass HackerRank.
> Is there an area where you can be good at as you get older and what is the old man's game options as a programmer?
You can be good at specializing (example I like backend, dbs/search-engine, performance) or managing.
> I'm 30 and missed my chance to be a kid prodigy in programming or math
Programming is one of the most empowering things in human existence. You always have a chance to build something that impacts millions and you have to do the work only once. So, forget about the bygone chances, drop out of the race, build cool things and have fun. You may yet change the world for the better :)
First, you don't need to be a "kid prodigy" to be a great programmer. But even then, you don't need to be a great programmer at all as long as you're happy and do the things you like. In the end we'll all be dead, we might as well enjoy the ride.
Another note about the "kid prodigy" thing: just because someone wasn't a "kid prodigy" doesn't mean they were incapable to be a "kid prodigy". Prodigies aren't just hard work + intelligence, there's also opportunity, support, luck... I bet there's a lot of people out there that would have made excellent programmers but didn't have access to enough resources when they were growing up.
There's also a lot of bias in thinking that "great programmers" dropped down in skill after their 30s. They might not make headlines anymore but that's not correlated with skill. Linus Torvalds wrote Git when he was 36, for example. I'm sure that if you search for kernel contributors you'll also find "old" people there.
Another thing is that, as someone who has a degree both in computer science and mathematics, math and programming aren't really close at all. The thing that would be the closest one would be writing algorithms, but most algorithms you'll ever need are already written and implemented for you.
And now for the actual piece of advice: in every area of programming you will get better as you get older. There's so much about programming that comes from experience. I always tell juniors the same thing when I solve in two minutes a problem they've been struggling with: it's not that I'm smarter than you, I have just seen this problem or something similar already many times. You might want to find an area you like, and then keep on being curious, humble, and learning. That's what matters in programming.
The Job. That's a different story. I have witnessed our industry get beseiged by level mania. Follow rubriks for a particular level to get certain ratings and promotions. Programming alone wont help you grow/level up beyond the terminal level. So there is a lot needed in terms of influence, project management, leadership (and the related artifacts to boot) that need to be presented and that to at a very regular cadence (binnual perf reviews). I don't know this is sustainable when not young?
But anyways, eventually the search for getting laid and getting drunk gave way to keeping up with programming. I tinkered around with programming while in the AF but didn't do much.
The itch to program never left though I ignored it for a LONG time.
At 40 I started on a Master's in CS (have a BS in engineering). Graduated at 45. I did remote part time jobs from 45 to 50. Got my first remote full time job at 50 during the middle of Covid in June 2020.
I just switched jobs to a major health care org at 52. It is a Java / Spring Boot / Angular position. I was completely honest with them that I hadn't done Java since MS degree (95% of courses were in Java). Never did any Spring Boot and only did one project with Angular 1.0. And they still hired me.
After a month I kind of felt over my head so I asked my team lead why they hired me. Her answer was people with some experience expected way too much money and/or they weren't willing to learn. She said I was at least willing to learn. I got a 20% boost to what I was making at the job I left, plus amazing benefits so win-win-win for me. I still have a lot to learn; Spring Boot and Angular seems very heavy to me coming from Python / Flask / HTML / CSS / vanilla JS but it is all starting to come together.
Right now my personal interest is Common Lisp. So in the mornings, at night and on weekends I delve into a CL book. It's going slow mainly because I ... SQUIRREL. But whatever, I'm in no big rush.
Moral of story: Continuously learning, be willing to learn, be honest to yourself and employers. Play on your strengths, don't deny your weaknesses and work on them.
Where do you get this idea?
I know in mathematics, winning the math olympiad makes someone far more likely to win the Fields medal, but I haven't heard of a similar correlation in programming (e.g. for the Turing award).
I don't see how being a young prodigy gives someone an advantage in most of the programming world.
When most people start programming: most people discover what they're passionate about early in life. That of course gives them a huge bonus, because they usually can spend a lot more free time and are nimble learners at that age. However, learning a skill early can also have draw backs, such as being set in your ways because you were in a "know it all" phase at the time, or learning to do things based on instinct rather than reflection.
How long they stay productive: that probably varies a lot, but I don't think I was as productive in my twenties as I'm now in my fourties. I suspect that people who drop out of programming lose passion for it or discover more important things, rather than lose the knack for it.
Whether it's possible to pick it up later in life: there is such a thing as innate suitability. If you're having a hard time, that could be a factor. Or maybe something just hasn't clicked yet. More likely, it's just not for you. All of these considerations don't matter if you're doing it just for fun, mind you. That being said, unless you really forgot how to learn new stuff, it's totally possible and pick up skills later in life and then excel at them (bodily restrictions may apply).
I would say programming as a skill is mostly driven by a constant dissatisfaction and need for improvement, not necessarily by the age of the programmer.
After that, there are three things matter a lot for your productivity:
1. Deep and broad stack knowledge is not learned overnight. Over two decades of career I've done everything from writing kernel patches and fixing malloc bugs all the way up to publishing state-of-the-art transformer research. I didn't have this in my 20s. I was a child who knew C++ and algorithms.
2. Seeing the right change to make is hard. This can be the right product (as a 20-something I had lots of opinions about this but most were contradicted when I actually got 5+ years experience as a PM). It can be about engineering design, where taste is still subjective but has long-reaching consequences. It can be about the feeling that that odd result is actually serious enough to look into deeply and not just excuse away.
3. Cross-domain knowledge. Deep competence in programming is powerful. Combine it with deep competence in another field and for the right problem set it's a superpower.
A 20-year-old prodigy doesn't have any those. You can have at least the third and arguably a head-start on the first two.
Pick an area to work in that overlaps with your previous experience and you've an excellent shot at becoming the best of the best in it.
Source: over 40, programming since childhood, better than I ever was and still learning and improving.
I am 42 now. My longest problem was not about programming, but what to program. For a few years now, I have tried to hone the problems around this question, at leas where I can. For myself, I still struggle with it, but I given myself to take one small thing at a time and not worry too much about bigger goals.
However, I still care what to do. Sometimes I have a strong opinion on what to do, but I am in a situation where others around me mostly have no opinion or will never answer the question for whatever reason. I worried a lot what "their" opinion was, but at this point, the ambition is something I have to do - if I see something to fix, I will make a decision to do it. For many, they don't have that opportunity, for sure (like those who program for their CVs.)
To get back to the question directly - it's not what you describe. There will be a few who are very sure of themselves and can roll with it. Some of us take years to build that confidence, but knowing what to do and doing it is very much an important skill, no matter what age. I am also under the opinion that where I am and where I can be is not decided by business processes, but my own will. (Sometimes I need to continue to take my own advice.)
There will definitely be phases to enthusiasm, focus, and opportunities to shine (if you are continually learning).
The "young man" qualifier has various aspects other than 'ability'. For example, a young man may not care that he is a cost center as far as employer mother ship is concerned. He may not care that the work may be highly irregular in terms of hours. He may not care that he is asked to demonstrate rudimentary knowledge when looking for work. He may not care that ... but an "older man" will likely care.
You need to project a desired mid-life situation. Define the parameters, and then check out possible average programmer outcomes at mid-life, which vary quite widely.
Finally, the profession may look very different in a couple of decades (when you will hit your midlife). It certainly wasn't like this when I was your age. So I think if your concerns are general life fulfillment concerns, you should analyze and reach decisions in terms of generic knowledge worker situation. For example, your spending & saving habit choices will be far more significant factors than your choice of career if at 50 you need to do a re-eval or pivot what you do.
I think the one advantage you have as a "young man" is that you have abundant spare time to hone your skills. If I were to pick up programming now (or any hobby that requires determination), I doubt that I would have the time required to fully immerse myself in it. But I am much older than you and fully occupied with job and family life, so not all hope is lost for you.
In some ways, programming is like learning a musical instrument, but in others it isn't. You don't need to fine-tune your brain synapses for amazing finger coordination. But like with almost everything, the more you practice the better you get.
Finally, I really wouldn't worry so much about whether or not it's a young man's game. If you're curious, programming is probably one of the easiest things to get into: no special gear required other than a computer and an infinite amount of resources for learning available for free online. Plus, you have online communities to find answers to common questions like StackOverflow.
Don't overthink it, just dive in.
It is in the sense that it takes time to learn, and the industry moves fast. Keeping up with new tech and new trends while also having 'old person stuff' like a family, a bed time, other responsibilities like fixing your house and mowing your lawn, make it far harder than if you're a young person who can sit down at 6pm after a day at work and grind through tutorials until 3am instead. As you get older that stops really being much of an option.
If that sense programming is definitely a young person's game.
But old dinosaur developers like me (I'm 45) don't really need to do that to still be useful. We understand that programming is much more about communication and people than it is about code. I still enjoy learning, and applying the craft of software engineering, but I get a lot more from solving problems and making people's lives better with what I build. If I can see that a problem will be better solved without 'moar codez' then that's the route I'll take.
In that sense programming requires life experience, and that definitely isn't a young person's game.
I know a few. They either started their own companies or have regular jobs.
Performance in competitive programming doesn't necessarily translate to performance in software engineering, which is really a different discipline altogether. Chiefly it has much more to do with dealing with the human factor.
To quote my distributed systems professor: Technical problems are mostly solvable. Most unsolvable problems are not technical.
It could also be a young woman's game.
One of the joys of programming is that, with regular exercise, it seems to get better and better. I look at problems today and solve them in my head in minutes before touching a keyboard, whereas I would have dived-in and spent weeks hacking as a kid.
Youth brings many advantages, along with sheer energy (the ability to pull all-nighters) another is simply time. I won awards in a different industry in my 20s simply because I was able to indulge a project for weeks, without kids and other responsibilities.
Today I'd have the wisdom to;
1) Question the assumptions behind the "need"
2) Use something else I already made
3) Get someone else to do it
Like sports I think that maintaining "coding health" is a thing. We get rusty if we don't hack from time to time. That said, I have a good "baseline fitness" and pick-up a language I haven't coded in for 20 years with a few weeks of revision.
If anything a tragedy for older programmers is getting less and less reason to use hard-won skills. I hope older programmers get more recognition as an undervalued resource, as I still actually enjoy writing code.
So there's a lot of programming going on in older stacks such as Fortran, COBOL, J2EE, etc.; the reason being that lots of apps were started when those stacks were current (eg. turn of the millennium saw a boom of e-commerce apps), and business is hesitant to change tech for change's sake. Isn't that what we're praying here all the time, like avoid big-time refactorings/rewrites?
As a corollary, the downside of this is that, as you mature, you see tech choices, unwillingly or not, as cyclical/generational, and dominated by a desire to find a niche in the industry and for job security rather than objective criteria more than we're willing to concede.
But programming in general can be done at any age. You have an obvious experience advantage if you start young that is not specific to programming, but it is not at all a requirement.
If you’re worrying about being a “top programmer” then perhaps there’s something else that’s really on your mind.
I’ve met some people who bill for a days work what I bill for a week, and they didn’t write code very much differently than I do. Those prodigies are naturally gifted with strong systemic thinking and design and are mathematically bent.
Work on your people skills, build a team that is motivated and wants to charge forward with you, and then with their help you will obliterate the obstacles in your path.
1) To what extent does starting programming at a young age help in becoming a good programmer? 2) To what extent are young people better at programming than older people? 3) To what extent are older people better at programming than young people? 4) How much do years of experience count?
Brief thoughts:
1) It helps a bit, but most people don't start very young. Solid foundation of math, logical thinking is important, though.
2) Young people have better memory are able to focus for longer periods of time, and learn quicker.
3) Older people have more knowledge of the world, and are better at communication and navigating social relations, which is very helpful at real world programming jobs, not so much at coding tests.
4) Experience is very important. Some of it generalizes to the entire programming domain, other parts are specific to languages and frameworks. Some fields change rapidly, and there experience is more transient.
Anecdotally, my best experiences have been with older programmers. I worked with a guy in his 60s who had some absolutely incredible personal stories to tell (he hitchhiked from Europe to India in the 70s...) but also a wealth of previous knowledge from his decades in the industry. He'd seen a lot, but still had an attitude to learninng (he was writing node.js, ES2020, all the modern gubbins, promises, maps, etc).
I think it's more to do with you as a person. Are you willing to keep studying and learning for the rest of your career? Even if you're not, there will probably be a slew of jobs that are fine for someone who has already "peaked".
TL;DR: I don't believe so
The vast vast vast majority of well-paid programmers (not frontend devs) are upper-middle class (within their country) who generally have a solid family foundation with one or both parents involved in technology either professionally or as a hobby.
It is very difficult for someone over 25 without a solid understanding of college level algebra and statistics to ramp up into a professional programmer/engineer.
The caveat to all of this is if you're willing to work until you make it. Pretty much anything can be done with enough work; but if you're 30, not good at college level algebra, don't have 3 hours a day to spend learning, practicing, studying, and contributing for 3 years you aren't likely to become a paid professional.
You can still be clever in the business sense with something simple like CRUD SAAS. Apply your unique insights and life experiences to identify the problems you wish to solve. Finding the right opportunities is more important than solving them with high-falutin solutions.
A simple and elegant solution which serves customer's needs will always have an appeal. Using technical expertise to get that solution in front of the customer's eyes is even more important.
Code is only a tool, a vehicle to take you towards your destination. As programmers we sometimes telescope in on our love of technology. Take a step back and look at the larger picture.
I do feel... somewhat disconnected. Ie, my thoughts on what a good API or lib looks like is different from what I find most often in the OSS world. Not sure if that's age-related. I re-invent wheels.
Programming is about two things: dexterity with tools (editors, operating system, log analysers, code versioning etc) and conceptual thinking (abstraction, planning, problem framing, problem solving). If you are interested in starting with programming, I suggest you pick a topic you care about as a hobby and progressively become more serious about it:
- do you like web design? start a simple home page for a project
- do you like DIY electronics? start with embedded programming
- do you like gaming? start with one of the gaming engines
- do you like phone/tablet apps? start with a low-code platform
Also find someone to mentor you, ideally someone you can talk to in person or over a video chat.
There might be a certain demographic you won't fill, but tbh, that has no bearing on whether you can be a programmer first (just learning to program), or learning to program in order to contribute to say open source. As for getting a job, there are barriers tied to age which are primarily ageism, but that doesn't have anything to do with Olympiads than more to do with stereotypes about old people.
I'd argue that programming (hacking on code) is probably a young person's game, but that software development is not. The main reason isn't that young people are smarter or quicker, it's that they are cheaper (in general). Other parts of software development (requirements, leading teams, owning delivery) are higher leverage and so can handle higher priced older employees (again, in general).
This applies to the vast majority of code I've seen in my decades. Rarely was the brilliance of one developer the critical factor in making or breaking a project.
If businesses can settle into a cadence with high psychological safety and multi-year runways, older programmers can do tremendous things for the business (or government/organization) and deliver high quality software and at the same time train up junior engineers.
Suppose someone said this: "We all know that your agility and strength peaks in your 20's; and being a builder requires the same movement techniques as being a body-builder. So, doesn't that mean being a builder is a young man's game?"
I'd hope the error here would be obvious. Sure, you're using your muscles when you're a builder. But the most important thing about being a builder isn't how many bricks you can move from point A to point B in an hour; the most important thing is that the house you built will be stable and reliable. And yeah, in a small building crew they often have the 20-year-old doing a lot of the "grunt" work, in part because his body can take it better than the 50-year-old who's overseeing the whole operation. But it would be incredibly foolish to fire that 50-year-old because he was "too old to be a builder": unless that 20-year-old is a "prodigy" in the sense of, "has the wisdom of a 50-year-old", the house he builds by himself will be nowhere near as good as the one he builds under supervision. And the 35-year-old on that team is still going to be faster and more effective than the 25-year-old, even though the 25-year-old is stronger and has better reflexes. Why? Because the 35-year-old has 15 years of experience in doing things efficiently.
So: Can a 25-year-old can fit more complex algorithms in his head than a 50-year-old? Probably so. Does that mean he'll write better programs? Absolutely not. The very first thing you need to learn is that you are too stupid to program. "Debugging is twice as hard as programming in the first place; so if you program as cleverly as you can, you are by definition not smart enough to debug it." The second thing you need to learn is that code is read much more often than it's written. Which means even if you can understand your code, if nobody else can understand your code (meaning, "the rest of the developers at your company", not "the top 100 developers in the world"), you've still failed in your job.
Contrast that to math research, where all you need to do, once you've come up with your super-complex theorem, is explain it to a few of the top minds in the field to get it published.
I am married with kids and life can get busy. Programming sometimes feels like a guilt free escape especially when compared to gaming or watching sports. I manage my time better because I’m forced to which makes my programming escapes much more organized and impactful.
I'm not some elite prodigy, but it doesn't matter... programming is just a tool. Yes, I won't win any competitions, and I've never done leetcode, but that's a SMALL sliver of all the industries that need people to write solid code. In the end it's the outcomes and products that matter, who cares what code you write?
But with programming the age of being set out to pasture is much higher compared to sports or physical jobs. I've witnessed first hand guys in their 70's crank out productivity and creative ideas. One of the UNIX guys recently cranked out some new software in his 80's.
The core brains here are a few machine learning scientists who are more of the prodigy type, very very smart, and 10 years younger than me. But you don't need to be a prodigy to be useful. They also need people to figure out what the client wants, take messy data and clean it, make a front end UI that doesn't suck.
It's so much more than lines of code. And in my experience, programmers who started later in life can pick up how to code pretty quickly, and they don't need to be amazing coders, because I've found them to be realllly good with all the other stuff. I've found them to be cautious, good at communicating, able to think about problems at an abstract level, very dutiful and see the importance of things like documentation and keeping boards up-to-date etc.
When I was 21 and coding, I was rising the ranks as a coder pretty quickly, but I lacked the maturity to see the bigger picture, I neglected processes - and even dismissed them, I didn't think about things like reliability, I didn't really think about product fit or all the none code related things. I didn't even see them as my concern half the time. In fact I'd go as far as to say I was a bit of a liability at times.
So, I've found older programmers introduce an air of calm, wisdom and diligence that, certainly I had absolutely none of as a precocious 21 year old programmer.
In fact, I work with an intern who's a fair bit older than me (I'm in my early thirties), and I'm often amazed at the things he considers and mentions, things I hadn't given a second thought to, and they're not necessarily technical or code related things, they're the bigger picture things and ideas, that are just as vital as writing code. Oh, and he's gotten to be a good coder in a short space of time, too. I think older folks are more focussed and methodical learners generally. I spent most of my 20's trying to learn about 10 programming languages, badly. Rather than learning the few I actually needed to an intimate level.
So in summary, I've found that older programmers have life skills and experience that help them get up to speed that perhaps younger programmers lack. And they also tend to be better and all the none-code but vital skills, which I certainly lacked when I was in my early 20's. I absolutely love to see a mix of ages in a team, because they bring different skill sets.
That's a bleak way of looking at life.. Remember everything is a bell-shaped curve, chances are, you'll be under the fat part of that curve with most of the rest of us..
Only the long tails are seen, the very-bad ones who are on public display (for better or worse) for their terrible decisions, and the very-good ones who are hailed as brilliant super-humans..
I'm having a hard time finding an analogy.. Programming is one of the fields, like carpentry, where you have a venn-diagram situation, two circles with some intersection.. One circle is "Hobby" other circle is "Job".. You'll find people who have programming as a hobby, but drive a bus for living.. You'll find people who have programming as a job, but play tennis as a hobby.. And then finally, you'll find people who have programming as both a hobby and a job..
There is only weak correlation between skill and in which circle you are.. There is stronger correlation between how much programming you've done, and how good you are..
Now.. For stuff like football, you don't have this situation, sure, there are professional football players, but they're really the long tail.. Most people in the world that play football do not do it as a job, and they don't expect to be part of the "seen top".. They have a good time.
For stuff like being a cashier, you'll probably not find many doing it purely as a hobby, entirely for it's own sake, but you will find a lot doing it as a job.. Do you think those people care if they're part of the "seen top" ? They care much less about being the best, and more about being good enough to keep their job.
In football, you can only make a living if you're in the visible top.. In casheering, you can make a living if you're not incompetent.
In respect to potential enjoyment, software and carpentry is more like football, it can be fun and something you do because you enjoy it. In respect to job security, software and carpentry are more like being a cashier, you don't have to be specially good, average is sufficient for holding a job.
Olympiads have almost nothing in common with actual engineering work. Overall "regular" coding isn't as brain-intensive as mathematics. Lots of 40+ software engineers are productive even in fast-paced companies so you still have some time. 50+ seem more rare where I work.
But I'm a career switcher (waiter to software developer) who made the switch when I was 40, meaning I'm obviously against ageism.
Escape the bubble you're currently in and start thinking in a broader way.
I suspect the 'Top Mathematicians' are not those that are best at calculation, like you might get in Olympiads, but those which are able to apply maths to solve real world problems or produce creative breakthroughs. Being good enough at calculation very likely helps, but isn't sufficient.
I'm in a similar boat to you, and honestly, there is a vast spectrum of work involving programming, that covers competencies all the way from very non-STEM creative folk fiddling around with code to make something look prettier, to the darkest depths of AI frontiersmen tirelessly challenging the boundaries of mathematics.
All are valid. Do something meaningful to you.
What does that even mean? What is a "top programmer"? I suppose those competitions are about clever algorithms (Olympiads) and assembly languages (demo scene, CTF,...)?
Or are there new contests I don't know about? Like "Best framework designer", "Best refactorer", or my favorite: "Best porter of old fortran code to Rust".
I kind of feel that you are making this up. I couldn't tell you of a single child prodigy that won competitions and disappeared in their 30s, the field is barely old enough for this to be a thing.
I switched to being a sysadmin, but got bored of that after a couple of years too.
I know other people who've been able to keep their passion alive for decades. It depends on your personality.
My interests change too much for that, and doing something day after day after day for months or years on end just kills my interest in doing that thing.
Talent + motivation + time = success.
He’s now retired with an amazing career behind him in tech from Microsoft (white collar slavery he called it) to innovating online ticketing for a still going US airline.
The skill does not go away, but the will and energy to apply it, to start something new, does. But overall it's not too bad, maybe statistics are skewed to the very young because they need to start somewhere so they re more prolific by necessity, but it should plateau after taht very early period.
For the vast majority of programmers, programming just a regular job in companies that most people won't ever have heard of, in just the same way the majority of other jobs are.
It's na area where accumulated experience and technical knowledge matter a lot. Practice dominates over theory but you have to understand some nontrivial things too. All that favors older programmers.
As people grow older they have less time to devote themselves to singularly pursuing a goal (ie training for the olympiad). If you look at how people train for Olympiads, they spend an insane amount of time on it.
If you want to become better at math, read math. If you want to become a better programmer, study concepts and write code. No one can tell you how far you can go. Certainly not people on the internet who just read 5 lines of a post you made.
If you are 30, at 35 you will have a very good level. So there is still time. Even if you are 70, it's always time to invest in a new skill.
Programming in itself is a game for everyone and you’ll get better with time.
I've found programming is one of those disciplines that (often) doesn't feel like work to me .. and for that I'm eternally grateful.
There will always be someone who is 'better' than you.
The Quality, quantity, velocity, integrity, maintainability, and robustness of my work, these days, knocks almost everything I’ve done, in the past, into a cocked hat.
Make of that, what you will.
I don't see starting early as being an advantage, its not like golf or whatever. Curiosity will get you further than precociousness.
The answer is no. Do a 10 minutes google and you'll find your question discussed dozens of times with hundreds or thousands of counterfactuals.
Don't get hung up on people saying you can't do it because it didn't work for them.
I can conceptualize software is concrete terms, but I can't do that with math.
As you are older you simply have less free time.
You also usually have less to prove too which eats into your motivation.
I don't know about that, have you tried?
Dr. Knuth is 84 years young.
30? Seriously 30? Don't psyche yourself out.
That would be it for the Olympics vs capacities further in life.
If you look at the amount of programming, I really flew up after my 40's, when I started to code for pleasure. I am a much better developer than I was at 20, not only because of experience but also because of a different approach to code (that comes from, for a lack of better word, maturity)
My father started to extensively and successfully use computers (drawing, calculations) in his 60's.
The fact that you "missed your chance to be a kid prodigy" has nothing to do with your age. If you are in a country where education is of good quality you would have been selected (for Olympics for instance) when you were a kid. You were not and there must be a reason for that (I am not trying to be mean here - what I mean is that either you showed no interest at that age, or that the school was not caring enough, or whatever other reason - but this is over now)
TL;DR: if you are interested in programming, drop the philosophical part and get to coding.
I learned Basic in junior high or something from the appendix from some VTech computer for like a week, and was like "ok, cool", and then left it alone.m and forgot about it. I didn't get my first job programming until I was 27 or 28 and had only programmed in Maple and Matlab for math courses before that. Maybe one shitty class in Java.
If anything, software is an old person's game, similar to architects and movie directors. You need a lot of experience to get to a top level. Programming and software, on the whole, isn't remotely close to olympiads or programming competitions.
Also, people's fascination with child prodigies is pretty ridiculous, in my opinion. Child prodigies are people that get to places faster but don't necessarily go further, in that other people catch up and even surpass. It's pretty rare that a child prodigy continues to outperform everyone else later in life, just like it is for anyone to outperform others. There are some, like Terrance Tao, who continue dominating, but I'm pretty sure he would have gotten there anyway without an accelerated childhood education, and he's rare enough that it's dumb to compare yourself to people like him.
~20 years ago, I did OK in a computing olympiad (IOI). I'm going to be 37 soon. Generally speaking I think I'm a better programmer than when I was 20 years ago. What are we doing now? Most of my peers back then are now in FAANG. (Google is the most common one, I think.)
Starting early is definite an advantage, but the field is so broad and varied that there's a place for pretty much everyone (yes, even for those writing CRUD apps). Unless you limit yourself to the top tier competitive programming scene, in which case it might be a "young person's game" if only because for most people it's kind of boring to do it day-in-day-out, and if you want to stay competitive on the top tier you need a lot of practice.
But if you just want a meaningful job and career in programming-related fields, there's room for everybody. People who win Olympiads don't necessarily perform better as a software developer (statistically they're somewhat better, but you could say the same for any marker for general intelligence). I've met a lot of great programmers that had a variety of backgrounds, and whether somebody has won an Olympiad doesn't really make any difference.
The skillsets required to be a good programmer these days is multifaceted, and those math/algorithm things are just one small slice of the whole picture. I would even dispute the claim that "programming and math... require the same thinking techniques". I'm pretty comfortable discussing algorithms, but put a gun to my head and I wouldn't be able to prove Pythagoras' theorem.
Instead, most of my work involves thinking how to write code to be more readable (this is definitely not a math thing), designing effective APIs, evaluating new technologies and libraries (especially whether to "trust" them as a dependency), and a lot of debugging and communication. I rely on years of experience and domain knowledge to do these effectively, and I'd like to think I get better with more experience. And since these skills are multifaceted, they are complicated to evaluate in a linear fashion.
It's impossible to design a competition for general programming skills, especially those with a human or aesthetic element. So programming competitions generally restrict the domain to a very narrow slice of programming, and those tend to resemble maths. In practice, programming doesn't have to be similar to math at all.
There's also no real reason to want to be a "top" programmer or a "kid prodgy" (whatever that means). Despite recent layoffs, tech is still a huge field and generally still growing. You'd be doing quite well even if you're, say, merely the 10000th programmer in the world (assuming it's possible to rank people like this in the first place).
That said, if you're somehow fixated to the idea that you want to do competitive programming and become a "top" programmer, starting at 30 is a huge handicap. You're obviously ineligible for the high school and collegiate competitions, and most of the top talent in the open competitions have a background in those. Experience in those competitions itself is a huge edge, since you get to hone your skills in time management and learn your own strengths and weaknesses. There are particular styles of coding and programming tricks that you learn in competitive programming that has little use elsewhere. That said it's just a game. Most people at 30 grow tired of the game. That's why those "kid prodgies" drop out and pursue other interests.