April 06 2024, 10:21

I wrote a detailed article about an interesting experiment on one of the projects. I needed to dissect the logic of a large Excel file — it contained several hundred quite complex formulas, and it worked like this: a manager would input about a dozen parameters on one tab, and all other tabs were ready to print the estimate for the client. It involved quite complex specifics and complicated products, with numerous features like a certain product having to be accompanied by a certain service, and here you need to multiply by two if there are four. No one at the client fully understood it; it simply had been working for over ten years, and throughout these ten years, people had been slightly tweaking its logic to the extent of their understanding. There was no documentation, but even if there had been, it would only have hindered, because what was done later based on the documentation surely would not have matched what Excel outputted, and avoiding reengineering would still have been impossible.

At that time, I racked my brain on how to make this reengineering feasible within a finite time, measurable in weeks, and came up with a solution based on functional programming in Groovy.

I am publishing a detailed analysis of the solution and a repository with the code. I had to write the code from scratch for the article, as well as devise a simpler Excel for demonstration (hundreds of times simpler than the original).

Leave a comment