Mention the name "Erich Gamma" and what comes to mind? Patterns? Unit Testing? Eclipse? In his relatively short career, Erich has had a profound impact on the way software is developed, earning him a spot among "The People Who Shape Technology".
The concept of software design patterns really got rolling with a quartet of engineers affectionately known asIt’s not often you have a brush with death as a programmer. the "Gang of Four" (GOF or GO4). In 1995, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides published their now famous book titled "Design Patterns, Elements of Reusable Object-Oriented Software". But the genesis of the book came earlier, and was only the beginning of Erich's success.
In 1988, Erich Gamma, Andre Weinand, and Rudolf Marty were working on an object oriented application framework in C++ called "ET++". They published a paper about it at OOPSLA '88. In 1991 Erich came up with an idea for a Ph.D. thesis about patterns, and by 1992, he had started collaborating with the other GOF members on expanding this idea. They submitted a catalog of object-oriented software design patterns to the European Conference of Object-Oriented Programming (ECOOP) in 1993, and then consolidated their ideas into the Design Patterns book we know today.
The Design Patterns book is the most popular computer book ever published, with over one million copies in print. It established a vocabulary for taking about recurring themes in software, allowing developers to conceptualize, share, and expand on existing best practices. "[Gamma95]" is still one of the most common references you will see in the literature of computer science.
One of the things that you will notice about Erich's career is the way he embraces collaboration and openness. Erich exemplifies the open and sharing nature of early computer scientists such as Richard Stallman, but without Stallman's penchant for politics and drama. Erich gracefully builds upon and credits the work of others, in the hope that others will build upon his work. One source writes:
The GO4 gives credit to several people for the idea of design patterns. The GO4 first cites a civil engineer and architect named Christopher Alexander who published a paper in 1977 titled "A Pattern Language". In this treatise, Alexander sought to define step-by-step rules for solving common engineering problems relevant to the creation of buildings and communities.
The GO4 also looked to the works of such luminaries as Donald Knuth (The Art of Computer Programming, 1973), and James Coplien (Advanced C++: Programming Styles and Idioms 1992). In contrast to what the GO4 wrote about, these publications focused on lower-level software algorithms. The GO4 were also influenced by the writings of contemporaries such as Kent Beck (The Smalltalk Report, 1993), and Peter Coad (Object-Oriented Patterns, Communications of the ACM, September 1992). (A Short History of Design Patterns)
When people achieve a huge success, one of several things can happen. They can rest on their laurels, milking their achievement for the rest of their lives. They can try to reclaim past glory through a series of speculative ventures that usually end up in failure. Or, in rare cases, they can ignore the pedestal prepared for them and humbly continue with whatever interests them. Erich Gamma falls into this last category. His first success, of course, was Patterns. The next breakthrough began on an innocent airplane flight.
While flying from Zürich to Atlanta, Georgia for OOPSLA-97, Erich and his friend Kent Beck (of Agile/XP fame) created the first version of what would become known as JUnit. Kent writes:
We were having fun, making a bit of noise and getting the fish eye from a conservatively but badly dressed man across the aisle. It wasn’t until we got to customs and watched him flash a badge and breeze right through that we realized he was probably a federal agent. It’s not often you have a brush with death as a programmer.
At that time the pair believed what they had created, while cool, was so small and seemingly insignificant that "of course the only thing we could do with it was give it away for free". But something unexpected happened. JUnit took off like wildfire, spreading through the Java world like a virus and soon infecting other languages. At last count there were several dozen ports of the basic framework.
JUnit ushered in a new era of developer testing. Before JUnit, testing was done mostly by dedicated "testing groups" who took whatever the developers produced and tried it out to see if it worked. Some teams still work that way. With unit testing, however, the responsibility falls on the developer. This shortens the time between the creation of a fault and the detection of a fault, which is always a good thing. Some developers have taken this idea to the next level, by writing the tests *before* writing the code. Thus was born Test Driven Development (TDD).
After a couple of years of inactivity, this year Erich and Kent released a new generation of JUnit, version 4.0, to take advantage of Annotations and other features in Java 5. It's backwards compatible with the previous generation, but applies some lessons learned since that first airplane ride. Erich hasn't stood still either. His next success: Eclipse.
Erich joined a company in Zürich called Object Technology International (OTI), which was later bought by IBM. At OTI he helped apply the lessons of patterns and unit testing to real-world projects such as Visual Age Micro Edition (VAME). Some components started in VAME were continuously refined and became part of what is now called Eclipse. In 2001, IBM released Eclipse to open source, and it exploded onto the development scene.
Erich Gamma was the original lead and visionary force behind Eclipse's Java development environment (JDT). He still sits on the Project Management Committee for the Eclipse project. If you've never browsed the Eclipse Platform source code, you're in for a real treat. Design patterns permeate the code, lending an elegant power to concepts like plug-ins and adapters. All of this is backed up by tens of thousands of unit tests. It's a superb example of state of the art object oriented design, and Erich played a big part in its creation.
Eclipse went on to become the number one Java development environment in the world. It's presence has commoditized a whole segment of software (developer tools), forcing corporate stalwarts like Borland and BEA to adjust their focus on other sources of income. And yet, it has enabled another segment that builds on its IDE and rich client frameworks to produce software faster and better than ever before.
So what's next for Erich? Lately he's been working on a little project called Jazz...
During the development of Eclipse, Erich and other visionaries such as John Wiegand and Kevin Haaland, refined and honed a software development process they call "The Eclipse Way". Much has been written about this so I won't go into all the details. But basically it boils down to a predictable rhythm of regular milestones and a culture of continuously consumable releases that have given Eclipse one of the best track records of on-time releases of any modern software project.
Once the process had a few years of refinement under its belt, Erich and others felt that tools could be created to assist the team members in performing their responsibilities more smoothly, and in a more repeatable fashion. Thus the Jazz project was born. Jazz is a joint venture between IBM Rational and IBM Research Labs. And guess who's right in the thick of things? That's right, Erich Gamma.
After attending a couple of demos of Jazz, I came away very impressed with what they were able to accomplish. It's not so much the features of the individual tools, but the gestalt of all the tools working together that gives Jazz its power. You've got source management, bug tracking, build tracking, task lists, collaboration, and so forth, all rolled up in one integrated environment. The first question from anyone who sees it is "When can I get my hands on this?". IBM recently announced that some of the core parts of Jazz would be open sourced, so we're very much at the beginning of this story.
In the words of Kent Beck:
Erich's biggest impact has been in promoting high-quality software design. ET++ showed what well-designed C++ could do. Design Patterns made some of the thinking behind good design accessible to a large audience. Eclipse created a platform where programmers could take direct advantage of good design. The better-designed plug-ins are, the more powerful they are. Poorly-designed software can still be valuable, but Erich has encouraged well-designed software that can be much more valuable.
Erich Gamma has a special gift of innovation. More than invention, innovation is the process of taking new ideas or refining old ones, and making them useful and accessible to others. An invention stashed in a drawer is useless. But share it with others, show people what is possible, make them think, and like Erich, you can change the world.
- Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1995
- The Gang of Four
- ET++—an object oriented application framework in C++, by Andre Weinand, Erich Gamma, Rudolf Marty, January 1988
- Design Patterns: Abstraction and Reuse of Object-Oriented Design, by Erich Gamma, Richard Helm, Ralph E. Johnson, John M. Vlissides, July 1993
- A Short History of Design Patterns, April 2005
- How to Use Design Patterns: A Conversation with Erich Gamma, Part I
- Erich Gamma on Flexibility and Reuse: A Conversation with Erich Gamma, Part II
- Design Principles from Design Patterns: A Conversation with Erich Gamma, Part III
- Patterns and Practice: A Conversation with Erich Gamma, Part IV
- Eclipse's Culture of Shipping: A Conversation with Erich Gamma, Part V
- JUnit: General Java testing
- Test Infected: Programmers Love Writing Tests, by Kent Beck and Erich Gamma
- Eclipse (wikipedia)
- EclipseCon 2005 Day 2: The Eclipse Way
- EclipseCon 2006 Day 2: Stories along the Eclipse Way
- JavaOne 2006: Keynote on Agile Eclipse, Transparency, Honest, and Retrospective
- JavaOne 2006 Day 4: Java in the trenches, the Eclipse Way
- ACM Portal, articles by Erich Gamma
- Eclipse team leaders
- A brief history of Eclipse
- Contributing to Eclipse, by Erich Gamma and Kent Beck
- Rational Jazz Soon to Eat More of It's Own Dog-food: Transparency
- Bill Higgins Jazz blog
- Hot Jazz vs. Cold Beans
Our IT Shapers:
- Richard Stallman: The most hated man in cyberspace
- Erich Gamma: A pattern of success
- Barrett Lyon: Internet Influencer
- Dan'l Lewin: Leading Microsoft Emerging Business Development
- Kevin Lynch: Making the Rich Internet Application a reality
- George Boole: On the shoulders of genius
- Howard Rheingold about our mobile world
- Tom Anderson: The man behind MySpace
- Users always have the final say