In 2010, I worked for a great internet company as part of a team responsible for billing. The company founder wrote the first version of the system 10 or 15 years before I joined. The logic was all in complex SQL Server stored procedures, each of which had thousands of lines of code. It was time to refactor this existing billing infrastructure into something new, and I can’t count the number of hours we spent talking to the financial team so that we could create a design that would fit all their current and future needs.
The great news is that we made it. With our new implementation, we could add new products or financial rules in hours. The financial team was very happy with us. Feature requests that in the past took weeks now took a couple of days. The quality was also much higher. Our design was highly testable, so we rarely introduced regression bugs. Even our most junior engineer could easily navigate the code and feel confident enough to make critical changes. In a word, our new design was simple.