Artima Weblogs | Eric Armstrong's Weblog | Discuss | Email | Print | Bloggers | Previous | Next
Sponsored Link •
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. (http://www.holub.com/)
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.
Have an opinion? Be the first to post a comment about this weblog entry.
If you'd like to be notified whenever Eric Armstrong adds a new entry to his weblog, subscribe to his RSS feed.
|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 http://java.sun.com. Eric is also involved in efforts to design knowledge-based collaboration systems.|