[#16] Unknown unknowns 😕
One of the reasons for increased complexities in software designs is the fact that developers are not sure about - where else would the given change impact.
When implementing a task to change a certain piece of code, experienced developers tend to wonder about its impact on the rest of the system. If you see someone who is confident in implementing the change, then there are only 2 possibilities - either they are new to development, or they are too good with the system and its customizations.
But even if you are well versed, implementing a change always gets you on your toes. There are so many questions, some of which cannot even be phrased. Have you been in this situation?
This is where it becomes important to have a good software design in place. Developing software just by writing a bunch of scripts together was, is, and will never be a great idea. It is just a proof of concept at its best. And PoCs are useless.
Honestly, I don't appreciate people who think PoCs are crucial. Partially? maybe, yes. But then there is a long pending journey to make sense of the proven concept and be useful to the people.
Software design is a huge field with so many principles and concepts that are written down based on experience. Thus, they are very valuable. I have read quite a few books on software design, however, I am currently reading "A Philosophy of Software Design" by John Ousterhout - and I think it is great. Unknown unknowns was exactly the term I was looking for to express this moment before implementing any change.
-- Sumeet
LDT | Guest Posts | Resources | Wisdom