Engineering Concepts to Improve Your Personal Life pt. 4

Using top-down thinking to make planning a breeze.

Ashcir
6 min readFeb 16, 2023
Photo by Sven Fischer on Unsplash

“See the forest for the trees.” — Anon

Hello internet, and welcome back to the fourth installment of our Engineering Concepts to Improve Your Personal Life series! In case you missed the previous posts, we last discussed how to avoid ambiguity by avoiding assumptions.

Today, we’ll discuss one of my favorite design approaches, top-down design.

What is Top-down design?

Top-down design involves starting with a broad, high-level view of a project and breaking it down into smaller, more manageable pieces. I’ve mentioned in previous posts about systems in life. Whether it’s biological, political, or mechanical; a system is a composition of its parts. Practicing top-down design helps us to identify the pieces and their connections. By seeing these connections early on, we save time and wasted effort ensuring that our system will function as intended. Let’s take a closer look at how we’d apply this approach to solving an engineering problem, such as designing a go-kart track.

Photo by mohammad samir on Unsplash

Let’s break our problem down into the following steps:

  1. Determine the scope.
  2. Identify the major components.
  3. Identify dependencies.
  4. Prioritize components and define requirements.
  5. Review the design and iterate.
  6. Implement the design, and measure the outcome.

Determine the scope

What’s the purpose of our track, and who is it for? Do we have a budget and a timeline? In this example, let’s imagine we’re designing a track for a small business owner. The business caters to ages 12 and up. We have a budget of $100,000 USD, and one year to complete it.

Identify the major components

After we’ve determined the scope, we need to think about what a go-kart track is comprised of. It needs:

  • A layout: self-explanatory
  • Barriers: to protect the drivers and the audience
  • Signs: to direct and warn the drivers
  • Bankings: to help the karts negotiate corners at high speeds

Identify dependencies

Which components are reliant on each other? Are there components that can exist by themselves? In our example, the barrier depends on the layout. We cannot place appropriate barriers until we know the shape of the track. The bankings are also dependent on the layout of the track. We need to know where the corners are.

Additionally, because the system is a sum of it’s components, they will need to exist with each other. In this step we explore how the components interact together. For example the signs need to be places on the track, does the track provide a mechanism that allows this.

Quick sidebar, this touches one of my favorite topics in software engineering and computer science, interfaces and abstractions. An interface provides a generic way (an abstraction) for components to interact with each other. Well-designed interfaces allows components to be swapped in and out with minimal change to a system.

Here’s an example. Think about the electrical wall outlets in your home. Regardless of what device you purchase, it fits into the socket. The outlet is an interface for your devices (outside components) to interact with your electrical system. If the wall socket (interface) was poorly designed, you would have to change the wiring for each new device you plugged in. I could write an entire post about this topic; I’ll save it for an additional to this series.

Prioritize components and define requirements

Since we now know the dependencies, we can prioritize the components. We identified that the barrier and bankings have a dependency on the layout. This means we have to work on the layout before we can work on the barriers and the bankings. Additionally, the barriers and bankings don’t have a dependency on each other, they could be worked on at the same time.

Review the design and iterate

At this point, we’ve gathered enough for our initial high-level design. Now we can focus more on the details for each component. We can decide:

  • The material to use for the track layout; brick or asphalt.
  • What to use for the barriers; foam or tires.
  • Should purchase the signs or construct them.
  • The angles for the bankings.

Also, the beautiful thing about our approach is that if we designed appropriate interfaces for our components, the details can be changed without majorly affecting the system. If the budget doesn’t allow for brick, use asphalt. If painted signs will be too dim, opt in for LED ones.

We can experiment with combinations of details, see what works and what doesn’t. Get feedback from the owners, and keep iterating until we’re satisfied.

Implement the design, and measure the outcome

We’ve identified what we needed, where to get it from, and how to do it. Finally, we can implement our design. Lastly, it’s important that we measure the outcome of our project. We survey drivers’ enjoyment, monitor safety records, gather data that we can use to maintain and improve the experience over time.

We’ve spoken about the concept, now it’s time to discuss why you’re here! How can we use this concept in our personal lives?

I’m going to give a personal example of what my fiancée and I are currently going through: planning a wedding.

Photo by Shardayyy Photography on Unsplash

Let’s go through the steps be mentioned above, albeit in a condensed form.

Determine the scope

When will it happen? What’s the guest size? What is our budget? Will it be adults only? Will it be a destination wedding? These are questions we had to answer before we proceeded any further.

Identify the major components

Next determine the major components of a wedding.

  • Date: Self-explanatory.
  • Guest List: We need to estimate how many persons will attend.
  • Venue: We need a location.
  • Decor: The location needs to be decorated.
  • Ceremony: Will it be traditional or otherwise.
  • Food & Drink: The guests need to be wined and dined.
  • Music & Entertainment: The guests need to be entertained.
  • Photography & Videography: We’ll have to capture the memories.
  • Transportation & Parking: The guests need a way to get there.

Identify dependencies

The decor, transportation, and parking are reliant on the venue. Similarly, the venue needs to be available for the wedding date, and another dependency is revealed. Also, the venue needs the capacity to hold all the guests.

Prioritize components and define requirements

From the dependencies, we identified that the date, guest list, and venue were the highest priorities. Without those in place, nothing else could get completed. Now that we’ve decided on all three, we’re working with a planner to iron out the details for the other components.

Review the design and iterate

We’re not at this stage yet. When we get there, we’ll go over the iterations and designs to find one that best fits our vision and budget.

Implement the design, and measure the outcome

The design will be implemented on the week of the big day. We’ll be able to measure the success by the memories and joy we experience crossing into this phase of our lives.

I was motivated to write this post because I felt overwhelmed. My partner and I about to jump into the next phase of our lives, and this event is the launching pad tarped with anxiety.

Residing in anxiety would lead me nowhere. So I decided to treated the wedding like a work project: Use the top-down design technique.

  1. Determine the scope.
  2. Identify and prioritize components.
  3. Review then Execute.

It’s helping so far, and I hope what we discussed today helps you too. Whether it’s building a business, writing an essay for your course, or even your own wedding. Don’t feel overwhelmed, breathe, you got this.

Happy planning!

--

--

Ashcir

Software engineer by trade; engineering & life blogger; landscape photographer; and teacher by passion. Born and raised Jamaican living in an American world.