As a designer, there are a lot of ways that projects can go pear-shaped. Even with the best designers using the best process, things can and will go wrong. You might encounter unresponsive clients or stakeholders, wicked domains, misleading research, conflicting goals…the list goes on and on. If you’ve spent any time in the field, you have likely encountered one or more of these.
To me, one of the most challenging is the case when you design yourself into a corner. The project is going swimmingly, for weeks or months. The design is really coming together, and everything is lining up nicely. Then someone brings up an edge case. It’s one small thing, ordinarily easily handled. But in this case, that edge case has ramifications on a design decision you made months ago. That earlier decision made sense based on the information at the time. Decisions were stacked on top of that. More decisions still layered on top of those. But now, the edge case could cause the whole thing to fall apart.
As a designer, you have a choice: Unravel the thread as far back as necessary to get the design right which could lead to a large redesign (i.e., very costly), or compromise on this edge case, saving money and time, but knowing that the design is a bit weak. Each will cause the designer immense heartburn. We know we need to deliver, get the product out, and learn. But we also don’t want to release with known flaws or severe compromises.
The decision is not easy, and almost has to be done on a case-by-case basis. How far back does the thread need to go to correct the mistake? How compromised is the display with pressing forward? How quickly can you fix the flaw once you release?
The last time this happened to me, one little edge case caused 2 days of rework that impacted about 8 different design decisions. In that case, it was worth it. We had time to spare before those particular design elements needed to be set, and it only caused minor rework to what we already been completed in previous design sprints. Even then, the final design we went with was not the optimal solution. We could have unraveled further and gotten things nearer to perfect (it will never be perfect), but decided that we corrected enough that we could live with the minor flaw.
Even so, I know that the design remains unstable. It works for now, but new edge cases or new use cases could cause another round of frantic design changes. I would love to know how to future-proof my system designs, but haven’t seen any good suggestions on it. But I have no choice, the designing must continue. Decisions need to be made. I know I will find myself in this position again, and I will be frustrated.
But in the end, this is what makes designing fun – going of into an unknown project and finding your way through. Problems will arise. They always do. The best designers lean into the problem and take them head on. Designing yourself into a corner makes for awkward situations and awkward conversations, but in the end, there’s always a way out.