Hello HN,
I have been working as a Software Engineer for a few years and have worked at a variety of companies (big, medium, small) and it was fun working as a Software Engineer writing code and building systems. However, lately, I have started thinking about where to go next. Writing code is fun, however, as the technology changes, I feel that anybody could just learn a new programming language/ technology of the year.
How could one grow as a Software Engineer and continue to differentiate oneself from the rest of the pack ?
What has your career progression been ? What could be a logical next step for a Software Engineer with a few years of experience ?
For me, I think as this point is to decide whether I should go for breath or depth, explore or exploit - to be a generalist or a domain expert so to speak. Both are hard, and you really have to work at it.
As you have said, technology changes every 6 months or so, it's almost impossible to catch up with the pace of the tech world. After awhile you will realize that chasing after the hottest technology is a futile pursuit. I think eventually, after sufficient exploration of a landscape, you will have to choose a couple of interestes and become a domain experts in them. You can't be a 1 trick pony because that trick will not always be in high demand, but you can't be a jack of all trades and master of none as well. So pick a couple areas and concentrate on them is my best advice. If you are a Web developer, and you like it, then be good at it. Learn all the latest and greatest tricks on HTML5/CSS/JS, hell, learn how the browsers process rendering so next time you are stuck with a UI bug, you can use a theoretical framework to debug it, instead by going through the drudgery of trial and error every time. If you are into programming languages, take Peter Norvig's advice of learning how to program in 10 years. Learn all a handful of languages that are representative of different paradigms and be enlightened. If you are into systems or networking, brush up on your ninja C skills and write some messaging servers and clients. Join some open source projects that you are interested in.