I once took on a web project tasked to achieve multiple outcomes. First, make improvements to an existing UI Library to leverage it for a web app modernization effort. In parallel, work on getting the new web product off the ground and implement new features every Scrum sprint. I thought that perhaps there could be some synergies in what new features we implemented that could be extracted into general components for the UI library. Vice versa, I was optimistic that the new elements the designers came up with would be incorporated into the library for reuse throughout the rest of the project. Boy, was I wrong.
To start, the UI library was a hot mess. Base components and a full set of standardized styles were missing. There were practically no unit tests, zero visual tests, and zero accessibility tests. Documentation was spotty and hard to use. All these issues needed to get addressed. New UI library enhancements needed to get prioritized. That is a lot of work.
The new web app product had its host of problems. The project lacked a thorough understanding of the application UI and UX. Given that the modernization effort was going to rely on existing service infrastructure, and the machinery had accumulated over a decade’s worth of fixes and enhancements, process knowledge was hard to identify. When we finally implemented a feature, it was hard to justify spending project hours extracting it to the UI library with a slew of other app features waiting in the backlog.
There were many problems related to this project, but the two I wanted to focus on this article were building out a UI Library and working on web application features. In the end, I learned a valuable lesson — focus. Focus on either building a UI library that a project team will be able to leverage for one or many other projects. Or focus on implementing features for a new or existing web application. But don’t do both.