Following is an excerpt from the upcoming "Art of Software Development" by Scott Waletzko:
It is difficult to dispute that design is the single most important aspect of software application development. Lacking proper design, complex multi-tiered applications get mired down in repetitive and needless round-trips to the database; client software suffers from code bloat and interface component misuse; Web surfers find themselves unable to find and extract from a Web site the information they seek. Echosoft Design Studios provides insightful application architecture and development supported by a reverence for the art of design garnered over many combined years of professional software development and system architecture experience. Software architecture and documentation, team management, project lifecycle administration, quality assurance implementation, and systems distribution and maintenance all follow a set of basic principles and patterns on order to avoid common and known pitfalls, and to ensure a consistent and proven approach to the art of software development.
The action of design inherently assigns a sense of ownership over the object being designed to the person performing the action. Thus, if design breeds ownership, ownership leads to pride, and pride produces dedication. For this reason, some level of design should be delegated to every team member on every project, lending a cohesive, familiar, team atmosphere to an otherwise rote (if not highly technical) process.
Design is, in fact, everywhere in the realm of software engineering; design is in everything that we, as programmers, do; every programmer is an architect on some level. Design, conceptually, engages many different levels, scopes, and definitions when applied to computer software engineering, each as important as the other. While application architecture and Web site design are two of the most obvious (and yet completely different) applications of the concept, design must surpass the stigma attached to it at this level as something that is the domain of a project leader or architect; something to be viewed with a sense of awe and reverence. Instead, the principles dictated by a system's over architecture should be shared among every team member, and should be considered a living project plan, to be modified according to input from the field.
Design is subjective, and at the same time can be described by standards and practices. It could be argued that the Web site hosting this text was designed poorly, but it would be impossible to disagree on whether or not it adheres to commonly accepted design standards (although defining "commonly accepted" is another subjective debate). With any complex project involving more than one team member, META-architecture (or the design of the design) is a must. A set of simple and easy to follow rules defining the project, its implementation, and each team member's role becomes the constitution of the project; all other work (including specifications, documentation, and models) becomes fluid and adaptable.