Sat
- November 22, 2003
New Ride
Well, thanks to Ahnold lowering the car tax from
outrageous to just plain bad, we got a new car today. We're the proud owners of
a 2003 Honda Element 2WD in shoreline mist. Did I get a good deal? Nope, but I
could afford it so I just went ahead an bought (actually the discount on the
sticker was reasonable for the area; I just didn't get diddly for the mighty
Neon). It is a nice car and I'm sure we'll be happy with it. Esther can drive
an automatic, though it has been a while so I think we'll have a few practice
sessions before she flies solo. Thanks to Esther getting her fellowship stipend
mostly in a lump sum, we were able to buy with cash. I didn't do the dramatic
thing and show up with a brief case full of twenties, but used a cashier's
check. Actually, the finance guy told me they would have taken a personal
check. I didn't even bother bringing my check book because I couldn't imagine
anyone would have taken that kind of money in a check, but they would have.
Learn something new every day. I also learned that I have a good credit score,
but it is light because I've only had two auto loans. I'd be happy to have a
mortgage if I could actually afford a house, but that isn't going to happen
while I'm living here.
Posted at 06:24 PM
Read More
Fri - November 21, 2003
Kill your TV
I want to quote something from Theodore Dalrymple
(it's a pen name--his real name is Anthony Daniels), a British psychiatrist and
social commentator. He spends much of his time treating prisoners in London and
has closely observed the British underclass and its pathologies. You can read
the full article in The
Spectator (UK), but here's I think a particularly profound
observation:In the modern
world, the availability, indeed ubiquity, of entertainment is the most potent
cause of boredom. It causes boredom because the world cannot ever be as
fast-moving or dramatic as audiovisual entertainment, and for most of the time
interest has to be extracted from the world rather than merely absorbed from it
passively. Hence the more people with vacant minds seek distraction by
entertainment, the more bored they grow; and bored people create chaos in their
lives because intense misery is preferable to ennui. I have long thought that
much social pathology is an attempt to evade boredom by the propagation of
violent crises; and, since television causes boredom, it thereby causes social
pathology.
I recall reading a study done in
South Africa, which had no television broadcasts until the 60's, that the
introduction of TV coincided with a substantial increase in violent crime. This
despite the fact that TV was heavily censored, so it is doubtful that the
particular nature of the programming was to blame. People have of course
speculated as to why television and violent behavior should be correlated, but I
think that Dalrymple has isolated an overlooked factor which seems pretty
compelling to me. Having gone cold turkey myself (when the cable company
finally unplugged the live connection to my apartment which I wasn't paying for)
I can say that it is a lot easier to get bored without the idiot box, especially
when I'm alone. I've even had to resort to (gasp!) reading books, and writing
the occasional blog. There really is something about TV that programs you to
take in, and expect, a huge flux of information at an ever increasing rate.
Like video games which move ever faster as we adapt ourselves to evaluate and
react more quickly, TV (and film) has taken on the MTV style of jerky cameras,
quick cuts, and dizzying edits. Amazingly we accept this and even manage to
process it--a true miracle of the capacity of the human
brain.Then there is real life which so
often hardly moves at all. For an educated person, there are of course
alternatives. Work, which usually is in doors and requires no heavy lifting.
Books or hobbies are others. The educated person has the ability to occupy
themselves with interesting things, but what about the uneducated, or perhaps
more precisely the willfully uneducated? When you know very little, you don't
know what to do with yourself; your world is very small. How many violent
crimes started out because "me and the boys were hanging out with nothing to do
so we decided to ..."? The thrills of crime, particularly violent crime, satisfy
that need to cure boredom. The frustration of boredom must be incendiary. Our
entertainment--TV, video games, popular music, etc.--has conditioned us to
observe at a uselessly fast rate, which might ironically be good for some, like
the work-o-holic, but is disastrous for others. Lacking the ability to
discipline themselves, the uneducated are constantly bored. They either drown
themselves in ever more entertainment or create trouble. It is an interesting
idea, and one that poses many challenges. If true, I don't know what the
solution could be.By the way, if you
are interested in the rest of the article, Dalrymple goes on to discuss how the
British underclass is absorbing much of the worst aspects of Americana (from the
predominantly American TV shows), to the point of using American words instead
of British (e.g. high school), without the corresponding positives of American
culture. He believes that Americans compensate for their boredom by constantly
striving for personal improvement and lets face it, making a buck, whereas the
British, particularly the underclass, are socialist. They look to the
government to provide and don't value individual achievement as much.
Interesting cultural comparison. I wonder how well it might apply to our own
underclass.
Posted at 09:55 PM
Read More
Fri - November 14, 2003
More reader mail!
"Don't you think it's a bit hypocritical to support
a serial molester when you condemn someone who engaged in consensual sexual
activity?"
Response 1: Oh pshaw, I live
in Berkeley; you'll have to try much harder to bait me than that!
:-P.
Response 2: The fact that Clinton
used the intern program like an escort service made him low rent; it was the
perjury that got him impeached. Of course I never liked Clinton and disagreed
with about 9 out of 10 things he did, but you can't impeach someone for that.
You can when they commit perjury. We can't tolerate a president who will
abjectly lie the way Bill Clinton did. For all the cynicism out there, most
presidents don't (and that is true of both parties). I used to think that Nixon
got a bum rap, but after watching Clinton in action I realize they both got what
they deserved. Nixon lied; Clinton lied. Nixon resigned to avoid impeachment;
Clinton was impeached. In the case of the latter, the skirt was incidental.
And by the way, if you are a president in search of a mistress, choose one
commensurate with your stature--an educated, classy woman of independent means,
not some dimwitted, star-struck, chatty twenty-something intern with an IQ of a
hand bag (who now designs hand
bags).
And just a little more on the
accusations against Ahnold. Since almost none of these women will give out
their names, it is a bit hard to take them too seriously. Even if we do take
them at their word, remember this happened at a place of work where people
routinely disrobe and simulate copulation while a crew films it and a guy with a
megaphone yells out instructions on how to it better. This isn't exactly the
executive office at IBM. But seriously, Ahnold probably was an arrogant movie
star who thought he could score with any girl he chose. Does that make him a
great role model? No. Would I have preferred someone else over him? Yes, I
believe I covered this topic. Given the choice between Ahnold and Gray Davis,
who did I choose? Oh please...
Posted at 07:32 PM
Read More
Sat
- November 1, 2003
Chant Baby
A quick posting on a concert I attended with the
wife last night. We saw a choral production of an Arvo Pärt composition.
It was a setting of an Eastern Orthodox prayer that I can't remember the name
of. The performance was at a local Berkeley church. The space was a bit large
for the size of chorus, but there was a large audience so a more intimate venue
probably wouldn't have seated everyone. Esther says she's spoiled by the little
church she usually sings in on Sunday nights. It is a small place with very
good acoustics.
Pärt's setting was
inspired by chants so it features simple, repeated, spare melodies. Unlike
Gregorian chants which are monophonic* (no harmony), Pärt did include
homophony* (one melody with chords). The sound was more modern than traditional
chants which sound a little primitive to me, but still in the spirit. I enjoyed
Pärt, which is unexpected since he's still alive. Most composers who have
yet to assume room temperature seem to be enamored with atonal music which is
just crap to me. Music needs a melody if you ask me, despite what modern
theorists contend. Fortunately, Pärt hasn't been completely corrupted.
Given what he wrote about his composition, I imagine that he is sincere in his
religious beliefs which probably inoculates him against the worst of
modernism.
*OK, so I really didn't know
these terms until the wife explained them to me. I guess I should take her
music appreciation class.
Posted at 11:51 AM
Read More
Dead air
OK, so I haven't been blogging much lately. I've
been busy at working preparing things for a visit to the home office in
beautiful Champaign IL (mmm...corn...). Following that it is off to a biology
conference to play the corporate shill. So, it will be a week of dead air here
at "Will Blog for Food" (I'd be going hungry if it weren't for the expense
account). I'd apologize to my loyal readers if I had any ;-P.
Posted at 11:35 AM
Read More
Fri - October 24, 2003
Clean up your mess
Apparently there is supposed to be a big protest
tomorrow in downtown SF to "bring the troops home". I could say a lot about
this but instead I'll quote an actual Iraqi on the subject (he wasn't a fan of
the war): "You can't just come into a man's house, make a mess, and then just
leave!" Seems to me that this guy is capable of a lot more logic than your
average peace protester; maybe there's reason to hope for Iraq.
Posted at 09:00 PM
Read More
Sun - October 19, 2003
A reader responds...
Hey......haven't read all your recent blog, but far
enough to warn you: DON'T BUY A JETTA AND
BECOME ANOTHER ONE OF THOSE
PSEUDO-EUROPEAN, BIRKENSTOCK WEARING, FRANCE
LOVING, AMERICA HATING
BERKELEY-ITES!
[Name withheld to
protect the"innocent"]
Posted at 04:28 PM
Read More
Sat
- October 18, 2003
How can you stand it?
I was on the phone with our HR director doing my
annual review 6 months late. More about that later. She asked me how I could
stand living where I do (I guess it is pretty obvious I don't mesh well with the
Berkeley set). Here's how I
should
have answered the question: "well I just mostly stay at home cleaning the rifle,
but every now and then I like to check out the local bell towers..."
This reminds me of one of Andrew's
laws: "Life is easier when people think you might be crazy."
Posted at 11:31 AM
Read More
What's this?
This is a category for all the clever things I
should have said or should have done but didn't. You know, the flip remarks,
the stinging comebacks, and all those other ideas that come to you 5 minutes too
late.
Posted at 11:25 AM
Read More
Wed - October 15, 2003
Is we stoopid?
This whole thing with Rush and his drug problem has
brought up something that always irks. From all the usual suspects we're
hearing about how dumb his audience and how Rush fooled them with his shtick.
I'm a Rush fan and I've listened to him on and off for years; I've got a PhD in
astrophysics. Those of you from Rio Linda might be interested to know that they
don't hand those out for being stupid. My wife is working on a PhD at a third
rate institution called the University of California at Berkeley. Yep, she
enjoys Rush too. Ditto for my mother in law--PhD in English (!). My dad was
the one who introduced me to Rush. I'm not sure if he's still a listener, and
he didn't agree all that much with Limbaugh, but he still enjoyed the show.
He's a retired professor of greek history. Detecting a pattern
here?
But here's the broader point:
why is it that liberals believe that conservatives are all dimwits? This goes
beyond the common feeling that people who disagree with us are stupid. Normal
people realize this is just emotions talking. We all know someone who doesn't
share our political views who we still recognize as intelligent, maybe even more
intelligent than ourselves. Still, I think that liberals really believe they
are smarter. And, I think that this belief is really a defense mechanism. If
liberals thought that conservatives were their equals in intelligence, then they
would be compelled to address conservative arguments foursquarely. They would
have to prove their ideas with reason and evidence, which is really a losing
proposition. Liberalism is fueled by imagination. It isn't about they way
things are but the way things ought to be (my apologies Rush), looking at the
world that might be and asking "why not?". Putting that vision to the test here
in this world isn't likely to produce satisfactory results; utopia is elsewhere.
Better to believe that conservatives are dumb than to address them
seriously--that just drags you back into the unpleasant reality.
Posted at 10:12 PM
Read More
Sat
- October 11, 2003
Lookin' for a new ride
Spent the afternoon test driving some vehicles.
I've managed to cobble together enough money to buy a new car, which I suspect
won't happen again for quite a while, so I figure it is now or never, and the
old Neon is well, old.
The first car
that we looked at was the Honda Element. I wasn't even thinking of this one,
but the wife kind of likes it, so I figured why not. The element is what I like
to call a PSUV for pseudo sport utility vehicle. It's built on a car frame and
has a car engine(4 cylinders; 160 horse power), so it is basically a tall car,
not a truck like a true SUV. That's fine by me because I actually like the
concept of a tall car. It just feels really roomy and you sit somewhat higher
up but don't feel like you are driving a sky scraper. The Element also dives
like a car, so you don't feel like you're piloting a yacht. The 160 hp engine
is whisper quiet and produces a reasonable amount of power--even accelerating
on to the freeway. It felt adequate if not racy, even at 65 pushing the
accelerator got the Element to pick up acceptably. The one test I didn't get a
chance to try was uphill on the freeway. I'm guessing the element will have a
hard time holding 65 going over the Oakland hills, but I'd pleasantly surprised
if I were wrong.
The interior of the
Element is conspicuously utilitarian. The seats are made of a sort of
rubberized cloth, the floor is rubber, everything else is plastic. This isn't a
luxury car. Practically speaking, you can clean the interior by spraying it
down with a hose. This is a car that in which you are supposed to be able to
make a mess. The marketing brochure shows a lot of college kids driving this
car to the mountains to snowboard or to the beach for camping. As if some 22
year old college kid is going to have 20 grand for a new car--have they seen
tuition rates lately. I think it is kind of cool and it would also be great for
kids. They'll have to work overtime to make a mess that will stick on this
thing. All and all, I liked this car more than expected
to.
Next up was the Nissan Altima. I
have been looking at different cars on the web and this is the car that I was
leaning towards. By the numbers it is a good car. It is a bit roomier than the
car I have now and a lot peppier with a 175 hp, 4 cylinder engine. The engine
was a bit noisier than the Honda, which might be a trade off for the extra
power. It definitely had nice pick up though. The steering annoyed me a little
because it had a lot of power assist. One thing Chrysler always got right was
not over boosting the steering--it gives you a better feel for the road.
Still, I could get used to that. Unfortunately, I really didn't like this car,
not so much for the driving, but for the styling. Up close, the car didn't look
all that good on the outside, and much worse on the inside. It just looked
cheap. The dash just had a chintzy look and feel I didn't like. Worse, it was
made of that squishy foam I hate. When I was a kid, that kind of foam dash
would invariably dry up and crack. Though I doubt that would be a problem
today--better foams and we have garage parking--I have bad associations. Esther
didn't like the automatic shifter because it had sort of funny shaped set of
notches that didn't work like most automatics. I really wanted to like this
car, but it is just too ugly on the inside.
After the Nissan was supposed to be
the VW Jetta, but we waited around the dealership for 15 minutes and no salesman
came up to talk to use. The few cars they had in the showroom were heavily
marked up (1000's even above the sticker price!) special edition cars. I really
don't think I'll buy a Jetta anyway--too small for the price, and I definitely
won't buy one from this dealership. We left without driving anything.
Finally we stopped by the Saturn
dealership. I can see why they win so many customer satisfaction awards. The
minute we walked in a sales women greeted us in a very polite and helpful
manner. There was none of the smarmy, car sales, kind of vibe you usually get.
Great service; too bad her product sucks. I test drove the new ION. These had
caught my eye when the just came out and looked kind of cool in the adds. The
ION is significantly cheaper than the other cars that we looked at and that is
why I wanted to give it a chance. The exterior was so-so up close, but the
interior was a definite improvement over the Nissan. One oddity was the center
mounted gauges (they do this to make it cheaper to build a right driver). It
didn't bother me as much as I might have thought, and my eyes easily gravitated
to the gauges.
Once on the road, the
car seriously underwhelmed. The 140 hp, 4 cylinder engine felt positively
gutless. It was slow to accelerate to freeway speed and I had to floor it to
get it to accelerate once at 65. The engine noise was much louder than other
cars I test dove--very buzzy and nearly as loud as my five year old Neon. Also
there was something faintly rattling in the dash. This car just didn't seem put
together well. Another problem, was the funny smell. The sales woman said that
that was a little paint burning off the exhaust manifold. The car we were
testing had literally one mile on it before we took it out, so I guess there's
no reason not to believe that. Still, it isn't something you want to smell when
you are test driving a car. There wasn't a chance I was going to like this
anemic vehicle anyhow, but that stink would have killed any sale. Note to sales
staff: go put 50 miles on a tester before you let the customer drive it and then
you won't have these problems. You might sell some more cars that way, if they
didn't suck, that is!
Right now me and
the Mrs. are leaning toward the Element. I'd like to try out a Camry, even
though they look kind of boring to me, and maybe another car or two. We're not
going to buy right away anyhow, at least not until Ahnold cuts the car tax.
Like hell if I'm giving California triple what I have to; they tax me enough
already, but at least that means I'm "rich" right. Sorry, I guess that belongs
in the politics section--my bad ;-P.
Posted at 10:28 PM
Read More
Wed - October 8, 2003
We interrupt this blog...
For some
gloating!
Na, na, na,
na, Na, na, na,
na, Hey, hey,
Gray, Goodbye!
Just
had to do that.
Posted at 06:06 PM
Read More
Tue - October 7, 2003
Terminated
All the news agencies are officially calling the
recall passed and predicting Ahnold the winner. Unless there's some sort of
miracle, you can put a fork in Grayout, because he's done. With 12% of the
votes counted, 56% of voters have come out in favor of the recall and 54% for
Ahnold. I don't know how that will hold up state wide, but I for one am really
surprised. If the terminator can win an outright majority of votes, he will
definitely be in the drivers seat when he takes up residence in Sacramento.
Let's just hope he doesn't take too many left turns. I figured the recall was
in good shape when early exit polling showed Ahnold with a 54% favorability
rating to Davis paltry 20 something. Even Bustamante couldn't pull more than
the mid 30's in favorability.
Switching to the proposition front, it
looks like prop 54, the racial privacy initiative will go down in flames. I
guess I'm not surprised because I think most people hadn't heard much about this
one, or only heard negative things. I don't see it as a huge loss, because it
wasn't likely to have the substantial effect that 209, which ended state
sponsored affirmative action, did. I don't like losing this one, but it there
wasn't a lot on the line.
On a brighter
note, prop 69 looks like it is well on the way to passing. Given the strong
support for the recall I guess it isn't all that surprising that a ballot
initiative that would require the current governor's head to be repeatedly
dunked in a flushing toilet by a burly movie star until he "cries like a woman"
would pass by a substantial margin. Unfortunately it seems likely that this
initiative will be overturned by the infamous 9th circuit on constitutional
grounds. Lawyers claim that the particular language "cries like a woman" is
discriminatory. The challenge came too late for supporters to change the
offending phrase on the ballot to "cries like a cowardly, week willed person of
any gender, race or creed", so we may not be treated to a Gray Davis swirly
after all. Once again the it appears that tyrannical courts will thwart the
democratic will of the people.
Posted at 09:24 PM
Read More
Sat
- October 4, 2003
The Mythical Man-Month
Here's a question: why would anyone bother reading a
book about software development written in 1975? If that book is
The Mythical Man-Month
by Frederick Brooks, then it is because it is
filled with important insights about developing software products--particularly
about managing the people that make software products--that transcend the vast
technological changes that have occurred since the Age of Disco. To understand
that, it is worth considering the meaning of the title; what is a man-month and
what is so mythical about it?
A
man-month is nothing more than a measure of productivity. If one man can make
1000 widgets in a month then 10 men working 2 months can make 20000. Perfectly
sensible, right? Wrong! What Brooks observed from his own experience managing
large software projects for IBM is that this simple linear relationship is
completely fallacious; increasing the number of programmers working on a
project may only speed it up a little, none at all, or even slow it down. He
went so far as to coin Brooks' Law: adding people to a late software project
makes it later! A paradox? Yes, but there are a number reasons why this is so.
Some are linear effects: new people need to be trained and acculturated to the
project which means that those currently working must stop what they are doing
and take the time to train the new people. The work itself has to be
repartitioned since what one man used to be working on entirely by himself must
now be broken down into pieces for the new people. It isn't always trivial to
figure out how to break up what you thought of as one thing into many. Finally,
and probably most damaging to productivity, is the potentially geometric
increase in the amount of communication needed to run the project. Without
careful organization, each added person will potentially need to communicate
with everyone currently working on the project. Doubling the number of people
can as much as quadruple the amount of communication, leading to a serious drag
on productivity. Now we see how The
Mythical Man-Month stays relevant. This is
really a book about managing people and not about tips and tricks for building a
better mainframe operating system. Technology changes, but people stay the
same.
The Mythical Man-Month
is really more a collection of essays than a
book, though the themes running through the essays tie them together coherently.
The opening chapter, "The Tar Pit", points out something that all experienced
programmers know, but sometimes choose to forget: there is a big difference
between a program, a programming product, and programming systems product. A
program is simply a piece of software that does a job. Any decent coder can
usually bang out a program in short order. A programming product is far more
complicated because it is a program packaged and tested so that anyone can use
it reliably without having the advantage of the author's detailed knowledge of
the code and its genesis. Brooks estimates that it takes three times the effort
to make a programming product as it does to simply write a program (I think that
may be an underestimate). The cynic might blame this on one of Murphy's
corollaries: "Nothing is foolproof because fools are so ingenious", but even if
we are more generous about the abilities of our users, it still does take a lot
of work to explain code to someone who didn't have to go through the process of
writing. Most complicated of all is the programming systems product which is
an integrated system of programming products. This integration--getting many
pieces of software to work together without stepping on each other's toes--costs
another factor of three in Brooks' estimation for a total factor of nine in time
to create a system over a simple collection of programs.
In chapter 2 we are formally
introduced to the mythical man-month that I discussed in introducing Brooks'
book. In chapter 3 Brooks introduces one of the components that he believes can
restore some of the productivity lost in the complexity of developing a large
system--the surgical team. Brooks chooses the analogy of the surgical team
because he believes that it must do in its own way what a software team must do,
coherently complete a single complex task. The surgical team consists of the
head surgeon, an assistant, and a support staff of nurses and technicians. The
head surgeon is responsible for making the life-and-death decisions and for
doing most of the actual operating. The assistant surgeon is there to assist,
observe, provide advice, and generally act as a sounding board for the head.
The others on the staff perform necessary support activities which allow the
surgeon to concentrate on the cutting. It seems apt to apply this organization
to the development of a programming product because, like a surgery, a
programming product must be a single coherent unit (if it is to be easily used
by others). That kind of coherence is rarely achieved by more than a single
mind. With an analogous structure of a lead programmer, a less experienced
assistant programmer, and technical assistants (like test engineers and project
managers), a manager can focus an experienced mind on the task of creating a
single product maximizing the efficiency of its
creation.
The surgical team is a good
model for creating a single programming product, but what about a programming
system? Market pressures demand that even large systems be completed as soon as
possible, so it isn't reasonable to have a single team--really a single
person--develop it in its entirety. In chapter 4 Brooks' addresses this problem
by proposing an aristocratic model of development. The goal for the system is
for it achieve the same conceptual integrity of the system as for the individual
programs. He asserts that here again a single mind is needed--the system
architect. The architect's job isn't to write code, but to conceptualize the
system, to see its component parts, and to devise how they ought to work
together. His job is very similar to that of the building architect, who
doesn't take it upon himself to implement the plumbing structure or the elevator
system, but instead visualizes the form and function of the building, how it
will fulfill its requirements for its occupants and how it will fit in its
environment. The system architect then delegates the responsibility of
implementing the concept to the surgical teams who build the components to fit
the vision. The goal of achieving conceptual integrity is (one hopes) achieved
by the architect. An ancillary benefit is a reduction in communication needs
because most communication now flows up to the architect and less so between the
development teams.
Chapter 5 is an
interesting digression about the second system effect. It is really a word of
caution to architects to not give in to the impulse to add all the features and
new concepts to the second system that time pressures, budgetary constraints, or
technological limitations precluded in the first version. The second system (or
version 2.0) is so dangerous for several reasons. First systems are build under
the pressure of time and uncertainty. Since success can't be guaranteed, one
must try to build something as efficiently as possible. Second systems are
built on success (for who would build a second if the first was a failure?). It
is easy to see the second system as an opportunity to add the features that one
wanted in the first but didn't have the time for. It is also seen as an
opportunity to implement bold, new ideas precluded by the conservatism of the
original project. As Brooks observes, all too often the result is either what
we today would call "bloatware"--software bloated with features to the point
that it looses its coherency, or just plain failure as the second system
development drags ever onward as more features are added and the bugs and flaws
are worked out of the radical new approaches. Architects
beware.
Chapters 6 through 10 are about
communication during and documentation of projects (not to be confused with
documenting the software). I didn't take a lot away from these chapters, as I
think that the advent of email, web pages, and shrink wrap database software
(like Lotus Notes or FileMaker) have really changed the landscape. Actually, I
don't think that these technologies have been harnessed anywhere to their full
extent, perhaps with the exception of email. Email is critical to me and
critical to my ability to track multiple projects simultaneously. Since Brooks
couldn't reasonably be expected to anticipate these technologies (even basic
text editing using a computer was novel when he was writing), it is unsurprising
that he doesn't say much that is really helpful in harnessing the power of the
internet.
Chapter 11 is provocatively
titled "Plan to Throw One Away". Brooks' point is that one usually makes so
many mistakes and learns so much from the first system one builds, that it is
usually better to throw it out and build it again a second time, if you really
want to get it right. This might seem like a paradox if you recall the second
system effect, but that is referring to something different. The "one" we
should plan to throw away is part of building the first system; it is the zeroth
system that never sees the light of day. My own experience is that one ought to
build a system once to make it work and then again to build it right. The
zeroth system gets written just to work without worrying about optimizing
anything. It will reveal the flaws and oversights in your fundamental design
and also point to the optimizations that truly matter versus those that might be
esthetically nice but not of high impact on the code performance. This zeroth
system is really just a program or a program system, but not a true product.
The reason it usually gets thrown out is because the cost of turning it into a
true product is higher than starting over and doing things cleanly. In latter
chapters added after the publication of the original book, Brooks takes this
concept further along and suggests an incremental model for software building.
I will comment on that later.
In
chapter 12, "Sharp Tools", Brooks talks about the software tools which are most
valuable in enhancing programmer productivity. These days, every programmer has
these tools and then some, so there isn't a lot to be gleaned from this text.
Chapter 13's discussion of reducing bugs in software again mostly involves tools
and techniques that all programmers use today. One novel suggestion is to "use
lots of scaffolding", where Brooks is foreshadowing the idea of incremental
development. By scaffolding, he means code that ultimately will not be part of
the system, but is used temporarily to hold it together until the real code can
be added. It allows one to have a working system before all the parts are
working. Chapter 14 is a warning about how projects end up late. His key point
is that projects fail one day at a time, meaning that it is the incremental
addition of many small delays that causes a project to go over time and budget
and not a single large failure. This is why many failures to meet deadlines are
such a surprise--there is no obvious culprit. It is important then for managers
to closely monitor projects and compensate for the small delays less they
combine into a catastrophic failure. Perhaps as a corollary, I have to say that
if your gut tells you something is wrong, then something
is
wrong. Chapter 15 addresses the need to
comment software. His point is that the software itself should contain all that
is needed for any person to understand how it works. Along with some very sane
suggestions, Brooks suggests some levels of documentation which are absurd, as
is revealed in a piece of code which is clearly overly complemented (he tries
to shoehorn flow charts into the comments; it isn't pretty). At the time Brooks
was writing, flow charts were still very much in vogue which is part of his over
commenting problem. Also, Brooks makes the mistake of not allowing the code to
speak for itself, meaning if one can reasonably figure out what is going on by
reading the code, a comment isn't necessary (emphasis on the word
reasonably).
Chapter 16, "No Silver
Bullet" concluded the original text. In it Brooks boldly, and correctly,
predicted that no single technique then available or likely to arise in the next
ten years (now going on 25) would increase software productivity by an order of
magnitude. Only smaller, incremental improvements were likely, though together
they may all add up to a major productivity boost, but none on its own would be
a silver bullet. Why is this so? Brooks divides the problems of developing
software into those that are accidental and those that are essential. The
former are artificial impediments that make it difficult to convert one's
concept of what a program should do into the actual code and machine
instructions. An example of this type in modern C coding is memory management.
C programmers must manually allocate and deallocate memory and very often forget
to do one or the other correctly. As a result they often waste time chasing
bugs like memory leaks (forgetting to deallocate memory that is no longer
needed) and access errors (forgetting to allocate enough memory to store what is
needed). Java corrects some of this by doing garbage collection, which
automatically disposes of memory that is no longer needed. By partially
removing the accidental impediment of memory management, Java makes it slightly
easier to turn ideas into code and thus generates an incremental productivity
improvement. The problem is, that even in 1975 most of the truly horrific
accidental roadblocks to software development had been removed. Improvements
were and are still to be had, but they were and are of the incremental
variety.
So what is it that holds back
the productivity of software developers; what are the
essential
difficulties? These are conceptual. What really takes most of a developer's
time isn't writing and debugging code, it is figuring out conceptually what must
be done. Turning the ideas into code usually goes fairly quickly. Most of the
problems are in the ideas. First one must figure out what the program is
supposed to do. Once it is coded, testing usually reveals many flaws in the
design. Assumptions hidden and explicit turn out to be violated. When added to
the entire system, new flaws in the program's interoperability with other
components is revealed. Programmers spend much of their time thinking, not
coding, and that is why there isn't a silver bullet. There really isn't a short
cut to thinking--not thinking isn't a solution, though often tried--even if one
could tell the computer what to do in plain English. After all, people
understand plain English and it is still very difficult and time consuming to
figure out how to get them to do useful things and to work together effectively
(which is why there are so many managers and not very many good ones).
There is hope for improving
productivity however, mostly from code reuse. There is in principle no reason
why a program written once can't be used many times. There are practical
reasons why this doesn't happen as much as it should, mostly stemming from the
factor of three needed to turn a program into a programming product that is
reusable. Still since the 70's there have been some examples of code reuse that
have worked spectacularly. The best examples are in user interface libraries
like those provided by Microsoft, Apple, and Sun. For Windows, Mac, or Java,
there are very substantial libraries of code useful for building user interface
elements. With a trivial amount of coding one can easily build complicated
windows with buttons, text fields, check boxes and many other elements. One can
do this because there is a large reusable code base provided by the companies
for building user interfaces for their systems. There are many issues one no
longer has to think about because they are solved and packaged for you by these
software vendors. Still, the problem isn't completely solved. Although it is
easy to make a dialog with a button, the programmer must still decide what that
button will do, but at least he doesn't have to start by figuring out what a
button should be. Unfortunately, reusable code is more often the exception than
the norm and many programmers reinvent the wheel daily. Reusable code isn't
really a silver bullet, though as the reusable codebase grows so does
productivity.
The final chapters of my
copy of The Mythical Man Month
include several essays assessing the impact
and relevance of the book over a 20 year period following its publication. It
is the opinion of the author that it has held up surprisingly well. I think
that there is one really useful idea included here that wasn't in the original
text, though it was foreshadowed: the concept of incremental development. The
traditional model of software development is the waterfall method where first
one designs, then one implements, then one tests, and finally one ships the
release version. It is called the waterfall model because there is supposed to
be no turning back, but it is a terrible model for building software. In real
life, the implementation and testing reveal flaws in the fundamental design.
Changes in that design then cascade back down to the implementation which
changes the testing.
A better model
is the incremental approach. Brooks suggests that one should build a "working"
system as soon as possible and then build incrementally up from it. By working,
that doesn't mean that all or really any of the functionality works. Working
can mean nothing more than that there is a main loop that calls the planed
functions which to begin with may do nothing at all. Once one has a main loop,
one can then start plugging in the implementations as they become available and
testing them right away in context. As features are added and bugs revealed,
one can make adjustments not only to the modules but to the main loop. The
advantage is that one always has a piece of software that works. Even if it
becomes clear that you are painting yourself into a corner and that a radical
change is needed (often it is the case in optimization that one can't find the
best solution if one only takes baby steps), you still always have a working
system. One always has the best approximation to the final product sitting in
front of them with the best view of where it is going and how it will work. One
gets constant feedback instead of only getting at the end when so much effort
has been invested. The incremental approach is perhaps a solution to the "plan
to throw one away" problem. Instead of building one to throw away, one throws
away bits and pieces at a time. At the end one may really have thrown out a
whole version, but it will have been a lot less painful and jarring than doing
it all at once. An ancillary advantage to the incremental approach is that it
gives one scheduling flexibility. After a point, one has a credible product.
One doesn't end up in the position of completely missing a deadline, but instead
gets to make trade off decisions. If economics demand selling the product now,
at least you have one, even if it isn't perfect. That's better than being out
of business, and out of work.
In the
end, The Mythical
Man-Month is an enduring book. It was written
by a very observant and practical man. It endures because it isn't so much
about computers as about people. Brooks appreciates that making software is
about harnessing creativity. While technology changes, people don't, so the
techniques that help them be creative last. Even 25 years later (hardly any
time at all in comparison to human history) it is as relevant as ever. I got a
lot out of this book as I think anyone who needs to manage their own creativity
and that of others would as well.
Posted at 11:42 AM
Read More
Thu - October 2, 2003
Late hit
I haven't read the LA Times story detailing Ahnolds
preferred methods for picking up chicks, so I'm just not going to bother
commenting directly on the allegations. But here's what I want to know: Ahnold
has been campaigning for governor for months, and the allegations go back many
years, so why is this story coming out now? Let's just say it doesn't take
Sherlock Holmes to solve this mystery. I think that I can say with near
certainty that one of two things is true. Either the Times had this story for
months and withheld its release to do maximum damage, or the Democratic party
had the story and coordinated with the Times to ensure that the Times couldn't
run it until it could to maximum damage. It is the late hit strategy, and it
has been repeatedly put to good effect (see George W. Bush and DWI, a very near
miss).
How can I be so sure this is a
late hit? That's easy. First, everyone has been predicting it, and because Bob
Molhulland is an expert in its use. Second, I think that if Ahnolds accusers
were for real, they would have been telling there story to anyone who would
listen from day one. Wouldn't you? If you or your wife or whatever were groped
by Ahnold and then you saw him on TV running for governor, wouldn't you be on
the phone in like 5 minutes. This would be your one and only chance to get any
real payback. It isn't like you are going to beat Ahnold up, and he has enough
money and lawyers to make any lawsuit on your part a futile effort. Money and
fame are mighty shields. One of the few times that a nobody can really nail a
powerful person is when said person is running for office. On the campaign
trail, they can't do anything really nasty against you because it would look
bad, and there's a built in audience who will take you seriously (called members
of the opposing party). I think it is a given then that under normal
circumstances these kinds of allegations would have surfaced quite quickly. Why
didn't they? Like I said before, either the Times or the Democratic party
controlled the story. In verison a, the Times actually had all the ingredients
for the story for some but withholds it until the end of the campaign when
Ahnold won't have enough time to respond. Their motivation is simply partisan:
the editors are liberal and they want to damage Republicans whenever possible.
In version b, the Democratic party packages the story, lining up accusers
willing to play the game, and then only releases it at a strategic moment. Here
the motivations are the same, but they get a little cover. The paper can
truthfully claim that they reported the story when the facts became known, but
it isn't like they weren't in on the game. In either case, the Times has
reduced itself to being nothing more than the Democratic party's
whore.
Generally speaking, I am truly
galled by the degree to which the media allows itself to knowingly be
manipulated by the political class (of either party I might add) without
revealing it to the consumer. The late hit is a perfect example. There's also
the case of leaks. Some leaks come from the administration, some from those
opposed to it. Whatever the source, the information is leaked for a political
purpose. Why is it that when we hear about information from anonymous sources
we never get any sort of disclaimer about what their motive is, or at least
suspected to be. Why isn't it made clear that leaked information is intended to
manipulate some process, to promote a particular agenda, or just to score
points. Then there's the Clintons. Their operatives were so brazen that they
even admitted controlling the release of negative stories to coincide with
Friday evenings so that by Monday morning they could call it all old news.
Reporters say that if it is news, they have to report it regardless of the
motivations of the source. Fine, but we deserve to know why it is we are
getting this information and why we are getting at a particular time. If the
press or the TV news thinks that someone is playing games, they ought to say so
outright. Back to Ahnold. If the Times did receive a packaged story from the
Democrats, I can understand why they still ran it even though they know that the
timing of its release is brazenly partisan. Why can't they just say so? Don't
we readers have the right to know that the timing of this story was coordinated
for political advantage. What I can't abide is that they didn't give us the
inside story. If the story was a gift from the Democrats, it should have
featured prominently in the reporting. They should have clearly said, important
details of this story were only recently revealed to us by sources closely
associated with the Democratic party and we (the Times, that is) believe that
the timing of the release of this information is not incidental. They didn't of
course. We all know that the media has now become even less trusted than
purveyors of used cars. Maybe so few people trust the media because they know
that this is the kind of information it is hiding from us.
Posted at 06:15 PM
Read More
What's up with Rush?!?
Total Recall
That Modern Music
Harry Potter and the Order of the Phoenix
About the Bookshelf
Mixing religion and politics
Andrew joins the blogosphere
|
Calendar
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat
|
Categories
Archives
XML/RSS Feed
Statistics
Total entries in this blog:
Published On: Nov 22, 2003 06:24 PM
|