Do you know that feeling when you get a section of code to work and you have no idea why it did? Or just as uneasy of a feeling, when you can’t get a section of code to work (or don’t even know how to start) and you don’t know the first question to ask yourself or a colleague?
Often times we associate these types of experiences with beginners [a]; however, these types of experiences are not just limited to beginners. A seasoned engineer can also find him or herself in this situation especially when joining a new industry or learning a new architecture.
How Do You Identify It?
For me, I get this feeling I tend to describe as not being able to “touch it”, “reason or play with it.” It’s a general feeling of uneasiness.
Why Does This Happen?
I was reading an interview of Paul Bucheit and the light bulb went off for me after seeing his answer to the question “What skills and knowledge does it take to be a good engineer?” [b] He stated in essence that the best engineers understand abstractions at every level from the chip to protocols and systems.
It then hit me why we have experiences of not understanding why or why not something worked … it is because there is some abstraction in your environment / framework / architecture etc. that you don’t understand sufficiently (key word sufficiently, more on that later) That’s why you can’t begin to reason on it because there are too many holes in your foundation to stand on.
What Can We Do About It?
I will explore and offer encouraging insights and techniques over a series of posts to address this very question. Stay tuned!
[a] I was once there. I remember some instances in undergrad where I submitted programming assignments that passed all the required tests. This is a great feeling, trust me! But if I took a step back and were honest, there were instances where I wouldn’t have been able to tell you exactly why.
[b] The following is the exercept of an interview where Paul Bucheit explains what it takes to be a good engineer:
“What skills and knowledge does it take to be a good engineer?
Computer science is almost unlike any other engineering discipline because we routinely work at many different layers of abstraction. Someone who is only able to operate at one level is not going to be effective because often any given problem will be at a different level of abstraction from the last. Great engineers understand computers all the way from the silicon up through the different layers and protocols and systems.” 
 Buchheit, Paul. “Gmail Creator and YC Partner Paul Buchheit on Joining Google, How to Become a Great Engineer and Happiness” Interview by TRIPLEBYTE. TRIPLEBYTE BLOG. 17 October 2018. Accessed 15 July 2019.