NetBeans 5.0 is Making Me Grumpy
It's an old comic routine, where a grumpy old man complains about how much easier "kids today" have it than he did. Personally I think Dana Carvey perfected it in his Saturday Night Live character, but I bet most of us have at least one older relative who sounds like this guy at times. With the way software development changes so rapidly, it's easy for any of us with a few years experience to sound grumpy when some newbie complains about how hard programming is. "You think NetBeans is hard? Why in my day we used Emacs, and even though it made our fingers ache we loved it!" ("You had Emacs? Back in *my* day we used punch cards, and we were glad we had them." "You had punch cards?" and so on...)
The NetBeans 5.0 beta just released, with a slew of new features that improves application development and therefore, can make old-timers grumpier. The feature that makes me grumpy is one many NetBeans users won't care about: developing NetBeans Modules and Rich Client Applications is now much, much easier than in previous releases. Core tasks that once took me days to learn are now boiled down to clear, easy-to-understand wizards. Extending NetBeans is no longer limited to the core set of engineers dedicated (and masochistic) enough to devote the necessary effort to use this API effectively.
As a recovering engineering manager, it's been a pleasure watching the "apisupport" team design and implement this critical feature. First, a small team was created and, as much as possible, dropped out of sight from the rest of the engineering group. As NetBeans management learned several releases back, rewriting core functionality requires isolating the team from corporate antibodies, which can kill innovation that threatens existing systems.
Next, NetBeans lucked out and hired an exceptional doc-writer, Geertjan Wielenga. I normally don't single out individual team members for praise since engineering is a team sport, but Geertjan's contribution was critical because he didn't function like a normal doc-writer. Maybe it only is true at Sun, but here most writers are forced by their heavy workloads to avoid getting too involved in early product development, preferring to wait until the design is finalized so as to avoid having to drastically rewrite their work. Geertjan, on the other hand, jumped right in with no previous NetBeans API exposure (as far as I know) and quickly started writing several short tutorials (found here), bombarding the developers with questions and then forwarding frequent drafts to the team for review. Because the development engineers were trying to make NetBeans API development easier, his questions helped shape the various wizard designs (if a developer has to ask too many questions, the current design isn't working). Other equally good doc-writers might ask similar questions yet don't impact the product's code as much, because they waited until the design was frozen when they started writing documentation for it.
Geertjan's tutorial code also showed lots of places where NetBeans was unnecessarily burdening module developers by requiring hand-written, boilerplate code. The development engineers therefore reviewed each tutorial with an eye for how they can shorten or even eliminate the tutorial with a wizard design, because documentation also functions as design criticism (i.e., good designs shouldn't require much explanation). Geertjan then quickly made massive rewrites and eliminated a lot of code as the API support improved. His impact on the project therefore can't be weighed by how many words made it to the public website. I wish more doc-writers and QA engineers were actively engaged in the initial design and development process, but suspect it is a management scheduling problem rather than a lack of interest or commitment.
My biggest complaint? I wish this work had been done six months ago, when I started working on making a NetBeans module which uses Jackpot, as it would have saved me literally weeks of work. So be warned that I may get grumpy about complaints about how hard module development is. <rant>"It took you a week to extend NetBeans 5.0? Why that's nothing! In my day we spent months staring at source files 'til our eyes bled, but we were happy to do it."</rant>