Delivering Business Value: The Web Engineer’s Dilemma
As web engineers, our primary goal is to deliver business value. However, to achieve this, we need to answer two critical questions: what do we need to deliver, and how do we know when the project is complete?
Scoping Requirements and Estimating Effort
To deliver business value, we must first scope out the requirements and convert them into a technical specification. This involves estimating the effort involved to approximate when the project will be finished. Estimating is a fallible process, and we’ve all had experiences where our initial estimates were way off.
The Consequences of Poor Estimation
When we underestimate the effort required, pressure mounts on the deadline. To meet the deadline, we often take shortcuts, copying and pasting code snippets, duplicating components, and creating quick fixes. While this approach may seem effective in the short term, it leads to technical debt, making our codebase complicated and unmaintainable.
The Accumulation of Technical Debt
Technical debt is unavoidable, especially in the fast-paced front-end world. As we rush to deliver features, we accumulate debt that will be painful to resolve in the long term. Our codebase grows, and we spend more time maintaining existing code than working on new features.
The Importance of Reducing Technical Debt
While we can’t avoid technical debt altogether, we can take steps to reduce it. By implementing design systems, unifying our workflow, and improving communication between design and development teams, we can reduce technical debt and deliver business value.
A Success Story: Implementing a Design System
I recall a project where we migrated from a legacy Ruby on Rails application to a microservice architecture with multiple React applications. We implemented a design system, unifying our workflow and reducing technical debt. Although it was a challenging process, the results were worth it. We saved time, improved communication between teams, and delivered business value.
The Takeaway
Implementing a design system may seem like a blocker in the short term, but it pays off in the long term. By reducing technical debt, we can speed up front-end development, improve communication between teams, and deliver business value. As web engineers, it’s essential to prioritize reducing technical debt to achieve our primary goal of delivering business value.