Front Lines is a guest viewpoint section offering perspectives on current issues and events from people working on the front lines of Canada's technology industry. Chris Barbin is senior vice-president of worldwide services for Borland Software Corp.
Today, software plays an essential role in most of our daily activities. Whether it's enabling us to get cash from our banks, controlling the GPS systems in our cars or running our pacemakers, software is behind many activities that make our lives better. But are the companies behind the software in such a hurry to deliver more features, at a lower cost that they're skimping on quality and putting us at risk?
Reported and unreported software glitches already have a significant impact on our daily lives. For example, last November, share trading on the Tokyo stock market was suspended for more than four hours after an upgrade to a software system caused a breakdown. A year earlier, a multinational car manufacturer recalled more than 1.3 million cars due to faulty fuel pumps, blaming software bugs and complex electronic interfaces for the problem. A system that controls communications between commercial jets and air traffic controllers in southern California automatically shut off because some maintenance had not been performed. In this same year a software glitch during a routine software upgrade at the Royal Bank of Canada caused payroll delays to tens of thousands customers.
The question remains, how do we reduce these reported, and often unreported, failures? How do we ensure the quality and stability of our software?
Too many software vendors make the argument that more technology is the answer that delivering additional automation and workflow functionality is imperative because it doesn't let people get in the way of success. While there is no question that process improvement through automation is needed in the complex world of software, it is only part of the equation.
It's the people behind the software that matter most the business owners that prioritize which software to pursue, the analysts and architects that define and design the software, the developers that create it and the testers and managers that verify and maintain the final product.
Technology will, and should, ease and automate the basic functions of software development. At the same time, process improvement initiatives and standards can provide consistency and discipline to ensure a predictable outcome and a quality end product. But today, people are still the driving force behind software.
Managing the Complexity of Software
Software development is already complex involving many different people, with different skills, in different locations, getting direction and pressure from different parts of the business. To manage this increasingly complex environment, companies need to invest equally in three key areas: People, process and technology.
Research and experience shows that it is the alignment of all three areas that improves the chances of delivering the right software, on time, within budget and at the highest levels of quality.
However, the "people" are often the neglected part of this triad. Too many times training and education is treated as an afterthought, tacked on as an added expense to a new technology implementation, relegated to informal brown-bag lunches or once a year sessions, or worse yet, delayed altogether. Many companies that spend months picking a new technology solution or defining their processes spend only minutes when it comes to training the people who are actually going to use those tools and processes.
When asked why training isn't prioritized higher, companies often claim that they can't justify its cost, that they can't find an appropriate vendor to deliver it and that their teams are getting plenty of "on-the-job" training. This dismissive attitude seems a bit scary when you consider how many critical functions in business and in our daily lives are now run by software.
We expect employers to train their human resource representatives on the company processes and systems that manage our benefits and payroll. We expect department stores and airlines to train their sales representatives on the products and services that they sell us. Shouldn't we expect the same from the people who build our software? The same software that drives our cars, guides our planes, keeps our money safe and protects our health?
Plan for Training Success
IT leaders seeking to put in place a successful and cost- effective training program for their software development teams can follow three simple steps.
Align priorities and clarify goals: What outcome do you want from the training? What are you trying to accomplish in both the short-term and long-term? How do you measure success? This step can be completed in a one-day workshop, led by a trained facilitator.
Develop an approach based on readiness: Evaluate and assess what you have to work with from both an individual and resource perspective. What is the skill set of the current team? How ready are they to change their processes? How much time can they afford away from their daily tasks? Once you have this information, work with an internal or outside expert to design a training approach that will work best within your environment.
Implement the program: Consider the different types of training programs available classroom versus mentor-based, Web-training versus self discovery and implement the ones that will be received best by the organization. Individuals have different skills, different levels of knowledge and different ways of learning. It won't be effective to treat every training initiative the same. Work with either internal or external trainers to establish the right training programs for the right teams.
Every technology vendor has a responsibility to its users. It's not just about innovation or adding new features, it's about making sure the people behind our software have the right tools, the right processes and most importantly, the right training to ensure quality in the software they're creating or maintaining. Only then will we be able to reduce reported, and more importantly, unreported software failures.






