When I was 20, I decided I was going to get 20 years of tech/business experience in 10 years. I'm under 35 today.
By age 30, I hoped to have the experience and talent of at least a 40 year old, but have my 30's to chase what I wanted.
I must ask though: I'm not sure what you're wanting to get from asking those questions. They're metrics but how you get to them, and why is more of the "how could I apply some skills to my life", measuring the metrics doesn't get you the results, let alone getting the result in a way that you would be happy with.
I'll share a bit of my story and if you like, feel free to ask, or contact me offline.
When I was 20, I had this habit of not thinking why I'd want to solve a problem, or a challenge, and just do it.
I decided on my 20 in 10 after the dot com crash as a hedge for a life in tech. Get ahead and stay ahead.
How I tied in my passion: I did my best to remember that no matter how reasonably talented I may have been with technology, I felt I wanted to learn about solving problems, and there's only one way to learn to swim, and it isn't by reading, watching, or talking about it.
I feel a deep kinship with focusing on solving problems by seeing them as puzzles. I don't care if the problem is small or big, they're all worthwhile and can make a big difference in someone's life to solve if you truly care about solving problems.
Today, I'm a full stack guy. While I've struggled to find a title the past 10 year that fits, I'm liking "full-stack", combined with one of system/software architect/integrator.
If you're trying to make something do something with hardware or software, I can figure out a proof of concept.
There was no map, or plan to get where I am, or where I'm headed, except solving problems, and puzzles. It's a wonderful compass, and your relationship with challenges and puzzles improves every time.
About 'highly paid because it's crappy work':
The work doesn't get any easier. You get better. At everything. Including your own attitude. If you don't it's easy to say it's boring or unfulfilling. Even greater challenges will await you in whatever you think is perfect, so you'll have to learn the same skills of pushing through to find learn and do what you need. As a byproduct sometimes you end up being that person who took 5 years to learn to recognize what you need to do in an hour.
Everything is crappy when it's either growing out of control, or it's a startup about to fail, or a unholy codebase. You will be guaranteed crap. There is no smooth sailing, ever. The sooner that kind of kool-aid goes out of circulation, the better. Your ability to deal with realities to make and leave it better is an important skill to always work on.
My journey so far has taken me through .NET and J2EE at the same time, and many other languages and frameworks. I am doing a lot of web and mobile stuff now, but I get to back it up with experience in hardware, networking, sys admin work, complex datacenter hosting of critical apps. Full cycle ERP (ie., SAP) installations. Custom middleware to speak between any combination of legal, workflow, shipping, accounting, logistics, retail, and beyond. The common pattern: writing web software to replace desktop software when it seemed unnatural, kind of how mobile-only apps get that feeling today.
Was it boring? Maybe if I wanted to complain that it was really hard. If it seemed like it at first, but then it became one big puzzle that no 20-something had any business doing. Now, I want to keep doing things that I have no business doing.
At a certain point, you can not abstract away the fact that it will take lots of work no matter how good and amazing the tools are. One thing gets easier, something new will pop up.
My expertise is being able to be thrown down any well and coming out time and time again. It attracts more wells. My specialty is pulling together a full-stack to solve what others can't seem to figure out.
Over time you do get known as someone who can solve things and you get hired for figuring things out -- not any particular language or technology you know.
The only skill I paid attention to learning was learning to take good care of my customers in their terms, not my lofty explanations trivializing them and their feelings. The first business model I was taught by a consultant who eventually handed most of his customers to me for web/app/IT development was this: Start with 10 customers who can pay you $1000/month, who are on the upswing, and grow with them by delivering more value than you're paid (help them grow and they spend more with you forever).
Sometimes, one or two customers made up way too much of my income and you learn to adjust it if it's important to you.
Thanks for this. I'm never sure whether my instinct of just treating people/clients well and keeping their interests at the forefront of my mind is yound/naive thinking or whether it pays off. Comments like this re-assure the latter is the case, and that indeed learning how to work with people and learning how to solve their problems is probably more important than most other things I can get good at as a technologist/developer.
this is probably the most worthwhile response in the whole tread. From running GroupTalent I have seen the most successful freelancers (those pulling in over $100/hr) do these things:
1- hitch themselves to great growing clients
2- put their clients feeling much ahead of their own
3- deliver value over and beyond what is expected
clients do not need highly paid (senior, architects, etc.) devs all the time but when they do, they need a v good one. So whatever rate they are paying is worth it.