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.