The other day I was trawling the Java web sites (Javalobby, The Server Side, etc) and I found “Sonar”.
It takes well established tools (like checkstyle and PDM) and meshes them into a “quality platform” (aka web site) that would blow the socks and shoes off any manager or CTO wanting to take the next step in quality control. You can analyse, dissect, bisect your code, monitor the team check-ins for infringements and watch quality metrics change over time (probably as existing as watching grass grow).
I had a quick look at Sonar and bookmarked it (in the hope that I would find time between work, kids, EJB certification, bike riding, etc to have a look at it).
However, it got me thinking…
“Do all these metrics, style checkers and bug finders really make a difference?”
On reflection, I think that code analysis tools are bit like vitamins (see here) and standard practices (like code documentation, issue management, technology selection & investment, scope management, estimating, etc) are like a good diet.
are easy to take
get plenty of media attention
may make a small difference (but this is not conclusive)
may harm (especially in large, enforced doses)
are often sold (by managers to their managers) as the solution to every ailment
A good diet ..
is boring and hard to sell!!
is know by almost everyone, but followed by very few people
needs to be in place from the start and not added as a last minute “band-aid”
If you still think you need a vitamin boost … check out the Solar in a nut shell and start popping those “FindBugs” tablets and “CheckStyle” supplements.
Over the last few years I have been quite heavily involved in recruiting new graduate developers. One of the issues that came up over and over was the value of certifications.
Some people say that they are not worth the paper they are printed on. Other say that they turn you in to a human compiler. However, I believe that they are extremely valuable for the following reasons:
Certification ensures that you have a minimum level of knowledge. This is a level that an employer can have confidence in. It is not a few “ad-hoc” technical interviews questions … it is a well thought out, comprehensive technical assessment provided by the experts. For example, when you interview someone who is Java certified, you can imagine that the Java experts from Sun had carefully interviewed them and given them their tick of approval (at least in the basic technical area).
Certification gives you a broad and deep understanding of the technology. I have seen senior developers who through circumstance, never mastered some of the most fundamental Java concepts. Real world experience is not always the best teacher. It is often “hit and miss”. You may learn one area well and totally miss another important area. Certification ensures that there are no significant gaps.
Certification can be a stepping stone. They help you move on to new areas and challenges. It is always a vicious circle. Without experience in technology x, you can not get a job working with technology x … but you can not get experience in technology x without a job in technology x…. Certification gives you a way out of this endless loop. You can get certification in an area you want (day-dream) to work in … and then it is much easier to get the job in that area.
Certification proves that you are enthusiastic. Many people say they read IT books, visit sites, keep up to date with new developments, etc … but it is impossible to judge the true level of their interest. However, someone who has taken the initiative to get certified and has invested 3 to 6 months studying, clearly demonstrates their level of commitment. After all “IT development” is not just a job … it is a passion.