[hand with pencil]
Stuff For Sale
2004 Summer Tour
Class Stuff
Email Me
In The Press
Veggie Van Gogh

© 2002,

[this is simply a banner and menu bar]

Please patronize sponsors of this page!

Bytesmiths no longer is involved in software consulting. Maintenance of this web site is currently subsidised by unrelated business activities. Please pass the word to other interested folks, so I can continue to host this page!
Your site could be listed here, for as little as $12 per month! Go to Bytesmiths Press for details.

This site has been selected by PC Webopaedia as one of the best on this topic!
This site has been awarded a Links2Go Key Resource Award in the Smalltalk category!

Originally published in The Smalltalk Report, January 1997.

Architects Versus Coders

by Jan Steinman

"But Andrea, can't we get another eight women together and ship this baby in a month?" Aaron Blake sighed into the telephone. "I'm going crazy out here!" Aaron was the project leader of a new Smalltalk project at MegaCorp. He had pulled off successful Smalltalk projects before, but this time things were beyond his control.

"I'm sorry," MegaCorp MIS Director Andrea Saunders told him over the phone, "but my hands are tied." Andrea was going through a difficult RH factor pregnancy, and had to spend most of her days in bed. "Believe me, I'd rather be there with you guys right now -- I'm going crazy too, from the boredom!"

Andrea had carefully nurtured Aaron's experiments in Smalltalk, providing him with good training for his team, bringing in outside experts, and buying the best tools they could find. This paid off handsomely on one pilot project, in which Aaron's team bettered MegaCorp's typical delivery resource by an order of magnitude, while completing the project in a third of the time with less than the average number of problems. As that project wound down, Andrea "loaned" Aaron to another Smalltalk pilot project in a different department, which then achieved similar results.

Then two unlucky events coincided: Aaron was given a bigger, mission critical task to do, and Andrea went on medical leave.

Is there a chief architect in the house?

Andrea's temporary replacement was Grey Thompson, a very senior staff member who fondly recalled the "good old days" when men were men and computers stored bits in tiny torroids of ceramic iron. His favorite language was assembler, but only when it wasn't practical to build a custom micro controller to do the job.

Grey scorned management as art or science, believing instead that the role of a temporary MIS Director was to drive the technology forward into uncharted territory, no matter what the cost. This, of course, required constant vigilance over the unruly staff, lest they decide that there was more to life and software development than following orders while keeping their eyes on the tube and their fingers on the keys.

Grey regarded object orientation as a passing fad somewhere along the path between assembly code and autonomous expert systems. To avoid being distracted by such voguery, Grey carefully avoided learning much of anything about OO. "Smalltalk is just another programming language -- if this doesn't work out, we'll re implement in assembler," he announced at his first staff meeting after Andrea's departure. "The language doesn't matter if the architecture is right."

His new role gave him greater authority than he had ever been able to muster. As a hard core "tekkie," he lacked the people skills needed in management, and had enjoyed little influence since his first few projects, when his keen understanding of hardware had enabled him to do wonderful things in assembler.

But now he could simply order people to do things, and make their lives miserable if they argued with him.

"The most important thing is architecture. Everything must be driven by architecture, or thrown out," Grey told the staff. This sounded like music to Aaron's ears at first, since he had witnessed too many kludges grafted onto hacks on the sides of patches in his day.

But it quickly became apparent that what Grey meant by "architecture" also included minutia like the names of specific classes and methods, the layout of storage, and even the use of specific language facilities.

Morale crasher 1

"What do you mean, 'we can't use blocks?'" Aaron snapped at "Trigger" Larsen over the cubicle wall.

"Grey said blocks will be difficult to deal with if we port to some other language," Trigger replied. You know he insists that Smalltalk is merely an implementation vehicle for all his "great" ideas. (Trigger drawled out the "great" while rolling his eyes -- he was not known in MegaCorp for his tact or political savvy.) "I overheard him boasting to Linus in accounting that if our Smalltalk vendor goes out of business, he'll be back on track with a different language in under two months!"

"Fat chance," Aaron replied. "Doesn't he realize that the only reason we're as far along as we are is because we were able to re use the infrastructure Jake built for the CIMPR project last May?"

"Hey, just see how much of CIMPR we can use without blocks!" Trigger laughed cynically, "We'll spend twice as much time getting rid of blocks in our current code as we've spent to write it."

"Does he even realize that blocks are a core part of Smalltalk, that exception handling and even Dictionary access won't work without them? Are we going to re write the base image to avoid blocks?" Aaron tried not to get upset at management decisions, but this was going too far.

"You kidding? He doesn't know a block from his head," Trigger continued, "come to think of it, I'm not sure I do either, but he went to some conference and some academic told him that his Smalltalk code would never port to C++ or Java if he used blocks."

"So, I suppose we need to 'dumb down' to the least capable language we might ever consider using," Aaron sighed. "Guess it's time to get out the old abacus and start programming."

Morale crasher 2

Denny Hicks was not fond of confrontation. In fact, the very idea made him feel a bit ill -- especially when the confrontation was with someone who could have him fired. His shoulders slumped as he stared at the conference room table.

"I don't see the Wopr class in your diagram," Grey Thompson accused, "a vital part of the architecture is the w ord, o peration, p rogram counter, and r esult object, but you saw fit to leave it out! Do I have to do everything around here myself?"

"Well, well, you s-s-see," Denny stammered, "I thought the architecture was meant as an abstraction, and that I should re-use whatever I could, and besides, Wopr as defined in the architecture is just a data holder, so I encapsulated that information together with contextual behavior, and..."

"'You thought?' We don't pay you to think!" Grey cut him off, "the abstractionists have done all the thinking here! I want you to schedule a new design review, and Wopr better be back in if you want that review to go any better than this one!"

Morale crasher 3

"So exactly where is the cache we specified?" Grey glowered at Aaron.

Aaron had to think fast. He mused to himself, "How would I describe the abstract re-use of cadence and melody in a Bach fugue to a cave man?"

But unlike Trigger, Aaron had taken Office Politics 101. "The cache is a hidden implementation detail," he began, "and we have nailed down the external protocol of the encapsulating object, which is all we need to get things started. The type of cache, the cache coherence policy, and even the number of caches and their locations are decisions that can be deferred until we know more about the problem."

Back in politically correct mode, he reserved to himself the thought, "Not to mention whether we need a cache at all in this particular spot, you oaf!"

"Aaron, you agreed that architecture was important," Grey said, speaking as though Aaron were a impudent child, "Please save yourself a lot of trouble and put the cache back in. You'll thank me later."

Morale crasher 4

"The Nack class is supposed to have three variables, but it has none. Was there something you did not understand, Trigger?" Grey asked with skepticism.

Trigger retorted, "Well, I don't even think it should be a class, let alone one with instance varibles, so I made it a subclass of False just so that the name will match your silly diagram. That way, it has a hope of actually working."

It started at Grey's neck. It rapidly progressed up through his ears and face, and soon all his visible skin was bright red. But he knew Trigger was baiting him, and he didn't go off like the firecracker exploding inside his head. Through clenched teeth, he told Trigger, "If you humor me with the silly class to match the silly diagram, then put the silly variables in there as well."


It's been about six weeks since we visited Aaron and heard about how much he missed his old boss, Andrea. He gave Barbara a call the other day.

"So, do you guys know anyone hiring experienced Smalltalk project leaders?" he asked.

"Aaron, you know we can't talk about this while you're working for a client of ours," Barbara replied, "So what's going on? Maybe we can help make it more bearable."

"Well, not today. I've got to go rename a bunch of classes, get rid of some blocks, sprinkle a few useless caches and variables around, and update my resume," Aaron said dejectedly.

"Gee, try not to sound so cheerful!" Barbara replied, "How 'bout we drop by next week? We might not be able to help, but sympathy goes a long way!"

To be continued...

Go to the previous column in the series, or the next column in the series.
Go to our review of ENVY/QA published in the next issue of The Smalltalk Report.

160 Sharp Road, Salt Spring Island, British Columbia, V8K 2P6, Canada