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!








Posted by Dantelope on July 2, 2007 at 4:25 pm
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 on2) 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.Dan
Posted by Ricky Clarkson on July 2, 2007 at 4:58 pm
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.
Posted by arsenalist on July 3, 2007 at 11:41 am
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.
Posted by Matt Stine on July 3, 2007 at 12:48 pm
Thanks for the suggestions!