Why is Software Design Difficult?
Software design requires a depth and breadth of experience that takes years to develop. While better training in software design might shorten the time required to master design by better codifying knowledge and experience for others to follow, attaining knowledge is easier said than done. Jonathan Mugan in his book The Curiosity Cycle explains : Knowledge is more complicated than simply putting available pieces of information together because much of the world is hidden from view. [...] What we know determines what we see, therefore learning new things changes how we experience the world. If it were a matter of obtaining some bit of information, then anyone could be a great designer after reading a book. Knowledge is an important part of design since it changes how you see the world, but perhaps even more important are the mental models we create to explain the world. These models are born through experience and seen through the lens of our current knowle...