Want Quality Software? Focus on People and Processes -- Not Technology
If your goal truly is quality software delivery, don't get distracted by the tech -- your team and the processes they implement are what will make the biggest difference.
- By Bola Rotibi
As an analyst, I am regularly asked, "What is the starting point for successful software delivery?" In some cases the question is more specific: "What one tooling platform needs to be in place?" or "What's the key ingredient or phase for business valued / aligned ALM or software delivery?" -- take your pick.
The answer is rarely simple. It depends on a number of factors, not least of all the appetite for delivering and managing software well. The latter may seem an obvious statement since few organizations desire to deliver and manage software badly. But it never fails to surprise me when it comes to successful quality software delivery and lifecycle management how often the obvious is overlooked.
Too often organizations look for the answers in technology and tools, yet skip over the fact that the greatest impact on delivering quality software lies with people and processes, professionalism backed with a reasonable level of experience. I could go further and add attitude and aptitude, but in my opinion it pretty much amounts to the same thing: quality people equipped with the right processes are resolute criteria for the timely and successful delivery of quality software. Of course, one can argue about the precise definition of quality, and certainly from different perspectives the defining factors can shift.
In the Quality Stakes, People and Processes Count
Recently, I had the pleasure of interviewing two software delivery professionals from two very different industries. The first worked as a software configuration manager managing the application code in a key U.K. government department using Serena's ALM tooling platform. The second was the QA director of a mid-sized U.S. systems integrator providing Microsoft-based technology solutions for the healthcare, retail and hospitality industry. The interviews were about the tools and technologies that their organizations used in support of their role.
As part of each interview, we talked about the challenge of quality in the software delivery process. What became very clear by the end of each interview was the fact that while good tooling is important, it is really the processes, skills, mindset and the experience of the individual that are the more critical element in delivering quality. The reason for this is simple: No matter how much technology you have, it will have no effect at all if people do not know how to use it or make the most from it.
As a result, training and education are essential for all staff -- but not training for the sake of training. It has to be focused on skill enhancement and also have a benefit to the organization. That benefit may be as simple as product-specific training or it may be focused on challenges such as secure code delivery.
Another important take-away point from the interviews was the significance both individuals placed on leveraging their experiences to help adapt processes and instill best practices into their teams. Much of the success that they had achieved came from having the right processes in place and being willing to change those processes if they weren't working. This was backed up with a need to not only be flexible in finding solutions but also about being creative in adapting processes to take advantage of facilities that can help improve the software quality from the outset.
This latter point was particularly relevant for the QA Director where the complexity of today's software requires a degree of lateral thinking in order to be able to ensure quality and fit for purpose software. To help identify potential performance issues as earlier as possible, the QA Director employed tools and strategies that allowed for an element of load/performance testing to be carried out during the code development phase alongside unit testing. The full benefit of performance testing clearly comes from testing the whole system as close to a production running environment as possible. This obviously comes at the end of the code development phase when the software code is ready for deployment. However, identifying potential performance bottlenecks earlier in the development lifecycle, allow it to be dealt with at a stage when the impact to resources and delivery outcomes are at their minimum.
The Need Is Recognized
Backing up the value of the above people characteristics, process and education requirements are the results from a recent security study that highlighted the often desperate need for management to buy into and instill in the workforce a culture of quality and security. At the end of 2010 we conducted a study on the state of secure Application Lifecycle Management through the information security professional body (ISC)2 and the International Association of Software Architects (IASA). When asked what was preventing respondents from improving security across the software delivery lifecycle, the following were cited as having significant impact:
- 69 percent stated not having the right culture, attitude and mindset for secure software delivery and lifecycle management
- 62 percent stated lack of management support and investment
- 69 percent stated not having appropriate processes
- 53 percent stated training and education
Without management backing, processes have little effect and are poorly used if they are used at all. With the right focus on training and education, the right attitude and culture cannot flourish.
Any organization that has achieved success through Agile development practices will know that people attitude, culture, training, education and management buy-in and support are essential criteria for quality delivery and stakeholder satisfaction.
Technology Has Role, But Team Is Critical
This is not, incidentally, an argument against the value of technology and tools, which for the most part have improved considerably as the software industry has matured and greater understanding and awareness has developed within the wider market. Rather, it is an acknowledgment that technology is not enough.
When asked what he thought the main challenge was to quality software development and delivery, the head of application development at one of France's largest Insurance organizations had the following to say:
"Technology is rarely the problem. What is important for code development is the quality of the code and the process by which it is developed and the tool support available. Good tools and processes can ensure good code quality. But the value is not in code development. What is required is that it is done well to ensure that this layer does not impact the design and delivery process. Where the real value is, is in application design, architecture and planning. However the key problem area and the section that has the greatest impact on the success of a project is Project Management and the casting of the team. Get this wrong and no amount of technology or tooling will guarantee the success of the project."
Why, then, should companies tend to seek solutions in technology rather than in people and processes? It's not, in all probability, that they don't care about softer issues such as these, but rather that they tend to be harder to address. Technology offers the tantalizing carrot of being able to address problems -- quite literally -- at the push of a button.
Technology undoubtedly is more logical and tangible. What can be achieved through it and by it can be readily and easily demonstrated. Also the focus on technology is as much about the economic power of technology as it is on the technology per se.
People and processes on the other hand are less straightforward; considerably more complex and, people being people, bring into play unwanted side issues such as politics, emotions and self interest. Trying to change behavior and processes (a.k.a. habits) is much harder. People will do what they have to do in order to get the job done in the easiest possible way. Unlike technology, this doesn't lend itself well to being automated, repeatable, auditable etc.
But perhaps another reason for the perceived disparity in attention between technology, people and processes is down to the shift in training investments and strategies.
The Decreased Role of Training
Up to the early 2000s, before the industry downturn precipitated by the dot com crash, companies certainly invested more in formal training courses for their IT teams. For the most part, it was to ensure that individuals and groups could take full advantage of the technology they were looking to implement, as well as identify and avoid common pitfalls. This of course, helped improved the skill set of individuals while creating an opportunity for them to use their learning and experiences to the benefit of the organization.
Not all training was timely; however, the investment made by a company did much to level the focus given to technology, people and processes. Now there is less a focus on the training of people even though there is clear recognition that people quality and skill is not only important to the successful implementation of key technologies but also to successful project delivery. Worse still, it would appear that a number of organizations not just ignore this link, but abdicate any responsibility in reclaiming the connection.
What has since shifted the balance could be down to a number of contributing factors that has changed the dynamics, expectations and practices of organizations. For instance, the inescapable reality that training employees in a buoyant marketplace simply made it easier for them to move to a more lucrative job with one of your competitors.
With any economic downturn, training budgets get hit. But there is a growing trend with companies expecting a level of self training from their employees. This has been compounded by the influence of Generation Y - employees who have been brought up in the age of the net, mobile devices and social computing and so already tend to have a firmer grip on technology and its potential value. Organizations, in short, expect their people to know more about the technology than they actually do.
The link between technology, people and processes becomes more evident when IT projects fail. To be successful, you have to tackle all three in isolation as well as together.
No amount of technology will help if poorly applied or implemented. Most tools are rendered useless without the right support and when wielded incorrectly. After all, anyone can wield a tool, but only those with experience, skill and the willingness to maximize the benefits can make it count.
Organizations need to be more trenchant in the way they approach the problem. Technology may be the easy option but it is not necessarily the most effective option. So when you are looking to make the most out of technology, consider the following:
- If you want to get the most out of software you need good training support.
- You need the right attitude in people and teams.
- Motivate and move the team around for valued experience and skill.
- Encourage processes that allow individuals and teams to share experiences and lessons learnt.
- Strategize around your technologies and tools.
You rarely have to spend a lot of money to make significant changes. What you do require is some ability to take time and take stock; that way, if you need to invest, then you can invest well. Assessments are important and really give you a very good insight into what is being practised. Assessment reviews don't have to be big, they can be very small and target focused. Many of the ALM vendors have begun to see the value of assessments. Organizations shouldn't see them as unnecessary consulting spend.