HACKER Q&A
📣 im_lince

How can I improve UI dev skills? Looking for real-world examples


I’m currently working on improving my design skills, especially in the area of UI/UX. This week, my focus is on understanding how great products develop and manage their user interfaces.

I have a few questions that I’d love some insight on:

What key design principles do great products follow when building their UI? How do they handle large components in their interface while maintaining usability and consistency? Any best practices or resources you'd recommend for tackling complex UI/UX challenges?


  👤 Adrig Accepted Answer ✓
Design principles:

— Don't reinvent the building blocks of UI. It's mostly a designer problem than a dev problem but I often see folks reinventing navigation, buttons, or forms when the standard pattern would work fine. There is a high UX cost to breaking existing patterns.

— Think in flows, not screens. Gather the context for the starting point, the objective of your feature and create the path between them. I like using the job to be done framework for this

— Speaking of frameworks and tools, simple is almost always the best. Don't buy into a complex process designers came up to legitimate their job. Find out what to build and how to build it. Use reference, user interviews, data analysis, existing patterns and you'll be more than fine

Large components:

— Look into design systems, it's a whole topic. My advice for 90% of software companies is to have a small but robust design system with the basics well documented (typography, spacing, colors, basics UI components). Then jam with it depending on your needs. Extensive design systems require a dedicated designer and dev to maintain. More often than not, they end up as pure chaos without them.

Resources:

I have a ton, I put them all in a Notion list, feel free to check https://impasto.notion.site/Adrien-s-list


👤 JLCarveth
I've found https://www.refactoringui.com/ to be quite helpful, you can get the first two chapters for free.

👤 meiraleal
Design systems. Study many of them. There are great ones coming focused on web components (the most interesting the ones based on Lit).

Here is an extensive list: https://github.com/alexpate/awesome-design-systems


👤 austin-cheney
Try looking at my prior personal project: https://github.com/prettydiff/share-file-systems

Imagine loading a large dynamically populated page in the browser with state restoration fully executed as faster than 80ms. I describe that in great detail here: https://github.com/prettydiff/wisdom

I built an original test automation engine for that application because I needed something that supported command and control across multiple computers in the browser for a peer-to-peer environment. On just a single computer it achieved 300 points of evaluation in less that 8 seconds with full file system execution from the browser.

The application also demonstrated an OS-like GUI in the browser that achieved accessibility with full file system display.

Here are the key insights I employed:

* Less is more. Focus on architecture with an obsession on simplicity and reuse even if greatly inconvenient. That often required an irrationally high level of refactoring.

* Speed is an understanding of tree models and transmission and nothing more. Always navigate tree models where they are available, such as the file system and the DOM, in preference to string parsing. String parsing, in any form, is a performance killer. Binary payloads and bidirectional communication are vastly superior to HTTP in every conceivable scenario.

* Other UI developers are cowardly. Don’t let that limit your ambition. Don’t listen to a bunch of bullshit cliches. Measure things and execute according to evidence. Reinvent absolute everything you see fit, and yes it will make other UI developers cry. Real world users don’t care about the sad tears of your peers.


👤 Leftium
https://doing-design-right.com/

> ... how to solve complex interface tasks by redesigning a real-life app used by more than 2 million users.

> In this course, you will work on a real-world application, not a fake one. It already exists and is called Fedica. Its interface is outdated and has many issues.


👤 rozenmd
Build things and get feedback as you go.