Rescue a Software Engineering Department

Type of Service: 
Management Consulting
Country: 
United States
Industry: 
Industrial Manufacturing
Duration: 
1 year
Challenge: 

To restore the client's software engineering department's commitment to excellence and discipline. The client had suffered several years of declining reputation in spite of an outstanding product line of robotic controllers. The general perception of the client in the market was 'great hardware, but dismal software'. More than one of the client's own customers, including Fortune 500 global companies, were losing patience with the unfulfilled promise of the products they were buying.

The software engineering department was composed of 8 talented but frustrated developers. The team did not have any structured methodology for responding to change requests, and developers were assigned tasks with strict attention to deadline and no attention to quality. The change requests themselves came from many different people, with no tracking or control. The resulting software line was filled with bugs, without any long-term vision or design. Releases were done on a near daily basis, making any longterm progress virtually impossible.

Solution: 

Systematic Computer Science was tasked with improving discipline and morale within the software engineering department, and with improving the client's reputation in the market for software quality. This ultimately led to several initiatives:

  • We introduced the Personal Software Process (from the renowned Software Engineering Institute at Carnegie Mellon) to the developers, and gradually implemented greater and greater portions of it over time. Developers learned to track their time and quality of output.
  • We introduced a set of very detailed software engineering best practices required for all projects, including documented requirements, design briefs, code reviews, test plans, and release plans.
  • We championed and hired two quality assurance engineers to compliment and aide the software engineers, and had the QA engineers take a leading role in determining when a particular software product could be released. The QA engineers developed extensive test plans, and kept rolling logs of all known defects and their resolution.
  • All of these initiatives were rolled up under a unified methodology that the software engineering department adhered to strictly, finally resulting in a regular release cycle of one release per month.
Benefits: 

The client was at first skeptical of introducing software engineering best practices and of a disciplined approach, as these were all viewed as 'slowing us down.' However, within a month or two, the difference in morale and quality was detectable. The quality of the software began to slowly improve, and the more the team bought into the discipline, the more positive the results became. Instead of being regarded as the weak point in the company, the software engineering department began to rise in reputation, and this rise was apparent to the client's customers.

By the end of the engagement, the software product line had been greatly improved. Releases were done systematically, and the entire company and its customers believed in development the right way to save time and money. The increased quality of the product line paid for the longer release cycles many times over by drastically reducing bug fixing, redesign, and rework. Ultimately, the client was able to recapture the trust of its customers, and this helped lead to the winning of more than one lucrative contract.