I stole this title, Engineers Should Not Design Streets from a Strong Towns article. I thought I would give another perspective.
I am a software engineer (also commonly called a programmer). Building software involves many different roles. Different companies have different roles and different names for roles, but a typical setup for me involves software engineers, product managers, and UX designers. Each role has their own strengths and their own skin in the game. The product managers identify the needs of the user and dictate what we should build. The UX designers determine the look and feel of the product—the layout, different screens, wording, images, branding, etc. The software engineers do the actual implementation: they solve the technical problems needed to build the product. This is usually not a one-way flow of command. The engineers get involved early and influence the product based on technical feasibility, or the UX designers might find that a particular feature does not resonate when shown to a user research panel. We work as a team and each person has their role to play.
When it comes to performance reviews, each role is rated differently; product managers have skin in the game to make products that users actually want to use, UX designers are rated based on how well they were able to design something that was both elegant and resonated with users, and software engineers are rated based on the execution and technical difficulties they overcame. A product can be an absolute flop with users, but there might have been many difficult technical challenges that were overcome by the engineers to build it, so the product manager receives a bad performance review while the engineers get promoted—or vice versa if the product was a success but trivial to build.
Now we understand that each role has their own strengths (after all, a jack of all trades is a master of none) and also their own value system. Everyone wants the product to be successful, but the top priority for the UX designer is likely to build beautiful things, and for the software engineer it is likely to solve technical problems.
In the software world (most commonly in the video game world), when you let software engineers design the visuals, we call it “programmer art.” Often, programmer art refers to the placeholder graphics that come before the artists are able to produce nice graphics for the end product.