

Ask HN: How to grow as a Software Engineer? - f2ender

Hello HN,<p>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.<p>How could one grow as a Software Engineer and continue to differentiate oneself from the rest of the pack ?<p>What has your career progression been ? What could be a logical next step for a Software Engineer with a few years of experience ?
======
wyuenho
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.

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

------
PankajGhosh
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!

------
awolf
Quit your job.

Find freelance work or join a startup.

Seek out programmers that are better than you.

------
jacques_chester
First question is: what books are you reading?

~~~
f2ender
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.

~~~
jacques_chester
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).

~~~
f2ender
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.

~~~
jacques_chester
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.

