Wasa Kredit
Lead Developer
Context
I joined Wasa Kredit (now LF Finans) as Lead Developer, working with a team responsible for several internal financial systems. The environment had accumulated years of technical debt, duplicated logic, and inconsistent architectural patterns. My role combined hands‑on development with guiding the team toward more sustainable ways of working.
Work
Reducing Complexity & System Decay
- Refactored legacy components to reduce unnecessary complexity and slow ongoing system decay
- Applied architectural patterns — primarily the Strategy pattern — to bring structure and consistency to previously divergent code paths
- Analyzed older, tightly coupled components that were impractical to refactor and produced clear proposals for how they could be rewritten in a more maintainable form
Guiding Iterative Development
- Helped shift the team toward a more iterative and collaborative way of working
- Facilitated sessions where developers, testers, and business stakeholders sat together to discuss requirements and write Gherkin examples before implementation
- Strengthened shared understanding by grounding discussions in concrete examples rather than abstract requirements
Living Documentation & Executable Specifications
- Introduced the concept of living documentation using SpecFlow
- Translated business rules into executable specifications that served as both tests and documentation
- Helped the team understand how BDD/TDD practices could reduce ambiguity and improve long‑term maintainability
Application Development
- Worked across a broad technical stack including C#, WinForms, ASP.NET MVC4, WCF, XML, and XSLT
- Contributed to both backend services and user‑facing applications
- Used Team Foundation Server and continuous integration to maintain build quality and support iterative delivery
Outcome
- Reduced technical debt and improved the structure of key systems through targeted refactoring
- Helped the team adopt a more collaborative, example‑driven approach to requirements and development
- Established executable specifications as a practical tool for clarifying business rules and improving test coverage
- Provided architectural guidance for rewriting legacy components that could not be safely refactored
Reflection
This role blended technical leadership with hands‑on engineering. It was a chance to bring order to a complex environment, support healthier development practices, and introduce tools that made requirements and system behavior easier to understand. It also marked a shift in my career toward roles where architecture, process, and code quality intersect.
Social