As an 18 year old, I’ve learned so much in the past few years about developing good software it’s mind-boggling. I can’t imagine what 10, 15, 20 years of experience would look like.
What you learn over those years is incredibly helpful, as it takes a lot of breadth/depth and time. But the rate at which you learn things goes down.
Similar to learning a foreign language. At first you are learning new words everyday. At some point, you know all the common words, so learning new words is impossible at the same rate as before.
Congratulations on having already couple of years of experience at your age. I've been on the same boat 10 years ago.
As for 10, 15, 20 years of experience: As long as you make sure it's actual 10 years instead of 1 year repeated 10 times you mostly gain awareness and intuition for engineering on a higher level of abstraction as well as the place of technology in a broader business context.
Ruby, Django, MVC, Elixir, TS, React, Vue, functional programming, immutability... specific things, tools, technologies, approaches are becoming less important. The experience is getting transferable and you learn when it makes sense to code the Rails way in Django.
Slowly "I'm going to learn React/Vue so I can do front-end" will become "I have to do front-end so I'm going to use React/Vue". When choosing technology you'll realize that the "job" in "finding the best for the job" is not just delivering the solution. It's making sure the solution is easily maintainable for years. In that timescale stack homogeneity, hiring strategy etc sometimes become even more important than the tech fit. You might think serverless is the way to go for your new task. But is it really worth to introduce go lambdas to the system when you already have 20 ruby devs?
I recommend early switch from "I'm an engineer, let me know what to code" to "I'm here to grow the product/business, let me see what I can do". No one pays for delivering code, companies pay to to solve business problems. The problems you solve don't have to be contained to those that come with your job description and the solutions doesn't have involve technology. No matter the aspect of the inner workings of a company (or life in general), everything can always be improved. Identify the things, suggest/provide solutions and you'll be both satisfied and rewarded.
You learn how to deal with people, developing taste and instincts about problems and approaches, and have the time to deep dive into a few specialized areas.
When I was 18 I was coding C and learning Perl. I was writing scripts to build my website from a bunch of text files, ordered by their creation date from most recent. I was hacking on BBS door games and getting into MUDs. I didn't know what was impossible or hard. I just threw myself into anything and believed that I was unique, working on the frontier, that I was part of something.
As I became older I started to get smarter. I realized that most things have been done before and that progress came in small increments. In waves I came crashing upon the shores of self-doubt; each successive tide washing away hubris and pride, leaving behind the rocks and sand. I realized how little I knew.
I don't think we become fossils. Erosion moves the shores and the process changes us, our shape, and our character. What we value may change. What skills we need to achieve our goals becomes apparent. What knowledge and ways of thinking are ultimately valuable prove themselves with time.
Youth is an important time in our life. The hubris and arrogance are useful to us in that phase. But age doesn't ossify us or make us irrelevant. We don't crystallize and become lost in time. You don't wander over some precipice and become, "too old."
That's the great lie told to youth. It's a great time in your life but it's not "the best time in your life." Who knows what will come next?
I look back on some of the code I wrote in my youth, my writing, my thoughts... I'm much different now. I'm satisfied with how I've progressed in most areas and feel like I could use some work in others. Life isn't over until it's over. Some people get their PhD's in their 50's. Some people do their best work early in life. It's not over until it's over.
So enjoy it!
update: ultimately the timeless stuff tends to be the less trendy stuff: maths. learning how to think abstractly in precise terms goes a lot farther than learning a particular framework or technology. People skills: how to get people to work together on problems. Business skills: how your work fits in the broader context of society and the economy. All of these things are topics that can go deeeeeeeeeeeep. It takes time to learn all of this stuff. The worst thing is realizing that you won't live long enough to dive into it all.
What you learn over those years is incredibly helpful, as it takes a lot of breadth/depth and time. But the rate at which you learn things goes down. Similar to learning a foreign language. At first you are learning new words everyday. At some point, you know all the common words, so learning new words is impossible at the same rate as before.