It's pointless to do this, because the computing world changes on a timescale much shorter than 10 years.

I started my career in 2000 at the tail end of the first dot-com boom. When I started, Java was the hot new language to learn - but not for J2EE or any of the enterprise stuff, servlets had just been invented a couple months before. No, you used Java to write little applets on web pages, or if you were really cutting edge, to write Swing UIs that could run on Windows, Mac, and UNIX (which meant Solaris as much as Linux in those days). "Programming" was synonymous with "Windows desktop programming", at least as a growth industry (there were still mainframe programmers & embedded systems off in established companies, but the common discourse in the tech world ignored them because you could make more money with less training jumping on the latest hype train). There was none of this sub-specialization into frontend devs, mobile devs, backend devs, data-scientists, devops, SRE, etc: you just did everything necessary to write the product.

Toward the end of my gap-year, I told my boss "I want to learn COM", because I was running into the limitations of what Java could do. His response was "Why bother? By the time you graduate from college, it will be obsolete." This was fractally right - not only had COM been replaced by .NET and C++ by C#, but desktop apps had largely been replaced by webapps, and programming in general was moving to the server.

I did end up advancing throughout my career - I doubled my salary with every new job I took, and then it kept doubling every 2 years or so. But the way that this happened was completely unpredictable and involved seizing opportunities that just happened to land in my lap. I ended up at Google; for many people Google is the dream job that they spend their whole life going after, but for me it was the consolation prize for a failed startup. I thought I would leave Google after a year, but I stayed more than 5 because each time I debated leaving, I looked at the opportunities available to me inside the company and thought they were more exciting than the ones I saw outside of the company. And then one day, I looked around at the opportunities inside the company and couldn't find one that seemed more interesting than the opportunities outside, and so I left.

If I had to give advice on milestones: it'd be this: ship. And much more frequently than every 2 years; try not to go more than 3-6 months without producing something tangible that you can point to and say "I built that". If you're not at an organization that can do that, move. Finish your project unless it's totally apparent to everyone that the project is ill-conceived or apparent.

And don't be afraid to abandon your life goals & milestones if an opportunity comes along out of nowhere that seems really, really exciting. The biggest successes of my career (getting into software in the first place, switching to webapps in 2006, joining Google in 2009...and not quite career-related, but marrying my wife) have been because I was willing to abandon my life plans and go after an opportunity that wasn't what I had in mind, but seemed really good regardless. And my biggest failure (saying no to Dropbox when they had closed their seed round a week before and were just Drew, Arash, and Aston) was because I had a plan and what seemed like obligations to finish it, and so I didn't even consider the opportunity.