Just Loop It.
Last week, I had written about just starting with the simplest thing, which helped me get out of my procrastination.
This week, I'm at the tail-end of my coding assignment, which is to replicate the printf function in the C standard library.
The journey hasn't been all smooth: I started on 5 December, fell ill on the 7th, recovered (kinda) on the 12th, and am still trying to complete it.
But what was a surprise was the unexpected rapid pace of my own progress on the code. I had expected to take a month on this assignment. Instead, it has taken about a man-week to get this code working (largely) as required.
I think the main reason for the rapid progress is my use of a low-cost, rapid feedback loop, with the help of the C compiler. Without going into too much detail, a compiler takes the written text (in the C programming language), and turns that text into lower-level instructions which the machine can read and execute.
But more importantly, the compiler doesn't just do that: it also throws up useful error messages if something is not right.
In the picture above, the compiler (bottom third of the picture) was telling me "hey, you missed out a closing ')', which matches the first '(' at line 74, column 9". Basically, the compiler provides a very simple, low-cost feedback loop to the programmer about what is going well or badly.
Simple, low-cost feedback loops are important, because without them, you can't learn. And without learning, it's impossible to course-correct.
Imagine if I gave you this task: go to Washington DC by foot. That would be very hard (unless you live around the DC area), but theoretically possible if you live in the mainland USA.
Now, imagine that I blindfolded your eyes, muffled your ears, and put your hands in thick gloves so you cannot feel.
The task now becomes impossible, because you cannot course correct in a low-cost way. You're getting zero feedback from your senses, thus zero learning about your environment.
Of course, you could get learning by the hard way. But the cost could be very high: you might get maimed, injured or die.
On the other hand, having a simple, low-cost feedback loop allows rapid learning and evolution:
Interestingly, this is the same lesson I learned from my design school CIID, where the school motto is "listen, build, test, repeat": it was quite common for us to pull classmates to ask for short feedback, which allowed us to rapidly evolve our design projects. That was what allowed us to form teams on a Monday, and present a concept with a working prototype to actual paying clients by that Friday.
In the case of CIID, the "compiler" was the culture & norms of CIID.
What would be your "compiler"?
Lesson of the Week
After you've done the simplest thing, and the next simplest thing, find a way to create and use the simplest, low-cost feedback loop for learning.
Questions to Consider
What is your version of a "C compiler", which can help you speed up your learning in your domain?
How are colleagues in your domain getting feedback?