Jim's Software Engineering Journal

Thursday, July 23, 2009

Vellenga's Law Of Project Redefinition

Back in the 1980’s I worked at GTE Laboratories in Waltham, MA. This was a research arm of GTE (originally, of course, General Telephone & Electronics), which funded long-term projects at the Laboratories on a yearly basis to benefit the other divisions.

It was a very cool place to work, with a lot of extremely knowledgeable engineers. It was like being in an academic environment for an industrial salary. And the prospect of working consistently on one project for an extended period of time was exciting!

But within a couple of years I noticed that projects frequently got either canceled or significantly modified. Often this happened at yearly review time, when representatives of the other divisions assembled in Waltham to see how things were going. But it could also happen because of changes in the marketplace — for example, because some EDA (Electronic Design Automation) tools had become commercially available, and they already did what we were designing our new tool to do. The regularity with which this happened led me to formulate

Vellenga’s Law of Project Redefinition

The mean time between major changes to the definition of a project is less than or equal to the period of the funding cycle.

This “law” has turned out to hold in non-research environments as well — at least in the world of software development.

In a public corporation, for example, the funding cycle is quarterly, because that’s how often management has to report results to the stockholders (and to their own board of directors). Most releases of new functionality and/or performance in such companies are planned to take between six months and a year and a half, which is, of course, significantly longer than three months. But then a large customer weighs in with a special request, or the competition releases a new feature that we just have to match as soon as possible, or management designs a new licensing strategy, or whatever — or our software project just isn’t earning the kind of margins that the company wants, and our team gets reassigned. So as a developer, yes, I constantly need to be able to change my plans and my schedule at a frequency of every three months of so.

(I remember a time when we had the next release ready to go after nine months of development, including sign-off from Product Validation, and marketing announced that we’d have to change the licensing model — and release number — before sending the software out the door. That was a delay, though, of only about two weeks.)

Start-ups, in fact, have two funding cycles. The longer cycle, which prevails in the beginning, depends on what period — a year, a year and a half — your angel funds you for. But once you begin working with a real customer, you can wind up adapting your plans on an almost weekly basis. Been there, done that!

So if you want to guess how long you’ve got to work on the project without having the requirements change out from under you, look at the funding cycle. And design your software now so that you can adapt to change in the future!

Thursday, July 9, 2009

Introduction to Distributed Computing

The YouTube video “Cluster Computing and MapReduce Lecture 1” from Google is a good first introduction to the problems of distributed computing. While you do need to have a basic understanding of at least one programming language, Aaron Kimball is an unusually clear teacher.

In this talk, Kimball covers

  • the need for mutually exclusive access to shared resources (variables, in this case),

  • the need for synchronization so that access to shared resources occurs in the right order,

  • how different processes, working on a common problem, communicate with each other using pipes and sockets, and

  • what IP (Internet Protocol) and TCP (Transmission Control Protocol) are, and why we need them when computers communicate across the internet.
  • Friday, July 3, 2009

    Robo-Doc — well, not really!

    I was intrigued by this morning’s Boston Globe article on “Robo-Doc.” It’s not actually a robot doctor, but a unit that a doctor working remotely can drive around the hospital and into a patient’s room to view the patient, talk with the patient, check the patient’s vitals, and so on. The units, named RP-7 and RP-7i (for remote presence) are manufactured by InTouch Health.

    Although “Robo-Doc” is a bit of a misnomer, evidently the unit does have some sensors and intelligence to keep it from bumping into things. The RP-7 and RP-7i have also been cleared by the FDA for connection to Class II medical devices such as electronic stethoscopes, otoscopes, and ultrasound — although an assistant has to be there to put the stethoscope on the patient’s chest.

    A doctor at Lahey Clinic in Beverly has already been using the unit to consult remotely both in Beverly Hospital and at a hospital in Bermuda. The “robot” doesn’t obviate the need for the care of a local doctor, but makes an extra pair of eyes and ears from an outside consultant available as needed.

    Amusingly, when the doctor returns the RP-7 to its “parking area,” he has to ask a passerby to “plug him in.” I’m wondering, if it happened to me, if I would be suspecting a “Candid Camera” moment!

    The Globe article has a video to go along with it.

    Thursday, July 2, 2009

    "Any sufficiently advanced technology...."

    One Friday, I took my laptop to a meeting from 10-12, then returned to my office and reinserted it into its docking station while I went to lunch. When I returned after lunch and after my daily walk, there was no response. No lights, no sound; no response when I pushed the power button, or even if I held the power button down for five seconds — the usual fix.

    So I dial up IT on the phone. “Hello, this is Lindsay. May I have your login id?”

    “That’s V as in victory, E, L, L, E, N, G, A.”

    “James?”

    “Yes, but you can call me Jim.”

    “OK, Jim, how may I help you?”

    I explained the situation.

    “What’s the number on the ID tag?” Lindsay asked.

    I picked up the laptop, scanning all the various attached labels. “Which one is the ID tag?”

    “Is it a T43?”

    “Yes.”

    “OK, here’s what you do. Take it out of the docking station, close it up, turn it over, and remove the battery.”

    “OK, done.”

    “Now, you’re going to turn it back over and press the power button ten times, holding it down one second for each time. Then you’ll press and hold it for 30 seconds.”

    I laughed, but complied. “One. Two. Three. Four. Five. Six. Seven. Eight. Nine. Ten. OK, now I’m pressing and holding the power button.”

    I checked my watch, while we joked about turning around in a circle three times and doing other arcane things.

    “OK, that’s thirty seconds.’

    “Now turn it over and put the battery back in.”

    “OK, it’s in.”

    “Now open it up again and press the power button.”

    I did, and it’s been fine ever since.

    (For the scientifically minded, apparently a circuit locked up, and repeatedly pressing the power button was a way of draining the capacitors.)