Introduction
I was tasked with a high-stakes project: unlock new workflows for prospective customers by fundamentally rethinking and rewriting core components of our fintech platform. The scale and complexity were significant, impacting nearly every part of the platform due to a tightly coupled architecture.
With two previous attempts to tackle this initiative within six months, our mission faced both time constraints and a skeptical timeline. Additionally, my team was newly formed, drawing in engineers from around the company. These circumstances required immediate, innovative strategies to foster team cohesion, accelerate development, and address both technical and structural challenges.
Challenges Encountered
The project's ambitious nature introduced an array of challenges early on:
- Team Dynamics: Formed from engineers from different teams, we had to quickly gel, align on work styles, and start delivering on our goals.
- Scope and Impact: Due to our work being central to the application, even minor changes could create cascading effects across the platform.
- Process Maturity: Our existing processes were not adequately equipped to keep pace with the speed and agility needed to execute on our goals, calling for a more adaptive framework.
Solutions and Strategies
Establishing a Cohesive, Autonomous Team
To build a high-functioning team, I emphasized collaboration and communication, encouraging a culture of autonomy combined with accountability.
We centered on a set of core principles which guided our approach, including "informed action over detailed documentation" and "collaborative achievement over individual excellence".
We fostered trust and transparency through weekly kickoff meetings where we reviewed our goals and status, open channels of communication via Slack, and cross-functional pair programming.
Iterative Planning and Prioritization
I adopted a lean approach to planning and execution in collaboration with my Product and Design partners. By developing a set of milestones with key deliverables, we were able to pull risks forward and prioritize a minimally viable product that could be quickly shipped to gather user feedback. This approach allowed us to validate key assumptions early, supporting our focus on iteration and enabling adjustments based on real-world data instead of expending resources on detailed documentation.
This strategy allowed us to focus early on foundational work such as creating robust API stubs and contracts, UI prototypes, and fast iteration loops, which fostered momentum and minimized dependencies.
Refining Processes for Speed and Flexibility
We adapted our workflow from Scrum to Kanban, with a focus on small, rapid iterations that minimized the wait time between code merges and feature releases. Non-blocking practices were prioritized, such as:
- API Stubs and Simple Contracts: To unblock frontend work and decouple frontend-backend dependencies.
- UI Prototypes: These prototypes enabled early end-to-end validation while providing a foundation for more robust implementations.
- Low Friction Merging: By reducing the overhead of code merging and focusing on whole-feature goals in one-week sprints, we decreased cycle times and improved development speed.
These adjustments to our processes created a leaner workflow that increased efficiency and output while maintaining product quality.
Iterative execution of complete journeys before complete surfaces
Accelerated opportunities for learning, lowered risk of blocking from cross-pod dependencies, created release optionality.
Weekly goals defined by eng leads around vertically-integrated functionality
Created focus and helped the team maintain momentum.
Fluid teaming that adjusts to the needs of the work
Ensured team was able to make local progress while avoiding team-wide slowdowns caused by overscoping to fill plates.
Results
Through these combined strategies we achieved a 150% increase in team velocity when compared to our previous standard pace. By the end of our first milestone, we delivered several key customer-focused features:
- Streamlined Workflow Capabilities: Core features such as Invoices and Payments were separated, optimizing user experience for better alignment with customer needs.
- Improved Architecture: The re-architecture included a new frontend framework, a simplified app architecture, and a newly designed event system, making the platform more scalable and resilient.
- Efficient Incremental Delivery: Our iterative, end-to-end approach delivered incremental value, allowing us to showcase working features to stakeholders, reinforce team morale, and validate our strategies at regular intervals.
Lessons Learned
Reflecting on the project several key insights emerged:
- Focus on Controllable Factors: Concentrating on core functionalities during periods of uncertainty helped us maintain momentum and align efforts on aspects within our control.
- Proactive Conflict Resolution: Encouraging open communication and actively addressing disagreements allowed us to identify and resolve issues quickly, preventing productivity loss.
- Trust in Foundational Principles: Leaning on core principles like "bias for action" and "collaborative achievement" provided a stable framework for the team, particularly during setbacks.
Conclusion
This project transformed not only the platform but also our team's approach to development. By implementing lean methodologies, fostering a culture of autonomy, and iterating on processes based on real-time feedback, we overcame significant structural and operational challenges. Our journey underscored the importance of agility, strategic focus, and a collaborative mindset in executing ambitious, high-impact projects within complex organizational structures.