Three lessons I learned when working on NetBeans 5.5
By pavel on Nën 01, 2006
#1 Take time to do what makes sense
When I first started to look at Java EE 5, more specifically EJB 3, in May 2005 I got the impression that we are already too late and we will not be able to catch up. JBoss had a preview of EJB 3 as a separate download for their server and a preview of their eclipse based IDE. My first instinctive reaction was to hack something togeather and get it out ASAP. I was wrong. It took almost a year to finalize the Java EE specification, release the full reference implementation and a beta of NetBeans 5.5 for JavaOne 2006. NetBeans is still far ahead of eclipse with full Java EE 5 support. The JBoss incomplete implementation of Java EE 5 is still in a preview state. Do not take me bad. I sincerely wish them the best to release the complete EE 5 support ASAP, IMO it's good for the developers and for the Java EE specification to have a full support. The confusion around this shows that releasing a partial solution quickly is not always good. Point taken.
#2 There are no small releases
NetBeans 5.5 is primarilly about Java EE 5 support. There is also SVN support, etc., but EE5 is where the bulk of the work was. The part of NetBeans that needed to be modified to support Java EE 5 was limitted which made me initially think that this will be a "smaller" release. Shorted, with fewer risks, perhaps with shorter bugfixing phase. With other NetBeans developers working on a different code branch there were fewer dependencies to solve, fewer teams to manage, potential to get help from more coders if needed, etc. Right? Wrong! We still needed to think about the features we wanted to implement, write design and user interface specifications, code, do a usability study to see if users find what we prepared for them helpful, code more, bugfix, integrate samples, blueprints, write help and tutorials, check internationalization and accessibility, and so on and on. At the end the release took no less time then other NetBeans releases typically take. On the positive side other developers who did not contribute to NetBeans 5.5 had time to work on cool stuff that requires time in areas like Java editing, Mattise, debugger, etc. which will pay off nicely in NetBeans 6.0. If you like NetBeans 5.5 wait before you see that!
#3 Missing feature can be a valid P2 defect
One of my personal code contributions to 5.5 is the JSF CRUD generator. It is a wizard that generates a JSF application for [JPA] entity classes (which in turn can be generated by NetBeans from database tables). It was not in the original plans for NetBeans 5.5, but I thought it would be a good demonstration for learning what you can do with Java EE 5 - specifically JPA and JSF and it could be handy as a scaffolding for real applications. I created the first version pretty quickly and tested it on several database tables from the sample database and it all looked pretty good so I integrated it in. Then came the real users with real tables and the hell broke lose over me. How do you support M:N relationships? How do you support composite primary keys? If you did not think that pagination (i.e. splitting the result set into blocks of say 20 records and adding First/Next/Prev/Last buttons) is necessary then you probably did not deal with thousands of records, right? I am reading a book Facts and Fallacies of Software Engineering by Robert L. Glass and he explains this in fact #33: "Even if 100 percent test coverage were possible, that is not a sufficient criterion for testing. Roughly 35 percent of software defects emerge from missing logical paths [...] they will not be caught by 100 percent coverage." Luckilly they will be caught by the eyes of our faithful testers. Two I would like to mention are NetBeans users who use aliases hilz (Halim Salameh) and brviking (Edson Carlos Ericksson Richter). And they have my big THANK YOU for this release!