I came across this piece by Joel, where he says ”It’s harder to read code than to write it”.
PERFECT. Atleast my programming experience matches with what he says. On the other hand, I do not interpret it as ’so just stop reading code and do something else’. If you have to do real programming, you have to spend time ’understanding’ already written code.
Now, the deeper reasons for why it could be hard to read code could be:
Here I have found my detective utilities (here , here) very handy. It eliminates the futility of reading code as it helps me ’understand’ code relevant to the feature I am working upon as it provides:
With the information provided by detective, I can explain the code in business terms to someone else while pointing to function names. Thats it. I have learnt the lesson the hard way.
So if Joel says ”Its harder to read code than to write it.”, we now have a corallary:
”Never read code without contextual information.”
I have 3 Seagate GoFlex drives as described below.
My Macbook Pro has one Firwire 800 port, one Firewire 400 port, 2 USB 2.0 ports. But as you can see above, the Seagate portable 1 TB drive comes with a USB 3.0 interface. I can as well connect it to a USB 2.0 port but that would be a sheer waste. Further despite all permutations and combinations, I can at the most end up with only one free USB 2.0 port. But I also have an express card slot and I can easily add two USB 3.0 ports using an express card such as this one by Sonnet. Finally I decided to go with the following configuration.
I ordered the Sonnet express card through SYW and when it arrived I installed the driver as per the instructions, restarted my Mac, connected the two USB 3.0 drives, but the drives were not recognized. The LEDs on the two drives were blinking. A bit of investigation showed me that the express card would need an external power supply if the power drawn by the USB device(s) is more than what the card can provide. This was also verifed when I looked at the key features on the overview page of the Sonnet Express card.
I then connected an external +5V 3.5mm power supply and bingo the drives were up and running. So if you have such an express card and have connected devices that do not seem to work, check out the power requirements. With this setup not only do I get higher speeds for my external drives, but I also have freed up 2 USB 2.0 ports on the laptop. Very useful.
I have discovered that I used to over estimate the value that books bring to the table, whenever I have tried to learn a new skill or a new tool.
I think that could be beacause in reality I would learn something new to not just learn it, but to apply it somewhere. Such (valid) applications of any skill or tool are potentially infinite. As no book can cover all potential applications or usage of a skill or a tool, I would come unstuck when applying the knowledge gained. With experience, I have now changed my method of using books.
The first part I use a book for is to gain a conceptual understanding of the skill or the tool and for such an understanding, I have found it is unnecessary to deep dive  into the book working my way systematically through it. 
The second and most important part is I then choose to work upon an application of the skill or tool I have selected to learn, while using a book as one of the tools in the process. By doing that I am more focused on producing things which is what matters finally as opposed to the false expectations and satisfaction gained by working through a book.
I now treat a book as an aid, a tool, a mentor, a navigator that I refer to when I am stuck instead of the earlier feeling of being stuck despite having worked through a book.
The only care I have to take in this process is to pick a good useful application to work upon, which is possible if I am willing to think through it enough and then there is this.
The other minor advantage I have gained by following this process is that I do not suffer from the pressure of having to complete a book cover to cover. In fact, I now do not even have to care if I will ever complete the book, as long as it provides me value as a tool.
To cite just one example, recently I wanted to learn about algorithms and data structures. So instead of working my way through books; I picked up this book, and understood the concepts. Just the first 2 chapters sufficed. Next I chose to actually find applications where algorithms are important part of the solution. I chose to work on those applications, while using the books as a tool. Not only did this process work, but it also taught me how to actually use algorithms in the real world instead of working on some descoped abstract problems in a textbook.
Overall, I have repeated this process more than once and I have found it to be more productive in learning a skill or a tool than just working through a book. And I plan to stick to it as of now.
 A purely systemtatic theoretical perusal could be useful, but I fail to realize what is the point of theory if it does not lead to something useful? May be I am missing something here!
 Anyways, just reading through books is useless.
I am a polyglot software engineer specializing in shipping iOS and 3d scientific visualization applications.