TL;DR
- Waiting to be unblocked is a decision, and it has consequences that only show up as delay
- When the conventional path adds friction, run a small experiment before committing the whole project to it
- Treating experiments as learning exercises removes the pressure that stops most people from trying
- The AANA project shipped on time and on margin because one experiment replaced a second developer, a plugin stack, and weeks of rework
- Good design removes thinking from the user; that standard applies to how the work gets built, not just what gets shipped
The moment the path disappears is a test. Most designers fail it not because they lack skill, but because they wait.
They wait for feedback. They wait to be unblocked. They wait for someone to make a call that gives them permission to move. That behavior is not laziness. It is how most designers are trained: stay in your lane, reduce risk, present options and let others decide. The problem is that waiting is invisible. Nobody sees the decision to stop. They only see the delay.
What stops most designers
The instinct to wait comes from two places.
Role definition is the first. Finding solutions to technical constraints is not the designer's job. That is true in a narrow sense and catastrophically wrong in practice. No product ships cleanly. The constraints are always there. The question is who absorbs them.
The second is fear. If you try something unconventional and it fails, you own that. If you wait for someone else to make the call, the accountability shifts with the decision. Waiting feels safer because the downside is less visible.
Neither is a good reason to stop.
What I do instead
When the path disappears, I do two things.
Research comes first. I look for analogous tools, existing solutions, or alternative approaches that address the constraint. Not deeply at first. Enough to know whether there is a path worth testing.
Then I sketch. Four to six rough directions, fast. The bad ideas come out first. Getting them down is how you see past them. Then you can look at what is left and make a real call.
Both are fast. Neither requires permission.
The AANA project
On a recent project, we had five weeks to design and build an app. The standard path was Webflow. The problem was authentication and advanced CMS functionality. In Webflow, those require third-party plugins: each one adds a new tool to learn, new quirks to debug, and a new point of failure.
The options were clear. Use Webflow and absorb the overhead of a plugin stack we had not scoped for, or find a different path.
I ran an experiment with Lovable, an agentic coding tool. I treated it as a learning exercise, not a commitment. If it could not do what we needed, I would know quickly and we would move on.
It connected to a database. It handled authentication. It built conditional logic: milestone unlocking based on dates. It produced the CMS functionality the product required. Before the team committed to anything, I had a developer and a delivery manager review the output to confirm the code was sound.
The alternative would have required another developer split across two projects, a different plugin stack, and time we did not have. Running the experiment first kept delivery on a single developer, protected margins, and kept the launch date intact.
Why this is possible
How you treat the experiment matters. When I tried Lovable, I had no expectation that it would work. Earlier versions of agentic coding tools hit walls. They would get most of the way there and fail on something fundamental. Going in without expectations meant it was a learning exercise whether it worked or not. That framing removes the pressure that makes most people avoid trying things outside their lane.
The other part is a deliberate orientation toward reducing friction. If a tool or a process adds complexity, that complexity does not stay contained. It spreads into decisions, timelines, and eventually into what the user experiences.
The pattern is deliberate
This is not improvisation. When the conventional path adds friction, find an alternative. Test it cheaply before committing. Validate it before presenting it as a direction.
I am applying the same logic this week. A client embeds Power BI dashboards into a React wrapper through Microsoft Fabric. The question is whether agentic coding can replace their GUI-dependent workflow for shipping features. Running the experiment costs almost nothing. The answer is worth a lot.
What drives this
Good design is invisible. It removes thinking from the user. When an interface works, users do not notice it. They just move.
That belief extends to how the work gets built. Everything in the path eventually touches the user. Friction upstream produces friction downstream.
Being resourceful is not a personality trait. It is what happens when you apply that standard to everything in the path, including the parts that are technically someone else's job.
Final thoughts
The designers who make things happen are not the ones with the best craft. They are the ones who do not stop when the clear path runs out.
Get articles like this in your inbox
No spam. Unsubscribe any time.


