Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How to grow as a Software Engineer?
12 points by f2ender on Jan 25, 2011 | hide | past | favorite | 10 comments
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 ?




Depends on what your goals are. I'm like you, have a couple years of experience as a software engineer. Looking back, I think I have definitely improved a lot over the years since I've graduated, but seems stuck in a void that is between a junior programmer and an expert programmer.

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.


Hmm, logical next step for someone with a few years of experience - it's very difficult to say. What has your experience been in ? The points you mention are very generic so it's quite hard to respond :). However the general logical next step for a software engineer is to become a better software engineer and to learn to work in teams more effectively. Perhaps take up end to end ownership of larger systems.


The best way to grow as a software engineer is to build or create new things. A Website or an application. Work on open source projects. Keep experimenting!


Quit your job.

Find freelance work or join a startup.

Seek out programmers that are better than you.


First question is: what books are you reading?


I have a CS degree so I have read the basic texts on Algorithms, Operating Systems, Compilers.

I 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.


I think that, in most cases, regular expressions will do you more good as a tool than Go will. I have not read Mastering Regular Expressions, but due to their ubiquity, they have probably led to a 5% increase in my productivity as a software engineer. I highly doubt that Go will do that for you except in some very rare cases.


Have you considered reading some software engineering classics as well?

Code Complete, Rapid Development, The Mythical Man-Month, The Pragmatic Programmer, Peopleware and A Discipline for Software Engineering? (The last one is controversial).


I have read Peopleware. I was thinking about getting The Pragmatic Programmer next. I somehow feel that just reading books without doing anything with the knowledge doesn't work.

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.


I think we're on different pages. The books I recommended aren't API, framework, language, CS kinds of books. They're books which discuss being a software engineer.

Are they immediately applicable? Sometimes. Are they applicable for the rest of your career? Definitely.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: