Programming is a skill, which means that learning programming
languages and techniques is not as simple as accumulating facts.
No written guide to programming, no matter how thorough, will ever be
sufficient because there are countless details which have to be left
out, details which you can only assimilate while engaging in the
practice of programming.
No one would suggest that you could become a world-class singer by
merely going through a book on the subject. With these physical
skills, it's obvious that learning involves doing something other than
just absorbing knowledge. I think that, with programming, its nature
as a skill is often overlooked because it's knowledge work. The key
thing to keep in mind is that you must actually do programming in
order to learn languages and techniques.
In Matt's case, he was also trying to develop a new habit - using TDD.
Many aspects of programming are like this. Perhaps you want to start
documenting your code more or you want to start doing daily standup
with your team or _whatever_. These are all habits, some involving
just you and some involving your team or organization. Recognizing
them as habits will allow you to apply techniques for successfully
developing a new habit.
No one would suggest that you could become a world-class singer by merely going through a book on the subject. With these physical skills, it's obvious that learning involves doing something other than just absorbing knowledge. I think that, with programming, its nature as a skill is often overlooked because it's knowledge work. The key thing to keep in mind is that you must actually do programming in order to learn languages and techniques.
In Matt's case, he was also trying to develop a new habit - using TDD. Many aspects of programming are like this. Perhaps you want to start documenting your code more or you want to start doing daily standup with your team or _whatever_. These are all habits, some involving just you and some involving your team or organization. Recognizing them as habits will allow you to apply techniques for successfully developing a new habit.