CQ2 tracks development team trouble spots, productivity via metrics analysis
With all the attention paid to the various ways of managing software development, one would think a product that quantifies and displays the progress of projects, teams, and individual developers would be a common tool.
Alas, this is not so. Until the release of Enerjy CQ2 earlier this year, no commercial package filled this role, although point products in suites from Microsoft and Rational are edging into this area. So it was with great interest that I loaded up Enerjy CQ2 for a review.
The product hooks into a site’s development infrastructure to derive metrics about project status and developer progress. It then presents everything in an elegant, dashboard-style interface. I was impressed with the clever nature of this solution — especially the clarity of the display and the ability to drill down fairly deeply. Nonetheless, Enerjy CQ2 v.1.1 had a few rough edges resulting, I believe, from its comparative newness.
CQ2 monitors the contents of a site’s SCM (source-code management) systems, code coverage tools, and Enerjy’s own defect checker to assemble an extensive database that reflects the exact status of a project over time. The easy-to-navigate dashboard allows managers and project leaders to see the status of a given project, as well as the level of developer participation.
Enerjy CQ2 tracks developer changes to a code base via the site’s existing SCM package. It currently works with CVS, Subversion, Perforce, and Accurev. It also hooks into defect-checking tools from Checkstyle and PMD and coverage tools from Clover and Cobertura, and Enerjy is rapidly building connectors to other packages.
In the dashboard, you aggregate developers into teams and consolidate teams into projects. A manager can then compare the productivity of a developer against others on the team or compare teams with one another.
Thanks to Enerjy’s history as a Java QA tools vendor, if your code base is written in Java, CQ2’s own code verifier will run on the code. The verifier ships with 244 built-in rules that check problematic syntax and verify that code conforms to site requirements for style, documentation, and the like. Sites can easily add their own rules or change the severity rating of violations.
As Java code is checked in to the SCM, this verifier runs automatically and updates its database with defect counts for the new code, as well as any modifications. (The supported defect checkers and coverage tools are all Java-oriented.) CQ2 ties the defects to specific users to measure the quantity and quality of a developer’s work.
Although some developers will justifiably question whether counting lines of code is an effective measure of productivity, few will argue that counting defects is a reasonable proxy for code quality. Using these key performance indicators, CQ2 tracks how consistently developers check in clean code, how quickly they attend to defects, and how their defect rates compare with those of their peers. On this point, CQ2 offers a ratio of defects per thousands of lines of code, aka KLOC, which enables a consistent comparative basis.
CQ2 generates its ROI from two delivered benefits: tracking the forward progress of a project and ascertaining developer contribution and quality. Given the expense of programmers today and the drag poor ones create on a team’s progress, Enerjy CQ2 can pay for itself quickly with this diagnostic.
Drilling down to an individual developer’s numbers is as easy as clicking on the corresponding color-coded graph line. Should you want to, you can keep going all the way down to a specific defect and even to the exact line in the code, where Enerjy CQ2 displays the defect and the diagnostic message. This feature is particularly valuable for examining defects that are graded severe.
The main displays use color-coded line graphs for each team of developers. But because developers often have similar statistics, such as code coverage, it can be difficult to pick out a single record from the dashboard’s tight cluster of lines. This is especially troublesome at sites with more than eight or nine developers on a team.
A second limitation is that developers can only be placed into one group — say, the UI team or the database team. If you want to compare senior developers against one another or as a group vs. junior developers, you’re out of luck.
My final concern involves the database that holds the displayed data. CQ2 currently employs an embedded database, Apache Derby, which is the right design. However, even small code bases generate substantial amounts of data, and it’s clear that large projects would tax Derby excessively if many developers were checking in code. CQ2 does not currently ship with support for external enterprise DBMS, although such a feature is in the works.
Enerjy CQ2 fills such an obvious need and is so simple to use, you’ll wonder how managers tracked progress and assessed productivity before it came along. My few gripes — all relating to scalability — do not materialize until teams with more than a dozen or so developers are involved. I expect greater scalability will appear in future releases, as will support for a greater variety of tools to plug in to.
The heavy orientation toward Java might limit the product’s appeal. But if your site relies on Java and has small developer teams, and you need better oversight of projects and developers, Enerjy CQ2 is a must-have.
Ease of use (30.0%)
Overall Score (100%)
|Enerjy CQ2 v.1.1||7.0||7.0||8.0||8.0||9.0|
You may still be better off sticking with Win7 or Win8.1, given the wide range of ongoing Win10...
Microsoft buried a Get Windows 10 ad generator inside this month's Internet Explorer security patch for...
Here’s the best of the best for Windows 10. Sometimes good things come in free packages
The creator of Linux talks in depth about the kernel, community, and how computing will change in the...
The latest additions to Google's mobile OS should give you plenty to chew on
The open source operating system celebrates its 25th anniversary this month
Google's gRPC aims to oust JSON for exchanging data between HTTP-connected services