NEWFILES
Building an Application from Scratch with a Lean Team
In the ever-evolving landscape of software development, embarking on the creation of a new application is both a formidable challenge and an exhilarating journey. As a technical architect contributing to a London-based software tech start-up, I present a practical approach deploying an Guerrilla-style Innovation team framework.
Unleashing Disruption
The journey commences with a disruptive mindset, as the team defies traditional structures and embraces a nimble, unconventional approach to software development.
Stealthy Prototyping
Drawing from a diverse pool of talents, the team stealthily prototypes, sidestepping bureaucratic hurdles. Swift and resourceful, they leverage minimal viable products and rapid iterations to test ideas in real-world scenarios.
The Genesis: From Flow Diagram to Prototype
The journey initiates with a straightforward flow diagram, crafted by a solution architect using recommended technologies such as PlantUML or draw.io.
Cloud Technologies as Building Blocks
An initial developer pioneers the translation of the vision into a basic prototype, leveraging cloud technologies to construct fundamental building blocks. This serves as a functional foundation, sparking conversations and providing a tangible starting point.
Pair Programming Approach
With the prototype established, introducing an additional developer facilitates a pair programming approach. This strengthens the foundations and initiates discussions around technology choices. At this early stage, reconsideration of the best technology for the job is encouraged, avoiding trends in favor of suitability, contemplating database choices, and synchronous vs. asynchronous API communication.
Collaborative Development and Effective Partnerships
Upon solidifying technology choices and architectural decisions, the team expands, integrating new developers with expertise in chosen areas. The ethos remains focused on a “get stuff done” approach, fostering effective partnerships that drive competition and nurture collective learning.
Flow Dynamics and Detailed Diagrams
Navigating the intricate dance between front-end and back-end systems, the project unravels multiple flows, in my use case: notably associated with an order management system. This includes Order Placement, Order Confirmation, Inventory Check, and other stages. The response involves a logical breakdown, transforming an initial high-level diagram into detailed schematics for each specific flow. This is an ongoing process of reworking until it starts to slow naturally.
Terraforming the Infrastructure
Early adoption of Infrastructure as Code tech, such as Terraform, becomes pivotal, proving indispensable in facilitating the provisioning of components for multiple environments such as sandbox, dev, uat and production. The infrastructure backbone, built through Terraform, establishes a foundation for scalability and adaptability.
Event-driven Architecture and Integration
Extensive use of the AWS Serverless Event Bus (EventBridge) becomes a defining feature in this particular application. EventBridge rules are organized in JSON files and seamlessly referenced in the Terraform HCL code. An integration architect/developer joins the team, utilizing company-wide adopted third-party software to create an anti-corruption and translation layer, aligning technical facets to ensure cohesion and efficiency.
Intelligence Gathering: User Feedback
User feedback becomes the team’s intelligence goldmine. They infiltrate user communities, gathering insights to refine and enhance their creations. Continuous improvement becomes the cornerstone of their mission.
Tactical Retreats and Pivot Points
The Innovation Guerrilla-style Team embraces the wisdom of tactical retreats. When faced with unforeseen challenges, they pivot swiftly, turning setbacks into strategic advantages, all while maintaining a resilient forward momentum.
Evolving Beyond Innovation: From Prototype to Product
Maturing beyond the innovation and prototype stages, the project incorporates a product manager and a scrum master. Daily stand-ups and bi-weekly sprints become the rhythm, with retrospectives providing insights into successes and opportunities for improvement.
This narrative encapsulates a pragmatic journey—a testament to the synergy of a guerrilla mindset, critical design, innovative technologies, and collaborative minds, forging a path from concept to a fully realized application. This account serves not only as a record of achievements but as a future historical reference for navigating the practical landscape of software development.