Help me become a better programmer!

I have decided to embark upon a quest to become a better programmer. I would really like to improve my understanding of the computer science that underlies my day-to-day tasks, particularly as it relates to programming language design as well as algorithm design and complexity analysis. I would also like to improve my analytical and problem solving skills. I've found that I'm really good at learning new technologies and quickly bringing them to bear on web application development problems, but take me out of that problem space and I get nervous rather quickly.

Who has ideas about the best way to go about this? Please comment!


Dantelope said...

Could this be a more open-ended question?

You know the old saying -- ask a ____ question, get a ____ answer.

So, here's some advice.

1) Read more. Read books on whatever subject you're trying to improve on

2) Do more. Write stuff. Lots of stuff. Take an idea and try to design and implement it. Break stuff. Take other people's stuff and work with it (look to sourceforge or a similar site).

The problem is... there are already too many good "programmers" out there, but not enough intelligent developers. You want to be a better programmer... but really, you should be looking at architecture and higher-level design. Low-level programming is, in my opinion, an artifact of seeing the bigger picture first, and the minute details after.

My $0.02. Probably worth about $0.000001 in your neck of the woods.


Ricky Clarkson said...

Learn Haskell and Lisp. I might add Erlang to that when I've taken a more serious look at it.

Find a mentor, or at least someone to run code by.

Work on something you find interesting.

I need to follow my own advice on these latter two.

arsenalist said...

Learn design patterns, understand why they exist and learn to recognize when one might be applicable to what you're trying to do.

They're created by smart people to solve common problems the "correct way". I think a good understanding of them is a must for any developer.

Matt Stine said...

Thanks for the suggestions!