The Artima Developer Community
Sponsored Link

Cool Tools and Other Stuff
Learning How to Design
by Eric Armstrong
December 4, 2003
The ability to design a system architecture is the most important and most powerful tool that a developer can possess. But it is a skill that is difficult to learn, and one that is almost impossible to teach. Allen Holub's design training workshop does a great job of doing just that.


Possibly the best tool in a developer's arsenal is a good design methodology -- and that's the hardest thing of all to teach. I recently attended Allen Holub's one week intensive design workshop, and I can tell you that it's a great way to learn rapidly (if at times painfully) about a lot of that things that go into a good design process. (

In a single week, we covered object-oriented analysis, object-oriented design, many XP processes, CRC cards, UML notation for object relationships and interactions, and even patterns. It was a whirlwind. But it was also a powerful, eye-opening experience.

It was also a painful experience, at times, because it was a "learn by doing" workshop. That's a lot more interesting than sitting around listening to someone preach, but it means that you hear "don't do that", a lot of the time -- many more times than feels good for your ego, if you know what I mean.

But the result is that you *really* learn. Interestingly, this is exactly the same way that writers learn -- as a result of the editing process. When an editor points out things that need to be fixed -- and you make the same fix in a few hundred places, you learn what your strengths and weaknesses are -- and you definitely learn to avoid your weaknesses.

It hurts to be edited, actually. Your carefully chosen words are chopped up, and in a way your efforts are invalidated. But the end product improves as a result, and you get better in the process. It's like weight training or any other kind of training, in that it hurts -- but it hurts in a good way because you grow from the experience.

Allen's workshop was a lot like that. Your "design instincts" are brought to light, and in the process both your strengths and weaknesses are exposed. So even more important than the familiarity with UML notations and design patterns you come away with, is the practice and feedback you get on your design thinking.

In short, it's a tremendous learning experience for any object oriented developer who is serious about their craft.

Talk Back!

Have an opinion? Be the first to post a comment about this weblog entry.

RSS Feed

If you'd like to be notified whenever Eric Armstrong adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Eric Armstrong has been programming and writing professionally since before there were personal computers. His production experience includes artificial intelligence (AI) programs, system libraries, real-time programs, and business applications in a variety of languages. He works as a writer and software consultant in the San Francisco Bay Area. He wrote The JBuilder2 Bible and authored the Java/XML programming tutorial available at Eric is also involved in efforts to design knowledge-based collaboration systems.

This weblog entry is Copyright © 2003 Eric Armstrong. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use