From Critique to Commit: What Graphic Design Taught Me About Writing Code đ¨đ§âđť
What do design and software engineering have in common? A lot more than you'd think. Here's how lessons from my graphic design career made me a better coderâstarting with how to take critique, simplify solutions, and stop overworking your ideas.

You donât usually hear âgraphic designâ and âsoftware engineeringâ in the same sentence unless someoneâs trashing frontend work. But I spent years in design before switching careers, and let me tell you: the overlap is real.
Hereâs a look at the lessons that made the leap with meâbecause clean code and clean layouts arenât all that different.
đŻ Take Criticism Without Crumbling
Design reviews teach you quick: if you canât take feedback, youâre in the wrong room.
Same thing with code reviews. Youâre not your code. Youâre not your design. If someone spots a better way, thatâs not failureâitâs collaboration.
The goal isnât praise. Itâs progress.
đ§ Listen to What They Want â Give Them What They Need
Clients would say things like âMake it popâ or âUse Comic Sans,â and your job was to decode what they really meant.
In engineering, itâs stakeholders asking for a dashboard when what they need is better visibility or faster feedback. Itâs our job to understand the problem behind the askâand build for that, not just follow orders.
đ ď¸ Offer OptionsâBut Only Good Ones
Designers know: donât show anything youâre not okay with going live. That âjust in caseâ mock? Thatâs the one theyâll pick.
Same in code. If youâre proposing solutions, make sure every one of them is something youâre actually willing to build and support. Donât pad your options with junk to make your favorite look better. Itâll backfire.
đ Expect Revisions. Always.
Every designer expects changes. New direction. New feedback. New constraints. You build that into the process.
In software, we call it iteration. Refactors. V2. The sooner you accept that the first version wonât be the final one, the better your mindsetâand your productâwill be.
đ People Donât Know What They Want Until They See It
This oneâs universal.
You show someone a blank canvas and they freeze. You show them somethingâeven roughâand suddenly the ideas come out.
Prototypes, early builds, wireframesâthese are conversation starters, not just deliverables. Build just enough to make the invisible visible.
đ§ą Bad Structure Always Bubbles Up
In design, if the gridâs off or spacingâs inconsistent, the whole thing feels messyâeven if you canât explain why.
Same with code. Weak abstractions, unclear naming, inconsistent patternsâthey quietly infect the rest of the system. Eventually, they get loud.
Bad decisions compound. Clean it up early, or pay the price later.
âď¸ Keep It Simple
Overdesigned layouts are like overengineered systemsâimpressive on the surface, but exhausting to maintain.
In both cases, less is usually more. The real skill is knowing when to stop. Focus on clarity. Nail the basics. Fancy comes later (if ever).
đ§˝ Donât Overwork It
Thereâs a point where more effort doesnât make it betterâit just makes it different. And maybe worse.
Whether itâs a landing page or a feature branch, stop polishing when the value stops increasing. Done is better than perfect. Let it breathe. Ship it. Revisit if needed.
Final Thoughts
Design trained me to think in systems, to communicate visually, and to iterate fast. Engineering taught me to be precise, test everything, and build for others.
The bridge between the two? Clear thinking, good instincts, and the willingness to throw out your favorite idea when something better comes along.
Two fields. Same muscle.