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 TailwindUI or Flowbite 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?
In my opinion you don't need to be an expert at UX design, but certainly understanding basic UX can be helpful. I think a basic 2-3 hour course to understand the basics should be good enough.
At the end of the day UX is all about empathizing with your customers, understanding their limitations (bad internet? old phones? are they web users?) and understanding how they interact with the app/website
I personally don't think it's necessary to go full-blown design learning mode and learn the intricacies of Figma, Photoshop, and other UI/UX tools. However, if you have the time (and especially if your team is lacking design resources), then it certainly won't hurt.
For myself, I struck a sort of middle ground by just building a lot of a side project apps on my own. When you're doing a solo side project, you are the the product manager, designer, and software engineer, so I naturally got better and better at building smooth user interfaces over time. It's not as stunning as say Airbnb, but my top apps are overwhelmingly rated 5 stars with tons of glowing feedback about the simplicity and smoothness of my UI/UX.
When it comes to design, I have 3 core pieces of advice to get better on top of doing side projects:
I dive into all of this more here: [Masterclass] How To Build And Grow Tech Products To 500k+ Users For Free