A common issue in software development is creating features without fully understanding the problem.
How many times have you heard: “I am confident that the feature requested is now 100% complete and works great!”— only to find out that it was coded with errors and/or doesn’t work as expected?
Much of this misunderstanding on the developers’ part is due to “Not Knowing What They Don’t Know”. A common response is: “Why didn’t you tell me you didn’t know that?”. The reason? No one can tell you what they are not aware of.
The Illusion of Explanatory Depth
The phenomenon of thinking you know everything there is to know, but are unaware of what additional things you need to know has a name. It is called the “Illusion of Explanatory Depth” and was coined by Yale researchers Leonid Rozenblit and Frank Keil in 2002.
Known also as the “Knowledge Illusion of Complex Systems”.
It is a cognitive bias where people overestimate their understanding of a topic, believing they know more about a subject than they actually do, often only realizing the gaps in their knowledge when asked to explain it in detail; essentially, it’s the feeling that you understand something well when you really only have a superficial grasp of it.
Build It and They Will Come
Unfortunately, as the cost of creating software solutions becomes cheaper, and going from idea to implementation is drastically shortened, spending time understanding problems is now often bypassed as a meaningless exercise regardless of how much it contributes to the effectiveness of the solution.
I call it the “Create First and Ask Questions Later” syndrome (others call it an opportunity!).
In software development, this is a constant issue.
Bridging the Knowledge Gap
How can we recognize when this is happening and bridge the knowledge gap between what is known and what needs to be known?
One way is to apply proven software development techniques throughout the development process. This can be done to help explain problems clearly, and verify that solutions are aligned towards solving said problems. When problems are clearly understood, solutions tend to present themselves.
Fundamentals and Generative AI
Strategies and tools that can be used to resolve these situations often refer back to Agile and Clean Code-based principles dating back to the early 2000s.
Using the power of generative AI, we now have a another tool to help fix the situation.
Used properly, we can analyze and explain problems clearly and quickly, while still employing AI to co-pilot our coding solutions.
In subsequent posts, specific examples of both Agile fundamentals and generative AI uses in the development process will be covered with an eye on iOS and macOS development.
Composite Podcast
Here is a composite podcast I’ve created to help understand the concept of the “Illusion of Explanatory Depth” in software development.
It was created using the following resources:
llusion of Explanatory Depth: Overestimating Understanding of Complex Systems
