The notion of Web 2.0 has turned people’s heads: they are paying attention, and are hungry for information in a way they have not been about the web in a long time. And one of the notable results of this is a fast focus on the underlying technologies more than the design implications and business opportunities that Web 2.0 promises. That is unfortunate, because the technologies themselves are subject to rapid change and decay, whereas issues of design and business remain prescient even as the technology paradigms change. Yet, even when the conversation is about design or business, the conversation seems to focus on invention and the exploration of new frontiers. People see the current challenges and opportunities as new. But they’re not: they’ve just been forgotten over the last 10 years, ironically enough, as a result of the rise of the web.
Software design: a forgotten body of knowledge
Software design (alternately called “Software Engineering” or “Application Design” or “User Interface Design” – depending on the context) is the profession that creates and maintains software applications by applying technology and practices from computer science, project management, UI design, engineering, usability, research and other fields. Dating back to the 1940s, software design has grown and evolved with computing technologies. By the early 1990s – before the popular rise of the Internet – software design was a very mature and practiced discipline with well-documents processes and best practices. Even though the discipline was inherently volatile thanks to changes in technology, a tremendous amount of thought and quality work was invested over decades of time to guide solving software design problems – particularly with the UI.
One of the results of the rise of the web was an enormous influx of new design and technology professionals, most of whom had no background with software and applications, having only worked on websites and relatively lightweight web-based products during their career. That is unfortunate, because as Web 2.0 increasingly behaves like a dynamic software application, the designers, engineers, researchers, and other stakeholders do not have the experience solving the more application-based problems that software professionals have long-since mastered.
Rather than focus on inventing new approaches to solving these challenges we should take a look at the thoughtful work done in the past, and use that wisdom as a starting point. So instead of trying to understand Web 2.0 through technology like Ajax or Flex that will soon be obsolete, we should consider learning more about software design. Here is a collection of books published over the past 21 years that provide different opportunities for you to get started. Each of these offers different insights and approaches that are based more in traditional software design, and/or application design, helpful for designers, usability professionals, engineers, product and project managers, marketing and business people: everyone involved with building web-based products. These resources cover a wide range of content and styles, so browse a bit and find the titles that are most applicable for and interesting to you:
Total Software Design
* Software Design (2nd Edition), By David Budgen
* Pattern-Oriented Software Architecture(series), By Frank Buschmann and others
* The Elements of Friendly Software Design, By Paul Heckel
User Interface Design
* Making the Web Work: Designing Effective Web Applications, By Bob Baxley
* Designing Visual Interfaces: Communication Oriented Techniques, By Kevin Mullet and Darrell Sano
* The Elements of User Interface Design, By Theo Mandel
* User Interface Design for Programmers, By Joel Spolsky
* The Humane Interface: New Directions for Designing Interactive Systems, By Jef Raskin
* Through the Interface: A Human Activity Approach to User Interface Design, By Susanne Bodker
* GUI Bloopers: Don’ts and Do’s for Software Developers and Web Designers, By Jeff Johnson
* User and Task Analysis for Interface Design, By JoAnn T. Hackos and Janice C. Redish
* Managing Software Requirements: A Use Case Approach, Second Edition, By Dean Leffingwell and Don Widrig
* Lessons Learned in Software Testing, By Cem Kaner, James Bach, and Bret Pettichord
* Rapid Development, By Steve McConnell
* The Business of Software : What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad, By Michael A. Cusumano
There are many other titles and resources to consider, but the important thing is reframing the conversation to building off the knowledge of the past, instead of acting as though the challenges of today are new. The adage that “everything old is new again,” is valid here, and understanding that can propel us to take advantage of well-crafted stores of knowledge to make the most of the present opportunities we have as companies and individuals.