Watch And Learn.
Early on in my programming career as a student; we worked on a system which was supposedly an intelligent system capable of striking a textual conversation with the end user. This was a small research project at the school level which won accolades at a few local news papers and received a little bit of attention.
The premise of this project was fairly simple. As far as human beings are concerned; most; at-least quite a bit of what we learn; is learnt by aping things. You know; the monkey-see-monkey-do way of learning and doing things.
With my limited reading on neuroscience back in school; little did I realize how wrong I was about the human brain and how it worked. Books like the Brain Rules will tell you that there is a whole lot of preprogrammed intelligence in the human brain besides just an ability to ape and learn stuff. But when you are a kid you do funny but really interesting things which keep you excited and in the flow. Things like trying to emulate the human brain with computer programs.
Having said that; the basic premise on which the system was built does hold true even today. The human brain; at-least a huge part of our brain; evolves by observing the things that happen around us; deducing our own reality out of what we observe and then aping the changed versions of that reality back into our lives whenever we need to or want to.
How do you become a great author?
By reading lots of good literature.
How do you become a great poet?
By reading lots of good poems.
How do you become a good builder?
Now; if you are a normal human being with a functional brain you probably answered instantaneously; - 'you do it by observing a lot of builders @ work'.
That right there was a live example of learning by aping logic based on the first question and using it to answer the third one. As human beings; we do this all the time and after weeks of observing genuine builders at work; one of the things that I've learnt is that the sooner you start observing genuine builders around you and the sooner you at-least start understanding what they are doing; the better off you will be; as a builder.
Steve Yegge uses his music learning experience to illustrate how can Practicing Programming by observing other programmers. He explains:
The saying "practice makes perfect" is inaccurate, as any music teacher will happily tell you. Perfect practice makes perfect. I'd been practicing sloppily, and had become very good at being sloppy. For one thing, I was tensed up, trying to force my fingers to make the right moves. So I only knew how to play tensed up, which exhausts you quickly. I was actually doing all sorts of things wrong, more than I'd ever have guessed, but the details aren't important. What's important is that I was thinking about it all wrong.
I knew that everyone said you should take lessons, but I had convinced myself that I didn't need them. I was actually a bit afraid to take lessons, because instructors were telling me I'd have to "forget everything I knew and start from scratch." That was a stupid way to attract new students! Nobody's going to want to throw away years of work. It was also incorrect: lots of the stuff I knew carried forward. Learning the proper technique turned out to be more like learning a new song than learning a new instrument. But at the time, I thought: "Screw that. I know how to play guitar. I'm happy with my playing, and I'm not going to change the way I play."
I hope you don't think this discussion is too far afield, because my attitude towards guitar lessons was identical to the way most programmers feel about their technical skills. "I'm already great at Perl, so I don't want to go back to the beginning and learn C, or assembly-language. I like the way I program." Or: "I'm great at Java, and I don't see any reason I should have to learn how to write scripts. I can get by just fine without them."
The thing is: I wasn't a great guitarist, and Perl-only folks aren't great at Perl. But you can't see that until you've done the hard work of learning what your instructors are telling you to learn.
Practice Drill #2: Make a list of programmers who you admire. Try to include some you work with, since you'll be borrowing them for some drills. Make one or two notes about things they seem to do well — things you wish you were better at.
Simply thinking about good programmers you know, and what makes them good, is good practice in itself. But we'll also use the results of this drill in some later drills.
Finally, there's music practice. There are sooo many types of practice. The common characteristic among them is that practice has to be habitual. Professional musicians develop daily and weekly practice habits that they keep up for their entire careers. Practice requires a recurring time commitment.
One type of practice is simply to go listen to other musicians play, as often as you can. You'll learn a lot just by watching and listening. The analogs in the programming world are watching other people program, and reading their code.
In his classic video on Attention and Sex; Scott Berkun; describes the same phenomenon and describes the importance of giving attention to how the masters of innovation give attention to things. If you have not seen the small five-to-seven-minute-video I highly recommend you do.
This book; in general and this series of posts about observing-and-understanding-genuine-builders in particular has been all about watching builders @ work and learning from them. If you want to learn the art of genuine innovation; including the craft of building stuff that is genuinely remarkable; you don't start by getting in a meeting room and thinking of a grand idea.
You start by paying close attention to every builder that you can lay your eyes on; every piece of information about every remarkable organization that you can find out there.
Then you study that information.
You squeeze out every practice; every fact and every approach to problem solving out of that information. You dissect that information and you spend a conscious bit of time and effort doing it. You do it consistently; every single day of your life.
Do that long enough and you will learn things that are bound to change your whole perspective of innovation and how stuff gets built in the real life. No; some of the best builders that you will be able to find don't succeed all the time. In fact; they fail early and they fail really often. Genuine builders don't spend a huge part of their lives in meeting rooms. Some of them even prefer to work at the middle of the night in just a towel.
Some of it; like being aware of how important consistency and patience is, when it comes to building stuff; will be learning that will prevent you from bailing out or quitting too early. It might even help you cross the dip and become the best in the world at whatever it is that you are trying to do.
Other facts; might just be a confirmation that you are on the right track.
Some; like knowing how builders hibernate; might just tell you where you are going wrong or how you can fix it.
Whatever be the case; once you are done with this post and before you move on with your life; consider this --- if there is one thing that you take back from this book and this section in particular; it is that when you see a genuine builder around you who is getting things done; you need to stop whatever it is that you are doing as a 'manager' and you need to observe the guy.
See him work.
I wish you good luck.
Note: This article is a part of a Work In Progress Book. To Read connected articles read the Builders At Work category of this blog..