This post originated from an RSS feed registered with Ruby Buzz
by Rick DeNatale.
Original Post: Erich Gamma on Eclipse Lessons, Agility, and Open Source
Feed Title: Talk Like A Duck
Feed URL: http://talklikeaduck.denhaven2.com/articles.atom
Feed Description: Musings on Ruby, Rails, and other topics by an experienced object technologist.
InfoQ recently published video of
Erich Gamma's talk at QCon London 2008
about how his seven years of experience with Eclipse have changed his views on software development.
I enjoyed having another opportunity to hear Erich, one of the
"Gang of Four" and a
former colleague at OTI.
Erich has always been an engaging speaker. I recall his status talk at the annual OTI technical conference
around the time when VisualAge MicroEdition was making the transition to Eclipse, and from Swing to the new
OTI developed SWT. Erich, who lives in Zurich, and is quite the alpine skier, talked about the problems we'd been
having with Swing, illustrated with a slide he took at one of the Swiss ski resorts of a warning sign posted near
one of the chair lifts, showing a pictogram of a skier about to fall out of a dangerously rocking chair lift
seat, with a sign below in English saying "Don't Swing!." This may or may not have been the same conference
where I had the opportunity to chair with Erich and Kent Beck when they were first pairing on JUNit. Something
I got to do again on one of my business trips to the OTI labs in Zurich.
Watching the video, I was glad to see that Erich has aged well, and looks much the same as always. His fashion
sense is unchanged, and he's still a "man in black."
Enough reminiscing though. I'd like to comment on a few of the things he had to say.
One of his comments is that Eclipse, unlike some of the earlier frameworks he'd done, like ET++, which
was a sort of reimplementation of the old MacApp framework in C++ for other platforms, defines explicit hooks
for extension rather than using inheritance-based interfaces. He likened inheritance-based frameworks
to exhibitionism, in that they expose too much implementation. He said that this might be great for
the first release, but it makes it hard to evolve.
This is the same point I tried to get across to Bill
"Mosquito Man" Gates and his team at
Microsoft almost 20 years ago now, which I
recounted on this blog.
Another of Erich's lessons was the need to allow for growth. Eclipse put an emphasis on consistent, concise APIs
with explicit conventions. These APIs matter, but they represent a huge commitment.
Failure to maintain backwards compatibility is deadly to user enthusiasm.
So it is better to start
with sparing APIs rather than having to support wrong or unnecessary APIs indefinitely.
Another major focus of this talk is process. Erich talks about the transition we made in OTI and IBM from
closed to open development. I know well of what he speaks having been working at the OTI Raleigh lab back then.
Being from Zurich, he called the old way the "Swiss Bank" approach, with the code and developers locked away
like money in the vaults below the Banhofstrasse, or using a computer analogy, putting a 'firewall' between
developers and users.
Open (source) development removes that firewall, and the lesson learned was that the transparency helps development.
Both developers and users have a better understanding of current status. Responding to more frequent feedback
from the users takes more time for developers, but pays off.
Using the same communication channels both inside and outside the team, including newsgroups, mailing lists,
bug trackers, dashboards, meeting notes, blogs and wikis helps both the users and the team, particularly when
the team is geographically distributed.
IBM has learned to apply open development even when developing commercially licensed software. There is still value
in allowing public visibility of news, bugs, status, and yes even source code, even when that source is not
and will not be licensed under an open source license.
Erich also has some interesting things to say about how IBM has "scaled up" agile practices. The process he
describes is pretty much the same as we followed in OTI, with "time-boxed" internal drops every six weeks,
Of course in an open-source project, internal here doesn't mean private, just interim.
So if you are interested in software processes, approaches to designing systems which can adapt and grow, and
how a large corporation like IBM applies agile techniques, you might want to spend an hour or so watching
Erich's talk.