In 1913, luxury became a commodity as the Ford Model T car made its way into the hands of the American consumer. Before Henry Ford revolutionized manufacturing with his assembly line, each Model T would be built by hand, car by car. Ford realized that in order to make the Model T affordable, he should not just focus on changing the design of the car itself but also the manufacturing process. In the months that followed, he pared down inefficiencies and standardized ruthlessly. The automotive assembly line was born.
With the first assembly line in operation, the time it took to build a car was reduced from 12.5 man hours to under 6 man hours. Further automation and improvements reduced the time to about 90 man-minutes. Eventually, on average the company produced one Model T every 24 seconds, and the price fell below $300. More than 15 million Model Ts were built before it was discontinued in 1927, accounting for nearly half of all automobiles sold in the world to that date.
We can, and should, take the lessons from the automobile industry — and the manufacturing industry in general — and apply them to building software. Most IT organizations focus on building software, and not on their Software Factory. Even though Agile software development is a standard methodology in many organizations, every application and service within those organizations seems to be built and packaged differently by different teams. There is virtually no standardization. The degree of automation and maturity of how software moves through its lifecycle varies drastically from application to application and from team to team. This results in not only longer software release cycles, but also inconsistent, unreliable and expensive software development, not to mention vastly reduced productivity.
Ford’s goal was to reduce cost and increase production. So how can software release costs be reduced and productivity increased across an IT organization? That question drove us to create Oteemo X, our flexible software delivery framework. Our goal, through Oteemo X, is to create world-class automated software factories (or software manufacturing units) for our customers so that they can significantly accelerate the delivery of their software.
Oteemo X will help create the software factory that will accelerate an organization’s adoption and realization of the following capabilities:
- Infrastructure Automation and Environment Standardization: To realize the promise of continuous software delivery, application environments need to be consistent, reliable and adhere to the policies set forth in an organization. Application environments, regardless of how simple or complex they are, should be provisioned quickly. Oteemo X drives infrastructure automation by making all definitions of infrastructure and application environments as code. Configuration Management is the practice of maintaining the definitions of an organization’s IT assets as code. By treating everything-as-code, we minimize the chances of human error and configuration drift.
- Continuous Delivery of Applications: A standardized and automated software delivery pipeline is available through Oteemo X. Application teams can configure their applications to adhere to the out-of-the-box delivery pipeline or customize the pipeline to existing policies within the organization. The goal of a standardized pipeline is to ensure all applications and services follow a common approach to move from Development to Test to Stage to Production environments (or whatever those environments are called in your organization).
Through Oteemo X, we accelerate the process to build the state-of-the-art Software Factory for our customers by over 6 months. However, every organization is different and requires customizations to our framework. Our approach to building our customer’s software manufacturing unit falls into 3 high-level phases:
- Standardization: Standardization of processes and tools across all layers of the stack from infrastructure and middleware platforms to application lifecycle management.
- Automation: Repetitive activity or process is automated. We treat everything-as-code.
- Continuous Improvement and Acceleration phase: As we are building the Software Factory, we always start small and continuously improve. After few Agile iterations (using scrum or kanban methodologies) in continuous improvement we achieve acceleration where the best practices applied in building one application are applied to the majority of applications within the organization’s portfolio.
We believe that organizations can truly gain an edge and become more efficient by focusing on improving and optimizing the Software Factory and not just the software, just as Ford put emphasis on the assembly line and not just the car that it produced.