Ask HN: What specific techniques do you use to improve as a programmer?

15 points by willthefirst ↗ HN
How do you all make an effort to learn and avoid repeating coding errors? I'm thinking about starting a running document where I will catalogue things that I get stuck on and how I overcome them, in an effort to crystallize new knowledge and logical thinking.

How do you get better?

6 comments

[ 3.3 ms ] story [ 29.8 ms ] thread
Practice, feedback, practice, feedback, ..repeat..
As beobab said, code, debug, feedback, rinse and repeat

Other resources that were helpful for me as well

Books:

  - SICP (http://mitpress.mit.edu/sicp/full-text/book/book.html)
  - The Pragmatic Programmer: From Journeyman to Master
Courses:

  - Almost all udacity CS classes 
  - SaaS courses at edx.org
  - Scala course and most CS courses in coursera
Open source:

  - browse most popular OS projects on GH, and try to contribute
  - create your own open source project, and get feedback / pull requests
Q&A sites:

  - Stackoverflow
  - http://codereview.stackexchange.com
and of course most coding related articles here on HN

edit: SICP has an online course at MIT OCW:

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

it might cover a lot of things you know, but I think it's a must have for every developer out there.

1. Sharpen your saw. Keep learning new technologies and programming methodologies.

2. Make an effort to use what you have learned from past experiences to write better code in terms of usability, efficiency, readability, maintainability, etc.

3. Read Code(good ones). Sometimes, looking at other people's code allows you to have a fresh perspective about coding style.

4. Contribute to open source. It will help you immensely in understanding what it takes to write code that others can read and maintain.

5. Help others on sites like stackexchange.

Learn a new (people) language to shore up your propositional calculus skills. If you're a native Germanic (English) language speaker, learn an Altaic one (like Japanese for example) and vice versa. It has certainly helped me write elegant code. Code isn't just code, its a mindset and approach with a lot of room for creativity.
1. Learn more languages and technologies.

2. Create new projects as often as possible.

There is no shortcut to get better. You have to write software. Write, write and write again.

Take part in different kind of apps. Small web apps, big and complex web apps, simple mobile apps or more complex mobile apps. Each of these will teach you on how to think and organize your work. Try learning different programming languages for example Clojure, python, ruby, javascript, C#, java and haskell. You don't need become an expert but each language will teach you a different way to tackle problems. Another thing that I've found useful is looking at other people's code. Github and the thousands open source projects there, make this super easy. Learn what you should do and what you should not.