Project Overview
After re-joining my placement company as a graduate developer, I realized I needed to plan how to save money effectively after spending four years living in overdraft as a typical student. While Google Sheets formulas initially helped me find an ideal allocation of savings accounts, the changing nature of bank interest rates and introductory AER offers meant I would need to constantly update my strategy.
As a developer, I became curious about how various savings accounts could be modeled programmatically over time, leading to this C# application built during company Kaizen time.
The Challenge
Personal financial planning presented several modeling challenges:
- Dynamic Interest Rates: Banks frequently change their savings rates
- Introductory Offers: Most high AER rates only last for the first year
- Account Diversity: Different savings account types operate with varying rules
- Time-Based Calculations: Need to project earnings over extended periods
- Strategy Optimization: Finding the optimal allocation across multiple accounts
Kaizen Development Approach
This project was developed during company Kaizen time - a Japanese concept meaning "continuous improvement" that aligns perfectly with Agile development principles. Rather than building a complex application immediately, I focused on creating a solid foundation of object-oriented classes that accurately model savings account behavior.
Technical Implementation
The application employs object-oriented programming principles to create a flexible framework for modeling different types of savings accounts and their behavior over time.
Core Architecture
- Account Classes: Individual classes representing different savings account types
- Transaction Modeling: Support for deposits, withdrawals, and recurring payments
- Interest Calculation: Custom logic for each account type's interest rules
- Time-Based Projections: Calculate expected earnings over specified periods
- Flexible Framework: Extensible design for adding new account types
Object-Oriented Design
The application utilizes key OOP principles to create a maintainable and extensible codebase:
- Inheritance: Base account class with specialized implementations
- Encapsulation: Account-specific calculation logic contained within classes
- Polymorphism: Uniform interface for different account types
- Abstraction: Clean interfaces hiding complex interest calculations
Functional Features
Each savings account class provides comprehensive functionality:
- Deposit Operations: One-time and recurring deposit handling
- Withdrawal Management: Account-specific withdrawal rules and penalties
- Interest Calculation: Accurate modeling of compound interest and rate changes
- Monthly Automation: Setup and management of regular monthly deposits
- Projection Analysis: Calculate expected returns over specified timeframes
Mathematical Modeling
The core of the application lies in accurately modeling financial mathematics:
- Compound Interest: Precise calculations for various compounding periods
- Rate Transitions: Handling changes from introductory to standard rates
- Time-Weighted Returns: Accounting for deposits and withdrawals at different times
- Optimization Logic: Finding optimal allocation strategies across accounts
Development Process
The project exemplifies the Kaizen philosophy of continuous improvement, starting with a focused afternoon development session and evolving through iterative enhancement.
Kaizen Time Development
Utilizing company-designated continuous improvement time:
- Initial Framework: Built core class structure in single afternoon session
- Iterative Improvement: Gradually enhanced functionality over multiple sessions
- Practical Focus: Prioritized solving real personal finance challenges
- Learning-Driven: Explored object-oriented design patterns through practical application
Design Philosophy
The development approach emphasized simplicity and functionality:
- No GUI Complexity: Console-based application focusing on core logic
- Class-Based Architecture: Clean separation of concerns through object-oriented design
- Extensible Framework: Easy addition of new savings account types
- Practical Validation: Real-world testing with personal financial planning
Technical Challenges
- Interest Rate Modeling: Accurately representing various interest calculation methods
- Time-Based Logic: Handling account rules that change over time
- Flexible Architecture: Creating extensible design for unknown future account types
- Mathematical Precision: Ensuring accurate financial calculations for long-term projections
Results & Applications
The C# Savings Calculator successfully achieved its primary goals while providing valuable insights into financial modeling and object-oriented programming applications.
Project Outcomes
- Personal Finance Solution: Solved immediate need for dynamic savings strategy planning
- Technical Learning: Deepened understanding of object-oriented design patterns
- Mathematical Modeling: Gained experience in financial calculation programming
- Framework Foundation: Created extensible base for future enhancements
Practical Benefits
- Strategy Optimization: Ability to quickly recalculate optimal savings allocation
- Rate Change Adaptation: Easy adjustment to new interest rates and account terms
- Long-term Projections: Accurate modeling of savings growth over extended periods
- Account Comparison: Objective analysis of different savings products
Technical Achievements
- Clean Architecture: Well-structured object-oriented codebase
- Extensible Design: Framework easily accommodates new account types
- Accurate Calculations: Precise financial modeling with proper mathematical foundation
- Practical Application: Real-world validation through personal use
Learning Outcomes
This project provided valuable experience in:
- Object-Oriented Programming: Practical application of OOP principles in C#
- Financial Modeling: Understanding of compound interest and savings mechanics
- Mathematical Computing: Implementing accurate financial calculations in code
- Framework Design: Creating extensible and maintainable software architecture
- Kaizen Development: Iterative improvement and continuous learning approach
Future Potential
The project has served its immediate purpose but offers several expansion opportunities:
- User Interface: Development of GUI for easier interaction
- Web Application: Browser-based tool for wider accessibility
- Investment Modeling: Extension to stocks, bonds, and other investment types
- Data Integration: Real-time interest rate feeds from financial APIs
- Full Rework of Core Logic: It's been a while since I created this, And looking back I already see a few issues. The program would benefit with a refactor and validation, especially now I am more experienced