Software development used to be known as just software programming in the 1940s.
The classic book by Nikolas Wirth in the 1970s – Algorithms + Data structures = Programs, looked beyond the code written into the larger picture of data structure and algorithms.
As the problems solved by software became more pervasive and complex, the solutions also evolved and the need for formal approaches to design and architecture also evolved.
While these developments improved and also introduced techniques to build better software solutions, the basic process of software development has remained pretty much the same.
The requirements to release cycle still follows small steps that create the solution incrementally.
To handle the distortions in the transformation process, various techniques have also evolved to increase the confidence in the planned dates and the scope expected.
In the last few years, the impact of globalization and increased pressures on cost and quick growth have made industry adopt software and related IT technologies core to their differentiation and growth strategies.
Though the essential tasks involved in software development have not changed, there have been some significant shifts in improving the process to become more responsive to business needs.
I would like to highlight four ideas that have been around for a while now, but have grown to be more practical and popular as approaches to derive maximum benefits.
The first trend is to look at Total Quality – at the organization level and not just process or product quality in specific areas of operation for an organization.
Systems thinking, an approach that originally proposed in the mid 1950s became more popular with some of the leading design firms adopting those techniques to identify holistic solutions to create products.
As we look at improving the software development process, systems thinking has helped us look at not only the software development process but also the other enabling processes within the organization as well as the organization structures best suited to realize the strategic goals of the company.
When you look at improving your software processes, please look at the related organizational structure, policies also.
While most of our organizations are structured vertically – in terms of hierarchies, that have helped us deploy techniques such as management by objectives and cascading KRAs and targets, the real value to the customers typically flows horizontally – across functions. Multiple functions need to come together to deliver a coordinated experience.
Getting to team and shared goals is a key change in this approach, that is also seen in the DevOps movement, can be the foundation for your organizational improvement initiatives.
Total Quality models such as the Malcom Baldrige or EFQM and their variants give you guidance on structured approaches to look at your organization holistically and apply systems thinking techniques to create a high performing organization.
To get an idea of TQM as applied to software, you can also read this blog post.
Six Sigma and Lean thinking has also been around for a while now.
Initially applied in the areas of reducing defects and improving product quality, techniques such as Value Stream Mapping (VSM) are now popular approaches to improve the efficiencies in software development activities as well.
One of the first steps we recommend for organizations looking at DevOps is to do an exercise in VSM for the full life cycle – from requirements to production.
The culture of Lean must be internalized by all members of the team, so that they can also look at their own ways of working to identify non value adding activities and reduce them by themselves, or raise it in team discussions and improve as a team.
This also helps in teams becoming high performing, self managed teams.
Once the principles of lean are understood and internalized, it becomes easy to adopt DevOps or lean startup practices
What is DevOps? You may find as many definitions +1 as there are people involved in the discussion!
The most commonly accepted and convenient definition is that it is a movement. A cross functional movement for organizational excellence.
The challenge with a fuzzy definition is both a sense of complacency – I am already DevOps – and disappointment – I thought a DevOps consultant will prescribe what exactly I should do to solve all problems – that could create a sense of confusion and delay taking the first step.
In 2015, there have been many success stories, not only from the unicorns, but also smaller organizations, enterprises, including those in traditionally highly controlled environments, such as financial services.
2016 is considered as the year of adoption as many good practices and automation solutions have been proven in the last year or so.
Relative to the two earlier trends – TQM and Lean, DevOps is relatively young – having been proposed for the first time in 2009.
The initial thinking was more about how to apply Agile techniques for infrastructure and so, if you are already an Agile shop, you can start with an effectiveness assessment of your Agile practices and look at how best to expand the scope to include the IT infrastructure operations also.
A smooth co-working between Dev and Ops teams, with reduced dependence on inefficient handoffs have helped organizations realize faster turnarounds between requirement identification to deployment of the solution in production.
A related read could be this blog post that answers a common question of whether DevOps is just Agile++
Startup Culture : Lean Startup
The fourth trend that I would like you to consider is from the school of lean startup.
Again, the principles are not new. This is more of an application of various techniques from other domains to software and one that has helped startups reduce their cost of failure.
Even if you are not a startup, the approach can be applied.
A few key concepts such as the Minimum Viable product (MVP) can help you prioritize your requirements backlog [not using the term product backlog, as you can apply this even to non-product situation] and also help you put in place an effective feedback mechanism that is near real time or at least very frequent.
Such feedback loops are also important to have an effective adoption of DevOps models.
The second concept called pivoting, will help you prioritize and tweak the roadmap and strategy as the solution evolves over time. Again, feedback – that is pretty much proof of the value of the solution – is critical and techniques such as A/B testing can help with this.
Treating your delivery [oops – I should say DevOps] teams as startups, with a lean thinking mindset will help them be nimble in taking decisions to make incremental or drastic refinements to their roadmap towards a release.
These 4 trends, though not a current fad, have been around for a while and also been adopted by teams and organizations and we have many case studies of how they have benefited.
Of course, there are also cases where these have not worked as well.
Any organizational change is essentially a people and cultural activity.
I will discuss some of the people related trends you can consider for 2016 in the next post.
lean skeleton: https://openclipart.org/user-detail/metalmarious
checklist – devops : https://pixabay.com/en/users/OpenClipartVectors-30363/