Streamlining Financial Calculations for a Finance App: Enterprise Value Determination and Optimization Strategies
In this meeting of the State Changers team, the main topic of discussion was around improving the manageability and readability of their back-end functions and databases. They discussed how the team was writing complex functions with a considerable level of 'context'—their term for functions which rely on data from a linked database. The potential performance impact and testing difficulties were discussed.
The team talked about their use of "Xano" (a back-end as a service platform), focusing on how repeated write/rewrite operations to the database could be reduced for faster and more reliable function calls.
In efforts to simplify their operations, the team proposed distinguishing between pure functions (like mathematical operators which do not modify the inputs) and functions with side effects (which do alter the inputs). This would also involve reducing context or reliance on dynamic database operations inside complex functions.
Another strategy explored in the meeting was to separate concerns, i.e., breaking complex functions into smaller parts—each performing a single operation. This included the suggestion of 'mountain smashing,' or targeting the highest complexity areas for simplification to get the maximum benefit in managing the system and adding new features.
The team also discussed the idea of having group identifiers in databases to group related operations together. They debated the merits of identifying related functions using partial UIDs (Universally Unique Identifier) present in their existing database structure. The goal was to find a balance between structure (which machines read easily) and convention (which humans prefer for readability and intuitive structuring), without overly complicating the system.
Finally, a book, "The Goal" by Eliyahu Goldratt on the 'theory of constraints', was recommended for a deeper understanding of managing complex systems. The idea was to approach improvements iteratively, focusing on the areas causing the most challenges and continuously refining the system.
The meeting was exploratory and aimed at refining the processes to improve efficiency and manageability. It would be beneficial to teams working with complex back-end operations, database management, system optimization, and coding best practices.