Good advice for any programmer

Came across this gem on hackernews the other day and thought it would be a good idea to keep it at hand for myself and for my daughter when she grows up. While it was originally meant for a budding programmer, I think it is more generally applicable to any aspiring learners in any field of study.

  1. Keep practicing. Practice makes perfect. Explore different languages, frameworks, and problem spaces (interfaces, servers, distributed systems, statistics, etc.) to see what you find most interesting. You will make mistakes, and that is okay. That is how you learn.

  2. Take frequent breaks. Programming is hard work. It can be truly exhausting, and you should not be afraid to step away and go for a walk or something.

  3. The most valuable people in the industry are called “T”s. i.e. people with a little bit of knowledge/experience across broad range of topics (the horizontal part of the letter T), but who have deep knowledge/experience in one or a couple particular topics (the vertical shaft of the letter T).

  4. Begin to develop the skill of taking feedback and accepting criticism. There’s a lot of people out there who will be quick to criticize everything you do if you put it out into the open. It’s a whole skill in itself to be able to interpret this feedback and separate the signal from the noise. Try to empathize with the person or group providing feedback and understand that their motives/perspective may be different from yours. Sometimes that’s a useful thing. Sometimes it’s a distraction.

  5. Don’t take things too personally. You are not your code. A criticism of your code is not a criticism of your character. The less you take things personally, the easier it is to work with others. After all, the most impressive systems require immense collaboration.

  6. Don’t take yourself too seriously. Have some fun with it! Programming is super fun, so you should ask yourself regularly “am I still having fun?”. If the answer is “No”, maybe find something else interesting to focus on for a bit.

  7. Broaden your perspective. Along the lines of #1 and #2, it’s important to maintain a broad perspective and push yourself to keep expanding your perspective. This doesn’t just apply to technical problem areas or languages or frameworks. The best engineers are good problem solvers because they have a broad perspective not just of the problem space but also more generally of the world they inhabit. Try to learn about different industries, cultures, people, and places. You will become a more well-rounded character for doing so, with a higher ability to empathize with others and understand the complex mechanics of how the world works.

  8. Be social. I made the mistake of hiding in my room on a computer for much of my childhood, and it wasn’t until high school that I really began to understand the value of social interaction and maintaining strong solid friendships. It’s as important to spend time away from the computer as it is to keep practicing.