Ask HN: How did you become a good developer?

4 points by noxToken ↗ HN
TL;DR: I don't know how I got to where I am with what I have done, so I want to know what some of you folk do/did to become master of your domain.

A coworker shot me a message the other day asking how I became a "good" programmer. I don't believe I am that good - mostly average. A couple of areas slightly above average with other areas below average to counterbalance. So I tried to recount my academic, personal, and professional history. Turns out that I am very mediocre on paper, so I tried to walk him through some of the techniques I use. This is an abbreviated list of the things said in that coversation:

I keep reference books about design patterns and language quirks handy while making sure to never shoehorn them in. If it fits, use it. If it doesn't - that's fine. Not everything fits squarely into the GoF design patterns.

Use static analysis tools to look for potential hotspots, and learn why the tool would flag that snippet as a hotspot in the first place.

I don't do any serious fiddling with katas and code challenge sites unless it's exploratory. Find real-world applications instead.

I don't commit building algorithms to memory. Learn the properties, complexities and reasons for use of an algorithm. Someone has already written a bug-free version of it. Just Import it.

Also, don't be afraid to challenge the validity of a library or the code base. They were created by humans capable of screwing up. It's tough reading unfamiliar code, but it becomes significantly easier when you already know the code's intent.

Stop chasing frameworks, and start creating the most stable foundation you can. Most frameworks are templates for building and abstractions for things that have already been done plus configurable customization. Invest time in the techniques that power those frameworks. Learn how to build a single-page app without Angular, and then leverage Angular as a tool to develop instead of a crutch.

3 comments

[ 3.0 ms ] story [ 19.4 ms ] thread
For me it's practice - I've been at it for 35 years so that helps but I think there are a few key points:

- Cover the spectrum from low level, HW oriented stuff all the way up to highly abstract systems

- Don't obsess about the latest technology but be open to change

- Learn from mistakes, every time something goes wrong I step back and spend whatever time it takes to really figure out why I did what I did

- Teach others what you think you know, the best way to really deepen your understanding

Write more code, solve the problems you are passionate about in the best way you can think of; lather, rinse & repeat. Public opinion will always represent the lowest common denominator, it couldn't be otherwise. It's not about proving who's smartest or has the most impressive CV; it's about tapping into the source of who you are and what you want to create.
Tens of Thousands of lines of code. Repeat.