I want to become an expert at a specific technology but I'm wondering what's better...<p>Working on greenfield projects withe the latest tech or maintaining legacy products<p>For example should I learn and master ASP.net completely and find jobs there or should I learn the latest javascript framework and find jobs there.<p>Which path would give more satisfaction and job security and money?
In your example I believe that complete mastery of ASP.net and strong competency in the adjacent pieces of the MS stack would probably generate the best job security. This stack is used in many medium size businesses all throughout the US, including many with cheaper cost of living than the Bay area. However, you need to be comfortable knowing that you will work mostly on CRUD type applications that power so many business processes.<p>The bleeding edge is much more interesting but also carries much higher risk and potential reward. You may find yourself expert in something that was technically very interesting but the timing is wrong or the specific tech fades quickly. So failure mode has you learning and relearning the latest frameworks trying to stay hip and potentially changing jobs frequently. On the other hand, success out on the bleeding edge might but you in an equity position in a start-up that turns into a unicorn.<p>I gravitated more toward the fringe and have built some cool tech but the start-ups and projects never reached market success and so I often reflect that had I picked more standard problems and tech and become expert in those I would have very high consulting rates today and plenty of work. As it is I have moderately high rates but I don't quite fit into people's mold and it is somewhat harder to stay busy with billable hours.<p>In the end you also have to live with yourself intellectually and emotionally. So although my more fringe focus hasn't yielded the best economic ROI - I have mostly enjoyed the choices and outcomes for my own life.
If you ever want to truly be held as an expert, you should be doing what you _enjoy_ most. Not for money, not for job security. Purely enjoyment.<p>The rest will follow.
What kind of job are you looking for? It depends what you want to do. If you're applying for existing companies seeking certain skills that's one thing, but if you're contracting for non-technical clients they don't care what technology you use as long as you deliver a solution on time and do it well.<p>Personally, I think once you have enough experience you should be able to easily pick up new frameworks. I don't understand developers who try to define themselves by a single language or a single framework. You should be trying to pick the best tools available and learn as you go when required. You might be safe for a couple of years sticking to one thing but the industry is constantly changing so you should have a diverse skillset and always be learning.