“As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble”
In a blog published last month, 6 P’s for continuous innovation in software development, my colleague Sashikanth Pochimcharla presented the basic building blocks needed for sustained and continuous innovation in software development and delivery. We have captured the best practices for all functional areas in the software value chain and made them part of ‘JumpStart’, coMakeIT’s proprietary methodology that can be adapted by any company to create a ‘Software factory’ capable of continuous innovation.
JumpStart, an Overview
For any organization, the most important internal dimensions that will have a huge impact on its success are People, Process, and Technology. While they are equally important for any organization irrespective of their domain, these factors are absolutely critical for organizing software development as a structured and repeatable activity. JumpStart is all about a set of practices focused on these critical elements, that will help companies achieve the capability to consistently produce high quality software.
Prepare an organizational blueprint
While it is possible to produce high quality software even in the absence of any organizational structure, as you very often see in start-ups, it becomes difficult to sustain as companies scale. We should understand that there are organizational structures and skill requirements associated with the software lifecycle. For example, if the software product or service is in its infancy, the need may be more towards skilled engineering talent capable of handling cross-functional responsibilities and who are good at multi-tasking. On the other hand if the solution is in its growth phase, the focus could be more on organizing on functional lines, which could be related to specific, clearly defined functions such as architecture, product management, project management etc. Needless to say, the kind of skills and people needed for this phase will be vastly different from that of a start-up.
Therefore, irrespective of their software life cycle, companies should assess their current organizational structure, identify gaps and prepare a blueprint to reorganize and achieve the needed setup to meet their business and technology goals.
Create cross-functional teams
The next step is to create cross-functional teams to handle the vital 6 P’s: Product management, Product Architecture, Project Management, Product Development, Product support & maintenance, and Process for continuous innovation. Along with this, there should be a clear mapping of roles and responsibilities for each critical function associated with the entire software value chain. In large software setups, the success of individual component teams will be heavily dependent upon the effectiveness of the support they receive on these critical functions.
Implement repeatable, agile processes
Along with the right structure and people, process plays a key role in ensuring consistently high quality. As stated earlier, having a robust, lean-agile software development process is almost a pre-requisite in todays fast changing technology landscape. Large organizations could consider moving to a scalable, agile framework.
Identify and utilize tools for automation and workflow
The third major leg on which the JumpStart methodology depends is the utilization of appropriate workflow and automation tools. As the goal is to create a repeatable, and dependable process capable of ensuring consistently high quality, it is of utmost importance to identify and adapt the right tools to support the workflow, and also automate the repeatable tasks (such as regression testing, daily builds, continuous integration, automated delivery etc.).
Once the structure, process, and tools are in place, the focus should be on disciplined execution of the organization’s product roadmap. An effective PMO (Project Management Office) can play a critical role in tracking the effectiveness of the people and processes, and develop various metrics to track productivity and customer value.
Create a culture of continuous improvement
Finally, there should be a structured mechanism in place to periodically assess the efficacy of the organizational structure, as well as the process adopted and whether they are successful in meeting the technology and business goals of the company. The focus should be on establishing a transparent feedback loop, supported by relevant data which will result in a culture of continuous improvement. One would be wise to remember that yesterday’s pioneer is not guaranteed to be tomorrow’s innovator