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:

  1. Inheritance: Base account class with specialized implementations
  2. Encapsulation: Account-specific calculation logic contained within classes
  3. Polymorphism: Uniform interface for different account types
  4. 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