“There’s more to great software than just the code.”
So sayeth the introduction to the blog page of Code Renaissance, an organization that claims to be “about building great teams and great software. By exploring best practices, team interactions, design, testing and related skills Code Renaissance strives to help you create the team and codebase that you've always wanted.”
In their most recent blog, the folks at Code Renaissance tackle what they call “The Devolution of Code.” The premise behind the devolution of code is solid and quite sadly true. They point to the demands placed upon application software developers today and note how these demands have created an environment where teams often bypass optimal code quality in favor of expediency.
Why Code Devolves
Code Renaissance accurately places the blame for code devolution’s squarely on the shoulders of three common issues in modern IT environments:
- Team Quality: Not only does the immaturity of individual developers bring down software quality, but the manager overseeing the project can also have a significant impact depending upon how effectively he or she drives the necessity of quality in the project.
- Development Speed: Time to market has become a more important factor than software quality. Developing software faster often means things like reviewing proprietary code and attention to detail are overlooked. Getting the software on the shelves faster may have short-term benefits, but as Code Renaissance points out, and as organizations such as Gartner and CAST have demonstrated through their research, this glossing over of details is leading to significant technical debt. Technical debt costs organizations a significant amount of money – over a $500 billion globally according to Gartner’s research and more than $1 million per company on average according to CAST’s research.
- System Size: Simply put, the larger the system in terms of lines of code, the harder it is to maintain. In code, as in many things in life, less can be more.
While it’s quite easy to be on board with Code Renaissance’s assessment of the problem, their solution is a bit simplistic. It is true, as they say in the Devolution blog, that, “You need to focus on code quality as much or more than you focus on defect count.” However, it’s in how they propose companies become more diligent about software quality that they come up a bit short of an effective solution.
Code Renaissance suggests that the answer to improved software quality lies strictly in the quality of the programmers involved; or as they say:
“Each programmer that leaves offers you a chance to make things better. Find good people, passionate people to replace them. The right person can stoke the fires of existing team members and breathe new life into the team. Set them loose and help them break the status quo.”
Granted, top software engineers tend to write high quality code, but even with all the best development talent in the world, the human factor alone is not enough to guarantee the code will be issue free. Manual assessment is just not sufficient for fully analyzing and measuring modern application software and detecting all possible issues before deployment.
Therefore, while improving the quality of the development team is never a bad idea, companies could improve even further on that talent by establishing a set of software quality standards and evaluating the software those talented developers create against those standards through a platform of automated analysis and measurement to assess the application software.
Automated software analysis sees the whole application, going beyond one developer’s view of it. Furthermore, automated measurement of that analysis provides management the means to track, incentivize and ensure that code quality is built into the software. In other words, automated analysis and measurement can make the best talent in the world even better.