Last Saturday BG Sir, the CEO of our company took a session on "Programming Foundations".
I should start off by saying that the man is amazing. He's a technical genius with an excellent business sense. Working almost single handedly he created a product that has, over the last 20 years, captured 95% of the market!
Additionally he is a genuinely nice person and one I admire. So I figured the session would be good.
"Programming Foundations" started with a discussion on the differences between the PC and the MAC. From there we branched into a discussion on servers, jumped into computer peripherals, the BIOS startup sequence, NMI's, the PE format, and BLOB storage of data. We covered each area in surprising detail and the session was hugely enjoyable if a little disjoint.
Four hours later, as we discussed memory management, BG suddenly pulled everything together. He stopped abruptly and asked "What did you get out of this session? Did you just waste your time?"
When I examined what I had gained over the last few hours I realized why I was enjoying myself so much. Every area we touched was related to computers and most had been
black boxes to me before now. The discussions removed the "mystery" from these areas. I knew now the sequence of activities that took place when I pushed the "Power On" button on my computer.
More importantly, I knew that, as a programmer,
I could design and write such sequences.
The knowledge itself had a tremendous affect in freeing my mind. Assuming we don't go down to hardware level, every layer above that
is open to any programmer. For me, this is a beautiful feeling.
In the words of BG we, as programmers we are unique in that almost everything we use is created by us (or someone like us).
Woo Hoo!