Gap analysis for a Software Produc t Team
‘Deceived’ - is the state of sincerely believing something which is false and baseless.
The more I engage in teams the more I have to fight against deception. A deception that we are good and high tech when most often managers in software rarely know and understand what and how to measure in order to gauge effectiveness of the team.
Software is not only meant to be executed, it is meant to be read, to be understood by others, to be maintained, to be deployed - Think about that.
I will attempt to list some basics without which some teams alarmingly keep on churning software - software that runs (and nothing else) but is worth garbage measured against what it should be.
1. A Clear Java coding guideline.
How long will a software team survive without a standard set of comment tags for classes and methods?
At the minimum these should have
@requires
@modifies
@effects
for all methods, which forces developers to think in terms of pre and post conditions for method behavior and the effects produced.
It drastically improves morale of new comers (with or without experience) when they look at the code base since they can now understand code.
The practice of throwing an already ugly code base at new developers without mentoring is ineffective. Moreover, they end up as faithful followers of the seniors in writing code without comments and tests. It only produces more 'blind men'.
2. A Simple to use but enforced Automated Testing practice at developer level
I mean 'automated tests' the way automated testing should be.
A group of developers have to be handed over (obviously by management) this task to create a customized test suite based on JUNIT that can send and receive Application requests and responses.
Feature Tests based on these then have to be checked-in into source repository for every CR/checkin. Let Managers override and accept responsibility for this if they feel that the checkin cannot be independently tested.
3. A dedicated build machine separately in all locations and an automated build cycle.
Again, please resist the 'this is that' syndrome of trying to equalize anything that you are doing now to what is actually being proposed. Builds on developer machines are fine only for that developer and with limited scope.
Build machines look at the entire product. They should download the entire source from source repository do a full compile, build and package. Then a complete fresh deployment is done including all EJBS and then a basic set of automated Test are run to determine state of the code. Error are notifies by email or whatever is required. Xdoclet is one effective solution to build package and deploy EJB on any target App Server including weblogic,JBOSS and websphere.
Any build solution should maintain build config information in one and only place (DRY = Don't Repeat Yourself).
4. Finally, get all employees on a company wide Instant Messenger that helps locating people by knowledge and expertise. So anyone knows whom to reach to ask questions related to 'specific features'.
So there are solutions in all these areas but none will succeed without management drive and planning.
This analysis is free but might just be the same you get from a paid consultant. The content speaks for itself.
Wish you all the best.

