Software Operation Factory: Continuous Production and Release
Chandan Lal Patary
?? Enterprise Business Transformation Coach ?? || ?? Author of 9 Transformation Guidebooks || ??Empowering Leaders & Innovators with Practical Insights for Success || Author-> Master your Mind, Master your Leadership
In defining a software factory approach to enterprise software design, development, and delivery, we can apply key characteristics from the industrial
sector to reduce time to market, increase flexibility and agility, and reduce costs,while increasing quality and end- user satisfaction.
An integrated approach can help software delivery organizations achieve business agility, collaborate more effectively, and deliver higher quality products and services.
Agile Manifesto says : "Our highest priority is to satisfy our customer through early and continuous delivery of valuable software."
How ? what stopping us to achieve continuous release ? how can we speeden up this process?
There are several factors which need to look into to increase the software delivery speed.
Back in the 1950s, project management was applied to software development using the so-called ‘Big Bang’ approach, so-called because developers would be given a brief, develop a product, then have to wait until delivery to find out what might need amending or where the software failed to meet client expectations – an obviously risky and expensive process.
Traditional project delivery frameworks cannot deliver fast enough in fast changing, highly uncertain environments. Agile project management allows teams to deliver on time and on budget with the product features most important to the business.
For small incremental delivery to done. Its hard to break that mindset as there are many fears and concerns. Most programmers have no idea even where to start. What we are teaching is a skill to look at larger problems in smaller bite sizes and incrementally build the product. Inexperienced developers see a work as a big unit and with dealing in large complexity, the ball will be dropped and issues occur. We need to help our team learn the value of small incremental deliverables that contribute up into a feature and into a product.
In Agile operations, the emphasis is on speed, efficiency and flexibility as well as on quality and innovation, with the customer as the central focus of all activity.
Organizational assets and systems are designed to enhance flexibility, efficiency and speed so that there is resource fluidity,or the internal capability to reconfigure business systems and redeploy resources rapidly.
Continuous improvement, lean tools and agile project management methodology are applied across operations and become part of the organization’s culture, enabling continuous feedback, iterative adjustment to changing customer requirements and speedy and effective delivery.
- Peer pressure forces delivery, as in weekly sessions the teams demonstrate their work to each other (and clients) and actively gather rapid feedback and ideas. Thus testing and integration are occurring simultaneously.
It is important to define a critical few patterns of behaviour and thinking that will be essential to the success of the desired change-able/innovation culture . These are practices that help people to become skilful and effective at, for instance, communication, innovation, adaptive planning and iterative product delivery. Various studies highlight attitudinal and behavioral elements of a receptive context such as openness to change; collaboration and teamwork; good relationships; involvement; learning by experimentation; employees feeling valued and fairly treated.
Team should try value stream mapping which can be useful in assessing how business analysis activities are contributing to the delivery of value to the customer and identifying activities that may not be adding value.This process will ensure continuous flow.This ability to break stories down in the backlog helps protect the rate of value delivery.
Lean thinking considers a value stream has having two components. Value added activities and muda (the Japanese word for waste). The aim of lean thinking is to remove the muda, or waste, from the value stream. Waste is further sub‐divided into two components. Those activities that have value but do not contribute to the final product directly like an architects plan and those activities that do not add value at all. The aim is to remove completely those activities that do add value at all, and minimize those activities that do not contribute to the final product directly
The continuous delivery framework should deals with the how’s and the when’s of the product. Effective delivery is formulated by four underlying principles:
- Get Real Using Examples,
- Understand What is Doable,
- Stimulate Collaboration & Continuous Improvement, and
- Avoid Waste.
The following principles are helpful when working to identify waste in any business analysis process:
- Avoid producing documentation before somebody else needs it.
- Whenever value is not being delivered to your customers, the waste of waiting occurs. Don't let others be waiting for your job.
- Transporting information between different media types is a cost incursion which adds no value to the product development.
Try to elicit, analyze, specify, and validate requirements with the same models.
- Analysis models should be as simple as possible. Do not include information that is not directly useful to a stakeholder.
- Work‐in‐progress (WIP), or inventory, is a direct result of overproduction and waiting. They tend to hide problems on the process. If you see it, try to let them flow over the process or eliminate it.
- Work close to the customers and development team because unnecessary motion or work‐a‐rounds to substitute face‐to‐face conversations are also waste.
- Keep continuous attention to your technical excellence. Quality defects (such as unclear requirements) result in rework and are the worst waste in the process.
Culture play key role in continuous production process.Team should take ownership.If Manager Makes all key decisions for the Team,this slows down the delivery process considerably. Where the situation is complex, they will often need to prepare multiple options for the Leader’s decision.
Waiting for a decision cuts deeply into the Team’s progress.
The Leader’s untrusting behavior has actually taken ownership away from the Team. In this situation the Leader is teaching the Team that the Leader is responsible and not them. The Leader may in fact be more comfortable with this, but overall the Team is demotivated and project delivery slows. So what happens if the Team is actually pretty well motivated and really is committed to the delivery of the project but the Leader can’t let go of Command and Control? We get conflict.
Connects the end user with the Team directly. One powerful way in which the Leader can help the Team take ownership is to find ways of building an ongoing dialogue between the Team and key prospective customers and users. This allows the Team to continuously refine the delivery at every level to ensure that it provides maximum value when shipped.
To deliver maximum value, leaders must overcome their fear of failure and trust their teams. And they need to actively help their teams take ownership of the delivery rather than taking control and directing their teams on how to deliver.
However, once a culture of openness, integrity, and honesty is in place it becomes self-sustaining. The motivation and energy generated are rewarding to the entire team and enable them to maximize their delivery of value to the business.
What is the best way for us to deliver our products and services?
Sometimes it is our delivery model that creates our competitive Advantage.
There are several RISK factors which cause delivery bottleneck
The sources of risk included
- Technical uncertainty. We were not sure how to develop technology to match human intuition and so creating such a technology included lots of uncertainty.
- Process complexity. In the manual process, a group of six salespeople spent three days per month mapping clients to salespeople based on client profile information. The process went through multiple iterations as the group sorted through variables such as salesperson load, area of specialization, geography, and likability.
- Technical complexity. Even forgetting about the technology that supports intuition, the rules engine to support the combination of matching variables was very complex.
- Uncertainty about process standardization. The sales team did not agree and could never agree on which of the variables should be the most important in matching a client to a salesperson.
- Uncertainty about whether or not this project had any business value. It would have been good to free up six members of the sales team for three days a month but did that compensate for the level of effort—both in the initial development and then through future enhancements and maintenance?
Engage in customer collaboration. To ensure timely delivery, We must be as efficient as possible when we develop solutions. To be efficient, we require frequent feedback and customer interaction to validate that our delivering to the need. Real-time customer collaboration also minimizes the effort required to adjust our work. We can’t wait for testing: We need feedback on our understanding of the requirements, on our design thoughts, on yur prototypes, and on our code as we iteratively deliver it.
Collaborating is essential to the delivery of value to customers. Collaboration bottleneck need to discover and improve
- Identify why your non-collaborators do not want to collaborate.
- Understand the system they work in, what motivates them, how they are acknowledged, how they define success, and so on.
- Understand the system they work in and the level of risk they are willing to take on.
- Use specific and general techniques to collaborate with the non-collaborators.
Product owner play important role, though he may not be able to answer all questions, it’s his responsibility to track down the answer in a timely manner so the team can stay focused on its tasks. Each agile team, or subteam in the case of large projects organized into a team of teams, has a single product owner.
Organizations often deal with problems that require large teams; they want to leverage a distributed workforce; they want to partner with other organizations; they need to comply with regulations and industry standards; they have significant technical or cultural environmental issues to overcome; and they want to go beyond the single-system mindset and truly consider cross-system enterprise issues effectively.
Agile thinking includes a world that is fluid, where changes are continuous and welcome, and teams have the capability of releasing frequently, which applies to the delivery of software. This ability to frequently release highlights the importance of infrastructure that can help with continuous integration, building,and testing. This ability assumes a level of automation that needs to be in place.Automated testing increases the possibility of testing as much of the functionality as is reasonable, including the capability of performing nonfunctional testing such as performance testing, load testing, and more.
What actions exhibit continuous delivery?
- A release capability to incrementally and rapidly deploy software
- Iterative framework with Sprint Reviews
- Continuous integration supported by merging process and configuration management system
-
A continuous build process supported by an automated build management system
-
Test automation infrastructure that can support continuous Testing
Achieve technical excellence. We want processes that enhance quality during development. Solid development processes ensure delivery of a quality product and do wonders for team morale and pride.
Plan and deliver software frequently. To ensure customer satisfaction and timely delivery, we must work with customers and prioritize their needs. After the needs are prioritized, the team works to deliver the functionality iteratively, starting with the minimal features necessary to deploy a working system.
Motivated workforce —As the poet Hebbel noted, “Nothing great in the world has ever been accomplished without passion.” Executives know their development teams need to be passionate about their projects; otherwise, the projects and the company will remain mediocre.
Increased customer involvement leads to several benefits such as quicker feedback, accurate delivery, increased customer satisfaction, and rapid decisions. A great indirect benefit of customer involvement is the customer’s new found appreciation for the work needed to deliver on requests.
Specialized skill sets also place an additional constraint on team capacity. Imagine that a team has only one person who can perform user-interface design, and the work assigned to an iteration is 80 percent user-interface work. Other team members can look for work to do outside of the iteration, but delivery will be slow due to the one-person constraint.
All these steps helps us to be closer to the continuous production and release.