I got in an argument at work during a meeting last week. It was one of those annoying arguments where you’re sure you actually agree with your opponent, but you just can’t seem to make them understand what you’re saying. The reason we were talking past each other was that I was talking in terms of requirements and they were talking in terms of the current environment: I was trying to describe what we needed to accomplish and the ideal way to integrate two pieces of software, while they were trying to describe how we should deal with it now, given that a bunch of other pieces are already there tied together in a messy fashion. Why did I want to start with the requirements and ideals? Beginning a search for solutions to a problem with anything other than requirements often leads to missing better solutions that should have been obvious.
Unfortunately, people rarely begin with requirements when they encounter a problem. Instead, they look at how things currently work and immediately try to cram the solution to their new problem into the first space the current situation obviously offers. My argument last week was about software design, but this problem occurs across virtually every discipline.
The Lightbulb-Changing Drone
Imagine that you move into a new home and you find that the overhead lighting in one room is too bright for most circumstances. As an expedient solution, you stand on a chair and remove three of the lightbulbs in the fixture. This works well enough and looks perfectly normal once you replace the cover, and you have better things to worry about changing in your new house, so you leave it that way for a few years.
Then the way you’re using the room changes. You now want to adjust the illumination level several times a day (that’s your new requirement). Your current solution involves adding or removing lightbulbs, so working from this solution, you design a special drone that can fly up to the light fixture and insert and remove lightbulbs on demand. You design and write a custom smartphone app that controls the drone. The first time you have guests over, you proudly show off your new system. One of the guests asks, slightly bemused, why you didn’t just install a dimmer switch…and you have to admit you didn’t even think of that. You were focused on the solution you currently had; you never went back and considered what your requirements actually were and whether there were better ways to satisfy them.
Studying your requirements
Unless you’re trying to do a fun project rather than find the most useful solution (because let’s face it, a lightbulb-changing drone does sound like a fun project if you’re a tinkerer) you don’t want to build a lightbulb-changing drone. Here’s the quick version of how to avoid building a lightbulb-changing drone.
- To the greatest extent you can, forget about the system that is currently in place. Don’t worry – you’ll get back to thinking about it soon enough.
- Identify your requirements – what do you need or want to do? This includes both things you currently can do and things that you don’t think you currently can do but want to add. In our example, these would be something like “have light in the room on demand” and “adjust the level of that light easily within 5–10 seconds.” In a more complicated example, you may have a dozen or more requirements. It can be helpful in this case to break your requirements down into actual needs and nice-to-haves.
- Step back and consider how someone could conceivably meet these requirements. At this point, don’t consider any part of the system you already have. Pretend that you get to redesign everything from scratch, instantly replace all your existing tools and components with whatever new ones you want, and effortlessly become an expert with any new tools or techniques you need. How would you best meet the requirements then?
- Finally, get back to your existing system and your practical constraints (for instance, if you can instantly replace your existing tools for free, I’d appreciate some tips). Take your ideas from step 3 and find a way to fit them into what you have. This will often make them uglier, less useful, and more difficult to implement, but also more practical. Once in a long while, you may find that the difficulties are so many that throwing out the existing system and starting from scratch is the most practical way forward.
When to focus on requirements
I’m sure you think you would never do something so silly as build a lightbulb-swapping drone, so you might be having a hard time seeing how this applies to you. Let’s think of some situations in which you might want to apply this technique.
- If you’re reorganizing your kitchen, you don’t want to make decisions about where to keep a tool or whether you should even have it anymore “because it’s always been there.” You may find on reflection that there’s a good reason why it’s always been there and it should stay there, but that reason should be the impetus for your decision, not the fact that it’s always been that way. Get back to your requirements and the right choice will become obvious and easy to explain.
- If you’re buying a new car, your needs may have changed since the last time you bought a car. You don’t want to buy a truck for reasons that no longer apply to you, purely because you had a truck before and so that’s all you looked at. Get back to your requirements and wants, and you’ll either be able to justify buying a new truck over an SUV or a motorcycle, or realize that you were about to make a poor decision.
- If you’re using a spreadsheet to store and work with information, as you add more information and additional calculation and processing features, there may come a time where the spreadsheet becomes an unusable monstrosity. Spreadsheets are fabulous tools, but they do have a complexity limit. When you see the number of features and amount of data ballooning, stop and reconsider your requirements. You may find you were about to reinvent some existing complex software that already does exactly what you want in an Excel spreadsheet!
Pretty much anytime you’re making a big decision about what to buy or how best to accomplish a task, you can benefit from taking a step back and reconsidering your requirements. Give it a try next time.
Since I am on Christmas vacation, there will be no Control-Alt-Backspace post next week. Enjoy any solstice-time holiday you may celebrate, and I’ll see you back here in the New Year!