My passion for Formula 1 originates from one man named Michael Schumacher. I used to wait for Saturday and Sunday in those barren early days of 21st Century days, barren from Internet and big brother google. Schumi, as we fondly referred to him as, won 5 consecutive championships from 2000-2004, but that is beside the point. What excited me more, perhaps, about Formula 1 is the amazing coordination of everyone. Starting from the constructors, the Team Boss, the Aerodynamicist, Designers, Pit Crew and then of course, The Driver himself. Come to think of it, as the race day approaches, it is almost a given that all the folks involved work with a mesmerizing coordination and precision to ensure that their team completes, leave alone Win the Race. Each one has a role to play, there is no room for error and all these folks share one common goal and vision, Win the Race!
Cases in point, however incredulous it may sound, imagine the Pit Crew taking an extra few seconds or the refuel delayed by a few seconds. The delays caused mean lost time, jeopardizing the team’s chance to win. Well, one may argue, the driver can always make up for the lost time – individual heroics, to salvage the lost time. But again, it is a situation that could have been avoided. This whole F1 team’s performance to me is like an orchestra, all perfectly timed, perfectly sequenced and perfectly executed!!
Now, for a second let’s think of the Application Engineering Life Cycle – The resemblance is uncanny! You have a set of stakeholders, just like their F1 counterparts. You have the Business Owner, Dev / Architect team, Quality Folks, Release, Operations. Each of them has a role to play to ensure they win the race – The race in this context is faster go to market to stay ahead of competition, essentially their goal and vision is Continuous Releases with high Quality.
A delay, a lapse or any wait time means slipped deadlines, missed / delayed release and races lost to competition! The image below depicts how I mean.
Orchestrated Engineering is the way Application Engineering needs to happen in an enterprise that aims to release often, with high standards for Quality. Each of the teams has a role, while their common responsibility is Quality. Let me explain what I mean, without going through the actual tools to be used.
All stakeholders across the board trigger the process of establishing the Business Use Case they are trying to build a solution for and document the requirements, features etc. in the form of user stories. This design process must be a collaborative effort with all parties involved and address all areas of the application engineering lifecycle. The Development must be Test Driven and have a flavor of Behavior / Acceptance Driven Testing for early testing and early automation. The premise at this stage is that all code is guilt until proven innocent. The acceptance tests validate the units / methods written until that point and a clear grouping for the features and methods must exist, and all packets of work completed until that point must be set up in a way to have daily / multiple times a day build capability. Each build must then trigger all tests written until that point, unit, Acceptance and functional tests in a continuous integration manner – this is the beginning of a long series of Continuous Development and Testing. A successful build then triggers an automated environment, testing occurs, build validated on the new environment and release! Yes, all in one seamless flow.
Makes me think, the flow is complex, each of the members comes in and plays their part, steps to the sidelines and goes about their tasks in a silo, then the whole sequence repeats, just like an Orchestra.
At Qentelli we bring Quality Engineering and DevOps into one Grid (nTelli Grid) to perform all of the methodologies TDD, BDD, Automation, Release and DevOps into one seamless portal that may be used by all stakeholders to solve their piece of the puzzle. This can get Organization and Enterprises achieve their Continuous Delivery Goals with increased agility, velocity and it goes to highest Software Quality!