back

by ofalkaed·3y ago·view on hn ↗
For me the most productive method has been to have a project, pick a language, get a introductory book for that language and dig in. Start working through the book and doing the exercises and immediately apply what I learn to that project. Making progress on my project how ever small or poorly executed it may be helps greatly in advancing and as I progress I find it gives a much more clear understanding of the more advanced ideas since I see them in context of a real application and not just as idealized text book examples.

I supplement this with reading a more advanced book which I understand little of and do not worry about understanding or applying, I find it helps keeps my mind engaged while working through banal exercises.

I have also found putting in the time to understand the long pedantic conversations/arguments some people have in various online forums to be quite valuable, they tend to be about nuances/minutiae of the language and this is something which books and the like fail to teach. This is actually what brought me to HN, when it comes to long seemingly pointless pedantry about code I have found no where better and I have learned a great deal from it.

1 comments
What book and project did you start with?
I guess what got me started was bash, the bash man page, and limited options. I had no internet, my wifi card died right after reinstalling the system (money was too tight at that time for a new card) so I had no way to install anything beyond the basic stuff which came with slackware. I wanted to make music so I started to experiment with using bash scripts and SOX to make music. The results were not great but I learned a good deal and it got me interested in the possibilities so I got a copy of 'Programming: Principles and Practice Using C++' since most audio applications seemed to use C++ and there would be a great deal of code to learn from. During that time I also learned a few audio DSLs, enough of a handful of languages that I could hack code I found to make it do what I wanted it to and can sort of figure out most modern languages. Most importantly I learned how to learn, or at least how I learn. Now I am onto lisp, have a rather complex program I want to build and am reading 'Practical Common Lisp,' 'On Lisp,' and 'Lisp in Small Pieces.'

Probably the most valuable aspect of having a project to work on as you learn is it allows you to ask much more useful questions. When you ask a text book question you get text book answers by people who want the upvote, when you ask a question about an issue with the program you are writing you get dozens of varied answers and the people who respond are more likely to actually engage with you and help you learn/complete your project.