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
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
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