Re:Ask HN: How Do I Become A 'Good' Programmer... Like Every...
by gman129 on Tuesday June 24, 2014 @05:45PM
(#7940857)
Great response Igor. This is pretty much how i try to stay up to date. The thing i find frustrating is when you finally become really good at technology often there is already a new out there which you are totally clueless in and feel like you are back to being a junior.
Being a programmer for an average intelligent person feels like you are constantly chasing your own tail...
Re:Ask HN: How Do I Become A 'Good' Programmer... Like Every...
by IgorPartola on Tuesday June 24, 2014 @05:55PM
(#7940911)
I hear you. There will always be new and exciting technologies that will be developed that will supersede what you've been using. However, remember that not every technology is going to "stick". Instead of trying to chase down the latest and greatest, try to evaluate whether it's an actual improvement over how you've been doing things. For example, I recently learned Angular. It is a great framework and I like how it works. A competing framework, KnockoutJS, is not as good. I learned just enough of it to see that it's not an improvement.
Basically, focus on getting things done and building things. If a part of what you are building seems like too much work, someone probably has already built a solution for that. Otherwise, don't worry about using the absolute cutting edge stuff. At one point there was a tongue in cheek saying that "it would take more time to evaluate the popular JavaScript frameworks than to write a new one" (or some such). It still holds today, so don't sweat the name of the tech and stick to the stuff that you can be productive with.
Once you have picked your definition of "good programmer" (your goal), write out a map of stuff you do and do not know. For example, I am a full stack developer, but I don't yet know CoffeeScript. It would probably be a good addition to my toolset as I do a fair amount of JavaScript programming for the frontend. Having this map will help you fill in the blanks of technologies and concepts you are missing. Take your time and learn these slowly, usually as a part of a project, and not just an exercise. As you learn, adjust your map. You will inevitably come across stuff you did not know existed or was important.
Remember, it's easy to run in many directions at once with this approach. Don't do that. If you already know Ruby, don't go learning Python (and vice versa). They fulfill a very similar role. Instead go learn how HTTP works. Or how to work with a different data store you haven't used before. Or how to use a frontend JavaScript framework. Or go learn C.
Here's my recommendation learning technologies to become a full stack developer (in order, when starting from scratch): HTML/CSS, Python, Django, PostgreSQL, JavaScript + jQuery, AngularJS, HTTP, networks/socket programming, C + data structures and basic algorithms, functioning of operating systems (libraries vs syscalls, toy operating systems), compilers (build a toy one), Lisp, Haskell, Erlang, networking again but this time thinking about distributed systems.
Good luck!