Ask HN: How do you manage UI/UX for your side projects?
Like a lot of you I have mostly worked in back-end or systems software. My CSS/UI/UX skills are very minimal. I get disheartened by how my project looks or don't start the project because I fear it would look crap or I despise doing the UI/UX work.
How do I solve this?
202 comments
[ 0.17 ms ] story [ 226 ms ] thread0. Use a css framework like Bootstrap or Bulma, it's not difficult to put together a website/webapp with a bit of CSS skills (you don't need to know a lot of CSS to create a good experience)
1. Team up with the UI/UX designer who you've worked in past and offer them your backend expertise for their project.
Good ol barter has saved my ass multiple times by now.
2. If you don't want to get someone from your workplace, you can go on upwork etc...and hire a freelancer, it's a paid option.
I agree containers are confusing but honestly making a custom web app look good on all resolutions/aspect ratios is complicated in my opinion.
However, if you know how to work with Bootstrap, I don't see a reason to learn something else for side projects, if you want to minimize the effort you put into front end stuff. It might not be ideal, but it's good enough imo.
That said, the Bootstrap 4 defaults are much more modern looking than Bootstrap 3's.
Note the criterion here is speed, not modernity or aesthetics.
Edit: by speed, I mean speed of development, or ease of development.
I've found that bootstrap remains the best option to create a reasonably responsive, simple layout that is still quite usable on mobile as much as on the desktop, with no more than an hours' worth of work. And you don't even need to know css really.
I've used vanilla CSS and HTML and even after hours of amateur effort the site always looks like it came from the 90s. I don't have the time to worry about what font family I want to use, is that too much to ask?
Edit: I am a UI/UX designer, would like to talk to anyone on this matter. I would actually like to team up with someone to work on some project (but not necessarily). I'm kinda a perfectionist, I don't like WordPress or ready-to-use themes/CSS-frameworks and I like things original, optimized, useful and beautiful from both inside and outside
For UX, read about UX research and show your work to potential users, make them talk constantly and just listen, see them struggle. It's priceless.
Also themeforest.net is great too, pharaohgeek mentioned that already, but that is also a great starting point as good themes look more like bootstrap documentation to give you a huge head start versus from scratch.
Obviously, this works only if you don't need any custom elements, but I'm not a designer, so I just usually use what's available.
1. As other comments have mentioned - if you are willing to pay, a good designer will go a long way.
2. Use a common component library with a custom theme so it is good code but not 100% the same as elsewhere
3. Keep lots of whitespace between everything
4. Keep it simple - good UX is about so much more than UI and feature creep is so often the enemy of good UX
It would be helpful to pickup a design tool. I've used figma and sketch, but I'm finding figma to be really helpful.
------------------------------------------------------------------
How I think of things is like this:
1. Either my entire day is dedicated to design
2. Or its dedicated to programming
------------------------------------------------------------------
I find it difficult to swap between design / programming frequently. One requires creativity / looking at lots of things for inspiration. The other requires a more logical mindset.
I would go further with this analogy, there's (4) main roles in webapp development
(1) UI/UX/Design
(2) Frontend Frameworking (React,HTML/CSS/JS/mocking things up, etc)
(3) Backend development (Firebase, nodeJS, etc)
(4) Database development / sysadmin / everything else
Try and only focus on one or two or those things everyday. You can skip (1) if you are emulating a website or building something with a heavy backend MVP. (3) and (4) can be mostly skipped if making a small project in firebase. (2) can be skipped if you use a CSS framework, etc.
Unless you have a friend who happens to be a front end engineer and who wants to work on side projects along with you, the best solution is to learn just enough to get by. Learn react or angular and learn how to customize existing free themes available out there.
Start by putting the technology aside, it only serves to bring your idea to life. Which bring us to the ideas...
Ideas are never 100% original. I challenge you to imagine an object of a shape and color not made from anything you've ever seen... it's impossible. What I'm saying is that you need to take inspiration from various sources. From this you'll be able to bring these elements together in a new way.
So I'd suggest looking at http://collectui.com/ and https://colorhunt.co/ to start.
Come up with a design in Illustrator/Designer and pretend HTML CSS REACT etc don't exist (ignore them).
Finally look at what you have created and realise you can bring that to life using literally any technology you like.
Mock out your components in HTML CSS.
create react/vue/angular components and port your previous HTML/CSS into these.
And Voila!
A good framework and set of components can help a lot though. I'm building a mobile app at the moment using flutter, and the material components in that make it so much more efficient to build nice looking things that work well. Animated transitions between screens for instance can be really fiddly, but flutter has support for some useful ones out of the box using 'hero' widgets.
I never came up with a special talent for UI/UX. I remember I had a friend who was web developer he was insanely talented , could make a sexy landing page in just a few minutes.
For me this has always been impossible , I immediately start thinking about optimizations, legacy browser support , CI/CD etc... Typical issues of system driven person....
A few years ago I realized I wasn’t like him and it was « Okay ».
I found out I can’t do « many side projects » at once nor frequently.
Instead I only build one project at a time but I do it properly. I design things out in Photoshop or Adobe XD where I usually spend weeks before coding anything.
The goal is really to be working in pure V Cycle where you don’t start Prototype unless you are done with the design.
Been using this technique ever since and I haven’t been frustrated ever since. Would recommend to try it with any design software that you like to work with.
Why would you write anything that can't scale if you can avoid it? Whether or not you're looking to turn your pet project into a SAAS business is a moot point when you can get scalability for free with other approaches.
Getting something shipped matters more.
On an (albeit fairly simple) app that I'm building, my CSS file, using Tailwind, is 6.1kb gziped. I think that's pretty reasonable.
As for UX, if you have a spouse/partner/SO ask them to use your project and take their feedback seriously. Getting actual people to use what you've built is the fastest way to a decent UX. You have to set aside your ego and let the users dictate how they want their experience to be. It's non-trivial.
For example let's say you're making a project that will help companies manage real time logging of data more efficiently.
Once a basic level of design competence is reached pretty much nobody who is looking for something like that cares too much how your site looks. You could make a simple landing page with a bootstrap theme in a few hours.
* Here is the site - https://prettydiff.com
* Config - https://github.com/prettydiff/prettydiff/blob/master/api/opt...
To automate this properly so that user performance is fast and maintenance is simple you don't need any frameworks or tooling. You just need a good plan and a proper organization of things.
About 80% of the user interactions are built from automation. There is some manual wiring that has to occur for various things where interactions are unique to a given option. The manual interaction stuff wasn't too bad when I wrote the code this past spring and it requires almost no maintenance. All the stuff that would be a pain the ass to keep up with is fully automated.
For things that make money, I just hire a professional. There have been times where I have put a lot of personal time into improving a UI. What ends up happening is that that time ends up being a total waste of time because the UI/UX professionals are able to do the same work in a fraction of the time. It's almost never a waste of money, either.