Questions:
-
Is learning design a worthwhile investment as someone most interested in doing full-stack work at product-based startups?
-
Might working in a small product-based startup be an effective way to pick up design skills while working as a SWE?
-
How can engineers build more complex side projects without any design skills?
Regarding #3:
I’d argue that basic product design skills are critical for building any CRUD application. You can’t build something without defining what it’s going to do first.
Literally - you can’t write code for a feature if you don’t know how the app will behave during a loading state, an error state, a complex edge case from a wonky user flow, etc.
You can wing the design and iteratively dogfood it to improve its UX - but that’s the same as doing UX design while having zero UX design skills. It’s the software engineering equivalent of writing spaghetti code - except you’re not even improving.
Personally, I find that UI libraries like or are most helpful for solving UI problems like designing a button or a modal. However, they can’t help you decide how a screen in an app should work, nor can they abstract away all design challenges for more custom use cases.
Also, any CRUD application built with poor design will inevitably feel like a crappy database client.
The design problem applies to backend projects, too. Backends exist to service frontends, so you can’t build a backend without knowing what features the frontend needs - and you can’t do that, either, if you don’t design it first!
These are all challenges I’ve faced working on my own projects.
I suspect the best approach is really to just learn UX design and a design tool like Figma. However, that’d be a hefty investment given UX design is a separate field from SWE - especially if it’s just for a side project.
Also, building cool stuff as a semi-competent engineer is tons more fun (for me) than learning design from scratch!
What are your thoughts on my aforementioned questions?