Software design is not the same as user interface design. … If a user interface is designed after the fact, that is like designing an automobile’s dashboard after the engine, chassis, and all other components and functions are specified. …
Many people who think of themselves as working on the design of software simply lack the technical grounding to be an effective participant in the overall process. Naturally, programmers quickly lose respect for people who fail to understand fundamental technical issues. [But] the technical demands of writing the code are often so strenuous that the programmer can lose perspective on the larger issues affecting the design of the product. …
Software designers should be trained more like architects than like computer scientists. Software designers should be technically very well grounded without being measured by their ability to write production-quality code. … Software design needs to be recognized as a profession in its own right, a disciplinary peer to computer science and software engineering.
Mitchell Kapor (1991), via Daniel Jackson