Migration of Sprout Social's localization system

Localizing a dynamic application like Sprout Social into multiple languages is a complex undertaking. For years, Sprout engineering team got by with a scrappy homemade localization solution. While this solution served us for years, we were running into limitations more and more as the team and the application grew. In this post, I will outline some of those limitations and the steps we took to redesign our localization system to address those limitations.

Engineering Teams

Language and Engineering systems are ingrown

In some ways we can think about engineering systems in the same way linguists think about natural languages. Both can become ingrown and complex over time. How might we relate what we know about how "simpler" natural languages are formed to engineering teams and systems?

Design Systems

Design System Residency Write-up

I was able to help the Design Systems team at Sprout Social propose a residency program, and I participated as the first resident. A residency program is a way for developers and designers to join the Design Systems team for a period of time before returning to their normal product teams. I was able to complete several valuable projects as well as learn more about our systems, collaborating as a product organization, and how residency programs can work within an organization.


How to painlessly turn on ESLint rules

Linting is a powerful way to catch bad code and enforce best practices. That said, turning a rule on for an existing project can be difficult. esplint is a tool that makes it easier to introduce new ESLint rules to large, legacy codebases by tracking, enforcing, and updating file and rule scoped warning counts.