I have just moved from phase 1 to phase 2 of a project. In this transition we got rid of all of the XML configuration for spring and struts2, switching to a fully annotated regime.
All of the participants are amazed at the actual effect this has on development speed. There are a number of reasons for this:
- Structured thinking about which roles are needed lead to clear understanding that we needed @StubRepository, @TestService and @NotTestService annotations to facilitate all the different run-time models that our project uses (runtime, unit test, integration test, selenium test)
- These annotations replaced a large number of duplicate xml definitions.
- All dependencies are fully trackable in the ide.
- Simpler to work with code because dependencies are clear
Some of these gains could probably have been realized by re-structuring the xml as well, but that would not have been a trivial task.
I honestly believe this has given somewhere around 10% boost in productivity for our 20,000 man hour project. I almost find it hard to believe.
Anyone else sharing this same experience ? What's your gain, and how do you explain it ?