Umair (engineering): what designers get wrong about code
"Just move it" is usually not just.
That card is used on six screens. Moving it on one screen means changing all six, or splitting it into two components that both need looking after from now on. I am not saying no. It takes five seconds in Figma and a decision in code. Tell me what you are trying to fix, not just where to put it, and I can usually do it for free.
Real data is uglier than your data.
Titles wrap onto three lines. Photos come in the wrong shape because a client uploaded them from a phone. Prices have different currency symbols. Half the fields are empty because the user skipped them. If a design only works with the content in the file, we will have to redo it during the build.
Every one-off value costs us later.
Five greys that are almost the same grey are five things that will slowly drift apart over two years. Same with one-off font sizes and spacing. This is not about being lazy. Anything that is not in the design system is something nobody can find later.
That animation will stutter.
It looks great at 60fps on your laptop. It has to run on a three-year-old Android phone on a bus. Blur, big shadows, and anything that moves the layout are the usual problems. Tell me what the movement is meant to say and I will find a cheaper way to say it.
The states you skipped are where users actually are.
Loading, empty, error, offline, no permission. On a slow connection, people see these more than they see the finished screen, so they are most of the real experience rather than edge cases we handle later. When they are not designed, I design them at 6pm, badly.
A custom date picker takes a week.
The framework gives us a lot for free: inputs, dropdowns, native pickers, and accessibility that already works. As soon as a component is custom, we own keyboard support, screen readers, mobile behaviour, and every browser bug. Sometimes that is worth it. It just needs to be a decision we made on purpose, not one we find out about halfway through.