As I read the article by Bret and watched all the small screencasts that showed what was happening in the code I realized that this is the element that is missing for me. By being able to see what is happening with the code, I better understand how it works and how to write it myself. I have grown increasingly frustrated with all the various ways of learning to code, basically read some documentation or a book and go over the examples and then just translate that into your problem. This isn’t enough for many people and I am one of them. I have the desire, but it has continually been difficult to figure out what is truly happening with the code I write.
I loved the comparison of learning to program, as it is most often taught, with learning to cook in the same way; why do we teach programming so differently than almost anything else? By that I mean, with so little visual representation of what is happening. I highly recommend the article because it is eye opening about how people learn. It is a long read and a bit abstract, but worth the time. It’s helped me stop feeling stupid as I struggle to learn new programming concepts, and has made me realize that my style of learning may not be suited to how almost all the books and sites are trying to teach me the concepts.
Some people will defend poorly-designed systems by pointing out all the creativity that they have enabled. For example, if novices are creating lots of programs in the Khan Academy and Processing systems, doesn’t that mean the systems are worthwhile and valuable?
Not necessarily. People are inherently creative, and some will manage to create in even the most hostile of environments. That doesn’t justify bad design.