Future Finance operates an online student lending service in the UK, providing loans to both undergraduate and graduate students. When I first started working with them, they had been operating for three years, seeing steady, positive growth year-over-year but were beginning to see technical debt degrade their team's efficiency and the quality of new features delivered. As a new set of executives stepped into the organization, they identified the need to establish a firm technical foundation as critical to the future success of the business, allowing their platform to scale up as they pushed toward aggressive growth targets.
I was brought in to perform an architectural review of the technology and to deliver a set of recommendations for the architectural changes needed within the system. Spending a week on-site with the team, I performed an in depth review of both their source code and systems, leveraging the insight of the engineering team members. Out of this I produced a set of architecture diagrams and associated documentation that outlined the structure and operation of the existing platform. Based on this insight, I outlined three options and the associated tradeoffs for a comprehensive refactor of the platform. These options included an iterative refactoring of the existing system in place, a gradual migration away from the existing platform onto a completely new system, and a full rewrite of the system in its entirety. After presenting this set of proposals to the executive team and members of their board, we selected the gradual migration onto a new platform as the approach that would maintain continuity of the business's operation while fully modernizing the platform. Based on this feedback, I finalized the architectural proposal for executing this approach, ensuring it aligned with the needs of the business, the abilities of the engineering team, and standard best practices for designing a highly scalable distributed web platform.
I've continued to work as a part time, multi-faceted member of the engineering team, stepping in to fill various gaps based on the needs of the team. During this time frame, I've had the opportunity to support the team in the following manners:
Product Management: Early on I worked directly with the COO to develop and manage a product roadmap for the system. This included evaluation of the capabilities and needs for the system, identification of opportunities for improvement, and prioritization of these initiatives in light of the objectives for the business. This covered all aspects of the product including streamlining the customer experience, increasing the efficiency of internal agents, and simplifying areas of the system to reduce technical debt.
Scrum Master: I was then asked to help refine the software development process used by the team, stepping is as an interim scrum master to guide the team in adopting the Scrum software development life cycle. After an initial kickoff meeting, I continued to lead the adoption of this process with daily standup meetings, bi-weekly sprint kickoff and retrospective meetings, weekly progress updates, etc.
Front-End Development: After losing one of the two dedicated front-end engineers on the team, I was asked to step in and help complete a rewrite of the React-based loan application front-end app. Being familiar with the structure of this application from my work on the architecture review/proposal, I got up to speed immediately and worked in a full stack manner to complete the remaining functionality and integrate it with the associated backend services designed to consume this information. After it's completion and deployment, I remained involved primarily providing design guidance, code reviews, and on occasion, pitching in on the development of new features.
Backend Development: Eventually the pendulum swung back in the opposite direction, and the team found themselves short of backend developers. Having experience across the entire system at both the design and implementation levels, I jumped in and helped complete the development of a new Ruby on Rails-based backend service that was responsible for coordinating the entire loan origination workflow (e.g. application submission, underwriting, enrollment validation, etc).
Architecture: Most recently I've been asked to take responsibility for the architecture of the platform. This includes defining the vision for the architectural objectives of the platform, setting a process for managing architecturally impactful decisions, and providing guidance on the changes proposed by different groups within the tech team.