Why specs matter

Most
developers are morons, and the rest are assholes. I have at various times
counted myself in both groups, so I can say this with the utmost confidence.

 

Assholes

Assholes
read specs with a fine-toothed comb, looking for loopholes, oversights, or
simple typos. Then they write code that is meticulously spec-compliant, but
useless. If someone yells at them for writing useless software, they smugly
point to the sentence in the spec that clearly spells out how their horribly
broken software is technically correct, and then they crow about it on their
blogs.

 

There is
a faction of assholes that write test cases. These people are good to have
around while writing a spec, because they can occasionally be managed into
channeling their infinite time and energy into finding loopholes before the
spec is final. Unfortunately, managing assholes is even harder and more
time-consuming than it sounds. This is why writing good specs takes so long:
most of the time is frittered away on asshole management.

 

Morons

Morons,
on the other hand, don’t read specs until someone yells at them. Instead,
they take a few examples that they find “in the wild” and write
code that seems to work based on their limited sample. Soon after they ship,
they inevitably get yelled at because their product is nowhere near conforming
to the part of the spec that someone else happens to be using. Someone points
them to the sentence in the spec that clearly spells out how horribly broken
their software is, and they fix it.

 

Besides
the run-of-the-mill morons, there are two factions of morons that are worth
special mention. The first work from examples, and ship code, and get yelled
at, just like all the other morons. But then when they finally bother to read
the spec, they magically turn into assholes and argue that the spec is
ambiguous, or misleading in some way, or ignoreable because nobody else
implements it, or simply wrong. These people are called sociopaths. They will
never write conformant code regardless of how good the spec is, so they can
safely be ignored.

 

The
second faction of morons work from examples, ship code, and get yelled at. But
when they get around to reading the spec, they magically turn into advocates
and write up tutorials on what they learned from their mistakes. These people
are called experts. Virtually every useful tutorial in the world was written by
a moron-turned-expert.

 

Angels

Some
people would argue that not all developers are morons or assholes, but they are
mistaken. For example, some people posit the existence of what I will call the
“angel” developer. “Angels” read specs closely, write
code, and then thoroughly test it against the accompanying test suite before
shipping their product. Angels do not actually exist, but they are a useful
fiction to make spec writers to feel better about themselves.

 

Why
specs matter

If your
spec isn’t good enough, morons have no chance of ever getting things
right. For everyone who complains that their software is broken, there will be
two assholes who claim that it’s not. The spec, whose primary purpose is
to arbitrate disputes between morons and assholes, will fail to resolve
anything, and the arguments will smolder for years.

 

If your
spec is good enough, morons have a fighting chance of getting things right the
second time around, without being besieged by assholes. Meanwhile, the assholes
who have nothing better to do than look for loopholes won’t find any, and
they’ll eventually get bored and wander off in search of someone else to
harass.

Why specs matter

I’m Longhorn’ing now!


I finally got some free time on my hands to installed Longhorn on my machine on top of Virtual PC. I spent the whole day yesterday fooling around with Longhorn, poring over the MSDN articles on Longhorn that I was purposefully ignoring up to now.


This is the first time I’ve used Virtual PC seriously, so while the Longhorn installation was going on I read over VPC help and learnt quite a few about it’s concepts. One key thing is that unlike VMWare (I might be wrong here), all VPC’s installed on any machine emulate a standard hardware configuration. This is what makes it possible to open up a virtual machine file on another machine.


Using the Shared Network option I was able to configure the Longhorn installation to use my network config and was happily browsing my own site and logged in to Messenger on the Longhorn build (the tease screenshot below). Overall I’m quite impressed with this WinHEC build (which was released in May 2004). It’s quite fast, I didn’t notice the much talked about Explorer leak (I allocated 730MB RAM to the virtual machine) and configured it to run at maximum speed.


I wrote and ran my first XAML application and boy what a feeling, I can’t wait to start writing some serious code!


 


I’m Longhorn’ing now!

The state of the nation

Everything seems to
be going downhill, I had to wait for an hour to get some fuel for my car. Interest
rates are supposed to go up by the end of the year. Will we Sri Lankans never
learn?

http://www.thesundayleader.lk/20040815/politics-more.htm

Fomenting religious
dissent was also part of the well orchestrated campaign of the then opposition,
but in government today, it is called upon to bell the cat with the JHU
demanding the Anti Conversion Bill be passed into law given the green light of
the Supreme Court. To top it all, with prices already skyrocketing, the
government last week asked the people to brace themselves for further hikes.

And the irony of it
all is that the very reasons adduced by the President and the UPFA for the
ouster of the UNF such as the preparation to negotiate the ISGA with the LTTE,
allowing the Tigers to set up camps in Trincomalee such as at Manirasakulam,
providing duty free facilities to bring vehicles and equipment to the country
in addition to helicopter rides and other violations of the ceasefire
agreement, are all reenacted today, now with the blessings of the very
President and the UPFA.

 

The state of the nation