Chapter 5. Designing Software from the Bottom Up

Imagine that you are a visiting instructor in a software design course, and you hope to bridge the gap between theory and practice.

Your friend Nasir is responsible for running the course, and he asked you to come help out because he’s only had mixed results so far.

When reviewing a case study, Nasir’s students easily grasp the main ideas and they ask creative questions that lead to great conversations. But when it comes to applying design concepts in their own projects, most students struggle to make the connection.

The problem is that most of the students have not had much practical experience with building software systems. This lack of perspective leads them to view software design as an abstract exercise, rather than a concrete and essential skill set.

Textbook examples reinforce this viewpoint by demonstrating a top-down style where design ideas just spring out of the woodwork. Real design doesn’t work that way, but students often assume it does and end up feeling discouraged.

To help reveal where design decisions come from in the first place, you will build out a small project in real time and discuss it with the class as you work. This way, the students will be able to take an active role in the iterative design process that goes along with building a system up brick by brick.

In this chapter…

You will learn a step-by-step approach to bottom-up software design, and examine the tradeoffs of this way of working.

Identify ...

Get Programming Beyond Practices now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.