JC Carrillo, Senior Architect at Kipu Systems in association with IronHack, will be hosting a Software Architecture Lecture at the BUILDING.co this March 22nd. Join us and learn how to make teams self-sufficient by embedding software architecture in their DNA.
Software Architecture, a Social Endeavour
An Agile Approach to Software Architecture
Since the inception of information technology, the practice of software development has been split into distinct phases (or stages). Traditionally, these phases are performed following the Waterfall model, a sequential approach in which one phase’s output is needed for the next one to start. Historically, software architects, upon receiving requirements, would spend weeks or months creating the blueprints of what would become a software system. Software architects were not involved in requirements gathering meetings and were entirely detached from implementation as well and as result, the final product almost never captured the basic intent of the original requirements. The business blamed architects, architects blamed developers and then up the chain in a vicious cycle.
In 2001, the Agile Manifesto was formulated to get rid of the fat and streamline software development to produce ever-changing working software in a fast and iterative fashion. This Agile movement broke down the barriers of communication between teams and allowed an iterative approach by shrinking the same waterfall model into smaller cycles which eliminated the need of placing too much emphasis on documentation and pushed software development teams to be flexible as to be able to change at any time.
15 years later, most successful software projects no longer have long software architectural cycles, in fact most successful teams spend little time thinking about architecture; Software Architecture is in their DNA, they just do. These teams learn how to communicate effectively using an abstract language to share ideas and/or concepts, thus, letting communication flow effortlessly allowing the team to achieve a collective understanding of the software system. They understand components, interfaces and relationships amongst them; They know what’s important and no authority can tell them otherwise, everyone understands the what, the where, the why and the how. Such practice of working towards reaching a common understanding of the software system is Software Architecture, a social endeavour.