This article can be summed up by point 1 of George Leonard's keys to Mastery, or Getting Good at Anything. All 5 major points are as follows:
1. Find good instruction. (Read good code, find a good programmer)
2. Love to practice. (Write code.)
3. Have the beginner's mindset. (Don't get cocky, observe with new eyes.)
4. Have a vision / goal. (You want to be an architect? Graphics guru? AI master?)
5. Push the boundaries. (Code beyond your perceived "abilities".)
A more succint and general version of that quote is by TS Elliot: Talent copies; genius steals!
Per the "read code" suggestion, I often come up with excuses to browse through the Linux kernel code: http://lxr.linux.no/linux
It's clean, discoverable and it does interesting things. Although it might help to first go through a book like Understanding the Linux Kernel: http://oreilly.com/catalog/9780596005658/
Since the author of this post is Jeremy Allison, a major Samba contributor, I also suggest reading the Samba code. I've been working with it, and have found it clean and well-structured. A great example of how to write a networked filesystem.
As for your suggestion on reading Understanding the Linux Kernel, is it readable even if I haven't taken a course on Operating Systems or something equivalent?
Probably not. It's a walkthrough of how the Linux kernel is implemented, both in terms of design ideas and the code itself. They assume you already know operating systems basics.
I could be wrong, as I've also never read it cover-to-cover; I always dive into it when I specific questions about how things work. I've never read it from the perspective of how well it teaches OS concepts. But if you're interested, and you think you will remain interested in the future, then there's no harm in getting the book now. As you learn more, you'll be able to understand more.
1. Find good instruction. (Read good code, find a good programmer) 2. Love to practice. (Write code.) 3. Have the beginner's mindset. (Don't get cocky, observe with new eyes.) 4. Have a vision / goal. (You want to be an architect? Graphics guru? AI master?) 5. Push the boundaries. (Code beyond your perceived "abilities".)
A more succint and general version of that quote is by TS Elliot: Talent copies; genius steals!
Anyway good read!