The best teacher I had in graduate school spent the whole semester destroying any beliefs we had about computing. He was a real iconoclast. He happened to be a genius, so we took it. At the end of the course, we were free because we didn’t believe in anything. We had to learn everything, but then he destroyed it. He wanted us to understand what had been done, but he didn’t want us to believe in it.
– Alan Kay
Here are some talks which have given me new insight into programming, and in particular what good programming is and isn’t.
Setting the record straight on three big lies:
- Software is the platform
- Code should be designed around a model of the world
- Code is more important than data
One of the most important metrics to optimize for is hours of your life spent programming something. You have a finite amount of hours in your life after all, which you’d surely like to spend on other things too.
In the beginning all you want is results, in the end, all you want is control
Your most powerful problem solver is your subconscious mind.
Simple is not the same as easy. Don’t confuse them.
The value of values
Almost everything that’s interesting in a non-trivial program are ‘cross-cutting’ concerns. When faced with the reality of real word programs, promises of encapsulation tend to be broken, and object graphs quickly become tangled webs.
The emphasis of programming should be on solving problems, and not on the code itself.
Iterating over a two dimensional array by row is much faster than by column.
We always hear arguments for Garbage Collection, and Virtual Machines, but what about the counter arguments?
A strong emphasis on being a critical thinker, and making sure that the code practices that you adopt actually benefit you.
A depressing tour of the software industry, and it’s quest for the silver bullet.
Papers and Articles
The timeless classic. Also in HTML