I remembered a conversation with Dr. Brooks several months ago.
I often have these moments where some thing occurs, I reflect on it and try to synthesize what I can learn from that experience, came to a conclusion and realize that somebody else has taught me that “conclusion” in the past. I think of that as “the real-ization of a tru-ism” (dashes intentional).
Anyway, I asked him “When you enter a new domain, how do you learn everything about the domain as fast as possible?”
He said “You observe what other people in the same position as you do, and you ask them why they do what they do. And listen. Always listen to people. That is very important. They may not know the real reasons or the most effective ways of doing things but if you ask enough people and you can do your own induction.
And always work on something. You can read a textbook but you only really get what the book says if you actually try to implement it yourself.”*
Several months later, I realized that that I could have saved myself a lot of time if I had actually just asked some of the people that I encountered in classes/work why they implement certain projects the way they did, why the homework for a particular course is structured the way it is (i.e. how it is applicable to the real world), how and why some people in the lab gather information about what to do with their projects (hint: it’s not from what’s in the textbooks).
I think that the software analog of this (assuming that you don’t have the opportunity to consult an experienced developer) would be looking code examples. However, I think that reading textbooks first, in this case, would be useful because the textbooks often explain why a software is implemented the way it is. The next step would be reading the documentation. Reading code examples should be last but is important if there are no textbooks available and the documentation is sparse on why.
* Quote is not verbatim. It is entirely conjured from my potentially faulty memory and is only used for my personal edification. 🙂