Technology-enabled business change took years and sometimes even decades to play out, as we have seen with ERP, CRM, E-business etc. But with the impact of digital disruption, compressed innvotation cycles, new forms of competition, and rising customer expectations, today’s enterprises are facing unprecented challenges and they have less time than ever to innovate and deliver solutions to customers.
Software is a strategic asset and every company is a software company
Thanks to the impact of disruptive digital technologies, and the proliferation of connected products and devices, a modern enterprise’s engagement with the customer is now predominantly driven through a digital interface. Increasingly, the customer’s experience of a product/service is defined by the nature of digital experience delivered through a software, often in real-time. Therefore, it is only natural that software is no longer viewed as a nice-to-have supporting function, but as a critical, and strategic business asset. It has become vital for businesses (including traditionally non-software companies) to develop mature competencies in building, supporting, and maintaining their own software assets.
Deliver continuous value
In this modern landscape of connected products and services, where the business and customer have a direct engagement, often the software is delivered as an ‘always on’ service. The emphasis is not on delivering a set of features or functions, but on supporting a continuously evolving user-experience. This new paradigm has a significant impact on how businesses approach software development. The ability to build software in a traditional manner with a static process, is no longer sufficient. The need of the hour is to have a dynamic and agile process for rapid development and delivery of software enriched user experiences. Sometimes, the frequency of delivery could be even multiple times in a day, and this need for delivering continuous value has given rise to the notion of a software factory.
A software factory is an organizational structure to support continuous development and delivery of software applications, with an assembly line process designed to ensure speed, predictability, and quality.
At coMakeIT, we have extensive experience in enabling continuous innovation for a diverse group of technology companies by setting up distributed software factories. We use our unique and proprietary delivery platform TOP CloudTM for building a software factory, based on a blueprint with the basic building blocks as described below:
Modular organizational structure
In terms of composition and structure, there could be multiple models of a software factory, depending upon various factors such as customer needs, business context, and the technology landscape. There is no perfect setup, and one should choose the structure that is most appropriate for their context, and one that will help transform their innovative ideas into working software and tangible customer experiences in the most optimal fashion. Based on capabilities and resources, one could also start small with an ideal state in view, and a clear path to achieve that milestone. Irrespective of the organizational framework,what’s proven to work well is a modular structure consisting of scrum teams with the requisite roles and functions, working in tandem.
An organizational structure with functional silos and handoffs must be avoided at all costs, as it is unsuitable for an assembly line process, and will fail to deliver the required speed and quality.
Agile processes and collaborative culture
To realize continuous value with minimal overhead, the paradigm to build software needs a change. A highly adaptable, customer centric agile methodology is a must to be in the game.An agile team supported by the right process, workflow, and tools is a critical building block for a software factory. Over the past few decades, it has been well-established that an agile, iterative process is best suited for incremental delivery of software. With the advent of scaled agile frameworks and distributed development, agile processes offer the flexibility and speed to scale with the needs of the organization. The great advantage of adopting an agile process framework is the fact that it is built on the underlying cultural foundations of trust, collaboration, and team work, all of which are critical for a successful software factory setup.
DevOps and automation for continuous development and delivery
Speed and agility matter. To continuously innovate, the software factory must be highly automated. Automation reduces errors and frees up critical resources to focus on delivering continuous value to the customers. Along with agile, DevOps is the other bedrock for a successful software factory. Automation of all core operations including code checkins, daily builds, continuous integration, and continuous testing are critical for ensuring speed, reliability, quality, and consistency in the delivery of software. Automation of these critical processes will result in early discovery of defects, prevent accumulation of technology debt, and ensure that the software is almost always in a delivery-ready state.
The choice of tools and automation frameworks could vary based on the development environment and technology stacks, but the underlying operational principles remain the same. Everything that can be automated, must be automated.
People with Full stack skills
The scrum teams must be setup with people having a broad skillset, preferably with full-stack expertise, so that all the key competencies needed from design, development, testing, and integration, to delivery can be handled by the team without any external dependencies. An alternative organizational framework could be to create an enabling team with the requisite high-level skills (requirements, architecture, and design) to support multiple scrum teams working exclusively on development, QA, and delivery.
There is no perfect process, and there is always scope for improvement. A well-implemented automation framework will continuously generate metrics on various aspects of the software development and delivery process. A sensible governance structure (with all key stakeholders) must embrace periodical review and assessment of the metrics, to identify potential areas for improvement of the software factory.
A software factory with the core building blocks cited above, can successfully deliver continuous value, and will also be a strategic differentiator in a highly competitive business landscape.