Comment by Tade0

Comment by Tade0 14 hours ago

1 reply

> How do you roll out a component library successfully?

If you can, avoid it. If you must, start with a design system and build on top of that. Let people file issues in your repo and give feedback there. Document your work extensively.

Whenever I'm job searching I ask if a given company has an internal UI component library[0]. If the answer is yes, I take note of that as a red flag.

As for the reason I'll refer to Akin's Laws of Spacecraft Design, specifically point 39:

https://spacecraft.ssl.umd.edu/akins_laws.html

39. Any exploration program which "just happens" to include a new launch vehicle is, de facto, a launch vehicle program.

39. (alternate formulation) The three keys to keeping a new human space program affordable and on schedule:

1) No new launch vehicles.

2) No new launch vehicles.

3) Whatever you do, don't develop any new launch vehicles.

Replace "launch vehicle" with "internal UI component library".

Internal UI component libraries are expensive to produce and maintain - they're much more complex than your average CRUD app and require skilled, disciplined people to actually pull off, as you have to think years into the future and have as little staff rotation as possible.

The organisation I work for, which shall not be named, is on its second attempt at this. Previous was outsourced to another company and that ended predictably badly. The current one is much better and is done internally by a dedicated team, but still documentation is lacking and occasionally there are bugs that would normally compel me to drop a UI library entirely.

All this in a company that employs tens of thousands, of which thousands are developers, so it's not like they can't afford to maintain a project of this scale.

Overall it's hard to do it correctly and it's best to avoid having such a headache on top of your regular development efforts.

[0] Unless of course their business is producing a UI library.

richwater 13 hours ago

Frankly, for any company above a certain size, this feedback is not helpful.

Having consistent, recognizable branding across different products is valuable not only in reducing duplicate engineering time (building X functionality 3 times) but also keeping customers (end users, perhaps paying users) happy, comfortable and familiar with the product.

I'm not advocating building completely from scratch unless you're a Fortune 500 company (and even then the value add is debatable), but rather starting from a known framework and expanding upon it.