Ask HN: Learning to Program...
Any help would be much appreciated.
Any help would be much appreciated.
To get better at programming, you need to do more than learn to program (languages, semantics, frameworks, etc.): you need to learn to think link a programmer. In this, there aren't many shortcuts: it requires study and practice.
Here are some great subjects to look into to get him started:
- design patterns (http://en.wikipedia.org/wiki/Design_Patterns)
- functional programming (although this is language agnostic, I personally would suggest working through "Scala by example" http://www.scala-lang.org/sites/default/files/linuxsoft_arch...)
- meta-programming (here are some videos--with free samples--on metaprogramming in Ruby http://pragprog.com/screencasts/v-dtrubyom/the-ruby-object-m...)
- algorithms
- compilers ("the dragon book" http://www.amazon.com/dp/0321486811/?tag=stackoverfl08-20)
- testing (unit, functional, integration, etc.)
One thing that will probably help him advance a LOT is learning a language that does things completely differently than the one he's using. If he'd like to try that, this book looks good (haven't used it myself but the choice of languages is pretty good): http://pragprog.com/titles/btlang/seven-languages-in-seven-w...
Also, there are some great books on this list: http://stackoverflow.com/questions/1711/what-is-the-single-m...
I'm sure there's a lot more to be said on the subject, but that's a start off the top of my head. What he should start looking into really depends on his specific weaknesses and/or preferences.
To learn to code, (s)he needs to code. Lots of deliberate practice coding on projects that pushes his/her boundaries.
Found this couple of days ago here on HN. Hope this helps.