As part of a class I am currently taking in Java programming, one of the chapters in our required reading begins by talking about the process of designing computer software. They use the analogy of several engineers designing a car in different parts of the world and the different levels of specialty and detail required to design each specific part. It goes on to explain how one single designer must learn to deal with complexity through the use of abstraction . They define abstraction as the ability to ignore details of parts to focus attention on a higher level of a problem. One technique that is used is referred to as divide-and-conquer. Through a process of abstraction and modularization, it allows the head designer to assign the engineers to a task in which they will develop a high level of understanding to a complex thing.
This made me think about the role of a designer. When a person plays a role in designing they must train their mind to switch perspectives and follow new paradigms. This process may need to happen over and over again, to the point in which the designer thinks they have discovered every possibility. However, in a new day with a new set of eyes, suddenly they discover more. Complexity reveals itself overtime, if one chooses to look. When the designer finally achieves the right level of abstraction every problem reveals itself and the steps to a solution becomes very clear.
