Skip to content


A View of 20th and 21st Century Software Engineering

I've been digging pretty deep into the Software Engineering literature to prepare a new course I am developing and came across this. It's always fun to have a top-10 list even in the driest of topics, so here is Barry Boehm's "Timeless Principles (+) and Aging Practices (-) of Software Engineering!

4.1 TimelessPrinciplesandAgingPractices

For each decade, I’ve tried to identify two timeless principles headed by plus signs; and one aging practice, headed by a minus sign.

From the 1950’s

  • + Don’t neglect the sciences. This is the first part of the definition of “engineering”. It should not include just mathematics and computer science, but also behavioral sciences, economics, and management science. It should also include using the scientific method to learn through experience.

  • + Look before you leap. Premature commitments can be disastrous (Marry in haste; repent at leisure – when any leisure is available).

  • − Avoid using a rigorous sequential process. The world is getting too tangeable and unpredictable for this, and it’s usually slower.

From the 1960’s

  • + Think outside the box. Repetitive engineering would never have created the Arpanet or Engelbart’s mouse-and-windows GUI. Have some fun prototyping; it’s generally low-risk and frequently high reward.

  • + Respect software’s differences. You can’t speed up its development indefinitely. Since it’s invisible, you need to find good ways to make it visible and meaningful to different stakeholders.

  • − Avoid cowboy programming. The last-minute all-nighter frequently doesn’t work, and the patches get ugly fast.

From the 1970’s

  • + Eliminate errors early. Even better, prevent them in the future via root cause analysis.

  • + Determine the system’s purpose. Without a clear shared vision, you’re likely to get chaos and disappointment. Goal-question- metric is another version of this.

  • − Avoid Top-down development and reductionism. COTS, reuse, IKIWISI, rapid changes and emergent requirements make this increasingly unrealistic for most applications.

From the 1980’s

  • + These are many roads to increased productivity, including staffing, training, tools, reuse, process improvement, prototyping, and others.

  • + What’s good for products is good for process, including architecture, reusability, composability, and adaptability.

  • − Be skeptical about silver bullets, and one-size-fits-all solutions.

From the 1990’s

  • + Time is money. People generally invest in software to get a positive return. The sooner the software is fielded, the sooner the returns come – if it has satisfactory quality.

  • + Make software useful to people. This is the other part of the definition of “engineering.”

  • − Be quick, but don’t hurry. Overambitious early milestones usually result in incomplete and incompatible specifications and lots of rework.

From the 2000s

  • + If change is rapid, adaptability trumps repeatability.

  • + Consider and satisfice all of the stakeholders’ value propositions. If success-critical stakeholders are neglected or exploited, they will generally counterattack or refuse to participate, making everyone a loser.

  • − Avoid falling in love with your slogans. YAGNI (you aren’t going to need it) is not always true.

For the 2010’s

  • + Keep your reach within your grasp. Some systems of systems may just be too big and complex.

  • + Have an exit strategy. Manage expectations, so that if things go wrong, there’s an acceptable fallback.

  • − Don’t believe everything you read. Take a look at the downslope of the Gartner rollercoaster in Figure 10.

  • Link to site: A View of 20th and 21st Century Software Engineering

Double Agents

I am reading a really cool book right now: Review & Outlook: Loose Lips on Syria -

It's always possible that all of this leaking about when, how and for how long the U.S. will attack Syria is an elaborate head-fake, like Patton's ghost army on the eve of D-Day, poised for the assault on Calais. But based on this Administration's past behavior, such as the leaked bin Laden raid details, chances are most of this really is the war plan.

Let’s give GPSs the EMOTION feature

Maybe it's because I just arrived from a long drive and stay in New York where I was guided by the nose by my TomTom GPS lady.

Did you know that the Garmin GPS Lady gets a little annoyed when you choose a direction different from what is suggested? She says something like: "Incorrect Route, Recalculating…", which after you hear it two or three times sounds like "Incorrect Route, you jerk, you are wasting my time again by making me do all this work to recompute another route for you. Can't you listen???" The TomTom lady just suffers in silence and provides you with a new route as soon as she sees that you didn't follow directions.

Which led me to thinking of a cool feature that none of the GPSs that I've seen or heard of have. I think it would be differentiated enough that vendors would put it as one of a few features printed on the front of the box. At any rate, if that much doesn't come true, at least it would be funny! Here's the idea.

In addition to picking the voice, as you can today ("American, Female", "New York Cab Driver", "747 Captain") let me also say what the emotion iis. Could you imagine:

NERVOUS: "Oh no, please don't go that way, I can't say what might happen, but it can't turn out well…."

MOTIVATING : "Don't worry that you missed that turn. You're a good driver and I know that you have a good reason to making the change. I am always impressed with your rapid and effective decision making!"

CASTIGATING: "You dope, there you go again. I have applied the computing and data resources of the universe to find you the best possible route. All you have to do is steer. I mean really, are you totally a waste of space?"

Add your own additional ideas. I think it would sell like crazy and who knows, reduce driver fatigue and accidents too!

Originally posted on Jul 29, 2009. Reprinted courtesy of ReRuns plug-in.

Microsoft still has some tricks up it’s sleeve: Office 2010

Now I've been a mac for about 4 years now, so I generally don't pay too much attention to Microsoft's new product releases. But take a look at some of these videos about Office 2010. There's are some impressive new developments.

I am particularly impressed with the 'backstage view' which appears to pull together all the functionality that relates to how to get information into and out of any of the office apps.

One this site, Office 2010 revealed, you will see many cool videos. NB, they seem to have been snatched from a momentarily present web site, so Microsoft may force them to be taken down.

Technorati Tags:office2010

Ruby Internals

Here's an interesting article about how Ruby (the programming language not the gem) is interpretted or compiled. (It's funny to contemplate what that question might mean to someone who thinks we are talking about a gem and not a programming language. 'Is Ruby Interpretted or Compiled' ? Say what??)

Anyway, to whoever is left reading this, I thought this article was quite interesting: Is Ruby interpreted or compiled? - Pat Shaughnessy. Here's a quote to give you a taste:

"Ever since I started to work with Ruby in 2008, I?ve always assumed that it was an interpreted language like PHP or Javascript ? in other words, that Ruby read in, parsed and executed my code all at runtime, at the moment my program was run. This seemed especially obvious since the default and most popular implementation of Ruby is called ?MRI,? short for ?Matz?s Ruby Interpreter.? I always thought it was necessary to use an interpreter to make all of the dynamic features of the language possible." (from Is Ruby interpreted or compiled? - Pat Shaughnessy)

[GEEKY] Switched from Firefox to Safari, and back again

About a week ago the new version of the Safari Browser came out for Mac OS X. I was swayed by the promotion and decided to use it for a while instead of Firefox 3.5. Here's my take, subjective, not based on a scientific analysis:

  • If Safari 4.02 is faster than Firefox 3.5.1 it wasn't immediately obvious to me. I think Safari starts up a bit faster but other than that, no noticable difference.
  • The new 'show all my most visited web pages in one screen' feature is pretty, but wasn't useful to me
  • I was constantly annoyed that Safari would open a new window when all I wanted was a navigation or at most a new tab. (Yes I did play with the options but none of them fit my mode of use.)
  • I missed certain plug ins (especially ScribeFire)
  • The XMarks for Safari feature caused mysterious problems. Not sure whether it was XMarks itself or the plug in management in Safari.

All in all, a string on minor annoyances coupled with no special benefit led me to demote Safari and promote Firefox back to my dock!