Engineers should learn to design
I keep reading articles about how designers should learn to code, but for once, I'd like to take the opposite side and ask why developers should learn to "design" a bit.
At some point, designers and front-end engineers worked closely, striving for "pixel-perfect" designs (for what they were worth), and engaging in extensive discussions about their ideas and crafts. However, the era of pixel-perfect designs faded with the advent of responsive and fluid web design, where they lost relevance (and thank God for that—pixel-perfect has always been an aberration for screens).
This shift forced designers to delve deeper into web media, understanding how it functioned and how a design should adapt and flow across various screen sizes. These changes significantly influenced how we handle design nowadays.
On the engineers' side, companies started hiring more "full-stack engineers." The problem was that many hiring managers were heavily focused on the back end. A significant portion of them displayed a strange aversion toward any kind of UI (like, seriously, Vim?) and viewed design as a low priority.
This perspective was logical considering their roles and responsibilities. The bias, however, lay in their evaluation of their peers' "full-stack" competencies.
Gradually, we found ourselves working not just with Front End Engineers, but with "full-stack" ones who only knew how to use certain UI frameworks (be it Tailwind, Material UI, ...).
Any deviation from these frameworks resulted in extended sprints and deep frictions between engineers and designers. This is what sparked the wave of articles suggesting "designers should learn to code."
It might be tempting to place the burden on designers, considering that HTML & CSS aren't overly complicated (the fear of engineers grappling with complex algorithms all day towards CSS is something I never quite understood). However, dealing with whatever framework the engineering team ended up choosing (often well before any designer joined the project) presents an entirely different level of complexity.
As a result, we find ourselves simplifying design artifacts, aligning them more and more with the default framework. In the Agile process, the focus is on delivering value to the user, often translating to actionable items and revenue generation within a company setting.
Any design input that even slightly extends a sprint is viewed as a threat to the engineers' velocity. Consequently, the significance of any design changes amplifies with the diminishing knowledge of anything front-end related on the engineers' side.
I believe designers should learn to code within reasonable limits. However, I also believe we are witnessing a concerning and alarming decline in front-end skills and craftsmanship on the engineers' side. The "full-stack" role has adopted a back-end mindset, primarily caring about whether things worked, disregarding how they functioned and how they appeared and performed.
If we want the "engineer+designer" pair to work, we should strive to build bridges between those functions. When engineers want to be included in product decisions, designers have to be included when engineers are working on their technical strategies and framework selections.
While we have to teach designers about how the web, the code, applications work, we also have to educate engineers about the importance of a company's brand, of the look and feel, of the experience of the company's applications and websites. Making things work is one thing; making them delightful to use while being functional is where we get the best value.