Bill Venners’ outstanding interview with Anders Hejlsberg (lead C# architect)
brings back ghosts of many “framework” horror stories I’ve been exposed to in
my professional career.

It’s amazing how many ugly-ass behemoth frameworks are thrown out (or are
ripped to shreds at lunch time) as soon as the original developer moves on.

Build to your specs, people!!!

<Anders on C# and checked exceptions>

C# is basically silent on the checked exceptions issue. Once a better solution is
known, and trust me we continue to think about it, we can go back and actually
put something in place. I’m a strong believer that if you don’t have anything
right to say, or anything that moves the art forward, then you’d better just be
completely silent and neutral, as opposed to trying to lay out a framework.

If you ask beginning programmers to write a calendar control, they often think
to themselves, “Oh, I’m going to write the world’s best calendar control! It’s
going to be polymorphic with respect to the kind of calendar. It will have
displayers, and mungers, and this, that, and the other.” They need to ship a
calendar application in two months. They put all this infrastructure into place in
the control, and then spend two days writing a crappy calendar application on
top of it. They’ll think, “In the next version of the application, I’m going to do so
much more.”

Once they start thinking about how they’re actually going to implement all of
these other concretizations of their abstract design, however, it turns out that
their design is completely wrong. And now they’ve painted themself into a
corner, and they have to throw the whole thing out. I have seen that over and
over. I’m a strong believer in being minimalistic. Unless you actually are going
to solve the general problem, don’t try and put in place a framework for solving
a specific one, because you don’t know what that framework should look like.

UPDATE: At the time I was writing this entry, the C2 Wiki was down, but I had
a real urge to link my post to the PrematureGeneralization and
YouArentGonnaNeedIt pages.