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

18 points by im_lince 2 days ago | 12 comments

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 a day ago | next |

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

im_lince a day ago | root | parent |

Cool, i will check out the notion list. Plus, I have one more question: how can I structure the code properly? For example, if I have custom UI components, state management, page layout, types, etc., how do I organize this in a proper structure? for example, checkout folder structure of this project: https://github.com/firecamp-dev/firecamp/tree/main/packages

Adrig a day ago | root | parent |

This is where my expertise ends as a designer, sorry!

What I meant about small design system is also true on the code side, since a proper design system is this design / code mirroring.

This is where js frameworks help a lot since you can create components with properties and nest them, but that's about all I know about FE-eng

im_lince a day ago | root | parent |

Yeah, got it. Can you recommend some good real projects or web apps to check out for design inspiration? I want to see how design principles are executed in real applications. If they are open source, that's even better—I’d like to check out the code as well

austin-cheney 11 hours ago | prev | next |

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.

JLCarveth 2 days ago | prev | next |

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

solardev 2 days ago | root | parent | next |

Seconding this. It's one of the best resources I've seen and easily worth the money.

frontendmasters.com and LinkedIn Leaning also have good video courses.

Also see MUI.com as a nice way to structure a component framework.

Beyond that, work with a good designer, make Figmas before you code, test out the flows, iterate it, and then throw everything away and do it again 2 years later when fashions change (sigh).

A lot of what we see as good/modern design is just fashion cycles of designers stealing from each other. For a while everything looked like Yahoo, then everything looked like Google, then everything looked like Bootstrap, and now everything looks like Tailwind/Vercel. It's the designer equivalent of Stackoverflow.

Leftium 2 days ago | prev | next |

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.