Ask HN: How to grow as a Software Engineer?
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 ?
10 comments
[ 3.5 ms ] story [ 31.2 ms ] threadI recently got through the Design Patterns book. I was thinking of picking up either a new language (Go) or start the "Mastering Regular Expressions" book, not sure which.
Code Complete, Rapid Development, The Mythical Man-Month, The Pragmatic Programmer, Peopleware and A Discipline for Software Engineering? (The last one is controversial).
The books I enjoyed the most were Richard Stevens' Network Programming and Unix Programming books. Those books teach you a ton of things while helping you implement something useful. They were very hands on. I haven't been able to find anything similar in a long while.
Are they immediately applicable? Sometimes. Are they applicable for the rest of your career? Definitely.
Find freelance work or join a startup.
Seek out programmers that are better than you.
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.