|
|
|
|
|
by SeeDave
2465 days ago
|
|
>In 2016, Slack was two years old and already used by millions of people. Our codebase had grown rapidly, and like many companies that focused on product/market fit, our code was built in a way that favored time-to-market over maintainability, consistency, or reusability. >What does a button look like in Slack? How do you build it? What words do you put in it? It was up to individual teams to make these decisions. I am really surprised that their engineering org took so long to see the long-term payoff of common CSS components/styling when it comes to linting, minifying, and caching on web and sizing/spacing/scaling on native mobile. I am even more surprised that their product team didn't consider a unifying "brandfeel" from the get-go. If your goal is to _scale_ and _scale fast_ while being a judicious steward of VC monies... wouldn't you want to eliminate as much wheel-reinventing as possible? I say this without any gratuitous negativity/internet holier-than-thouism... I just wouldn't expect this level of "bespoke craftsmanship" for a solved problem like common theming/styling in a engineering org at their series F stage with Accel, a16z, and KPCB already on the cap table. Weird. |
|
We had a pretty good idea what needed to happen to fix it, but there was a ton of work happening to maintain our same quality at scale across all of our feature teams. When you're focused on maintaining and building toward better reliability, it's harder to slow down and centralize principles, components, etc.
In the end, it's difficult to get people to agree to one thing, much more so when you're adding more and more people to the mix. We're in a much better place now. More than just having an interface library, we've created a framework for debating the various parts of the system and reinforcing that understanding that was missing early on.