Projects versus Practice
Page created: 2023-05-10Back to learning.
Related: learning-vs-doing.
I just finished reading an enormous and fascinating article by Jay Carlson about designing embedded Linux systems (and comparing microprocessors to microcontrollers).
I was struck by his Conclusions section at the end where he summed up not the knowledge in the article, but the meta-knowledge of having built so many different working systems in the course of writing it!
"I’ve blabbered on enough about Linux and these chips, so I wanted to leave you with a different thought entirely: This project re-affirmed the importance of practicing engineering (versus doing engineering). When you force yourself to get away from interesting domain-specific problem-solving and focus on the low-level mechanics of design work, in a repeated fashion, you end up building up muscle memory for things you thought you’d always have to think about."
Practice frees up your brain
He goes on to say that having designed and assembled so many PCBs for so many different processors, he was able to get through the ones at the end of the project in lightning time compared to those at the beginning of the project.
Having this kind of massive exposure to something from several angles makes the hard thing become almost trivial.
Our brains love patterns. Once you see the similarities between different tasks or approaches, your brain can approach another task like it nearly on autopilot.
It reminds me of how long it took me to understand simple "for loops" when I first started programming. I had to step through every iteration to see how it worked. But it didn’t take long before the concept simply faded to the background, freeing me to concentrate on the bigger picture.
Practice that approaches things from different angles unsticks the stuck brain
And then he said something else that rings very, very true for me:
"If you’re running into problems getting things working, consider doing the thing you’re never supposed to do: giving up and trying a different part. Compare and contrast. You’ll see patterns emerge as you get more familiar with how this stuff is done."
(Emphasis mine.)
I’ve heard it said before, but I don’t think that gets said enough. That’s a really powerful technique: If you get stuck, try something else:
-
Tough programming logic problem? Try re-writing it in a different language.
-
Tough concept in a book? Try reading about the same thing in a book by a different author.
What I’ve experienced is that it’s easier the second time.
And it’s not because the second language was better suited for the task or that the second author explained the concept better. (It seems like it at the time, but then you go back to the original explanation and it suddenly all seems so clear!)
There’s something about approaching the same topic from a different angle that frees up the stuck brain.