Crowe LLP
- 2021 - 2024
- Senior Software Engineer
I joined Crowe LLP in 2021 to support and evolve their enterprise product design system, eventually becoming the system’s lead developer and sole maintainer. While the original system had solid roots, it needed focused care to realize its full potential. Over the next few years, I rebuilt much of it from the ground up - modernizing architecture, adding functionality, and working closely with product teams to ensure adoption and integration across Crowe’s applications.
By the time I left, the system included over a hundred Angular entities - components, directives, services, and modules - spread across six independently versioned packages. I also maintained a custom documentation site built in Angular that combined static markdown with live Storybook examples. Despite a lean team (often just myself), the design system grew into a robust, scalable platform relied on by teams across the firm.
Development and Engineering
The system, dubbed the “Peak Design System,” was built on Angular and encompassed everything from component libraries and theme packages to utility directives and graphics. I was responsible for the entire ecosystem: developing new features, maintaining existing code, fixing bugs, managing releases, and supporting both Angular and web component exports for broader compatibility.
Much of the early work involved refactoring legacy code to improve accessibility, consistency, and developer experience. I prioritized structure and maintainability, introducing better patterns, tighter API surfaces, and clear usage documentation. Through it all, I worked closely with product teams to understand their needs and pain points - often delivering enhancements directly in response to those conversations.
Documentation and Automation
With limited bandwidth, automation became essential. I built out pipelines to handle changelogs, versioning, and publication across all packages. The documentation site itself was also automated - pulling in live component examples, rendering markdown, and surfacing relevant updates and API changes through CI-driven content generation. These efforts significantly reduced maintenance overhead and improved visibility into system updates.
Strategy and Collaboration
As my role evolved, I took on greater strategic responsibility - setting the roadmap, identifying areas for improvement, and facilitating cross-team collaboration. I introduced regular monthly feedback sessions with developers from key teams, ensuring the system remained aligned with real-world usage and needs. Their input helped shape everything from component APIs to accessibility features.
To support external contributors, I documented clear development standards and created shareable linter packages for both Prettier and ESLint. These standards helped unify style and quality across the growing number of applications using the system.
Education and Enablement
Beyond engineering, I dedicated time to developer education - hosting workshops, pair-programming sessions, and one-on-one consultations to help teams adopt Angular and the design system more effectively. I also served as a go-to resource for accessibility and front-end best practices within the company.