Michael Jablonski

July 8, 2021

Before Agile Software Design

My start as a professional programmer was in the mid-80s when I was hired as a programmer at a small digital design company. I worked there for seven years and learned much about software design and digital systems.

My first job assignment was to write a user’s manual for a proposed computer program, part of a complex hardware/software system for testing flight software running on computers on Navy aircraft, writing the manual as if the software were already up and running.  This user’s manual was used as the requirements document.

We had frequent meetings with the users of the proposed program while writing the user’s manual. They liked this approach. We programmed a mock-up of the user interface, the only programming we did during the first six months on the project, along with some quick and dirty prototypes that we never shared with the users.

This was followed by a long design process, with a formal preliminary design review, a critical design review, followed by programming the system.  The next step was the writing, approval, and execution of a long and detailed acceptance test plan. The plan was executed with a group of users, defects were found and corrected, and the system was accepted and deployed.

We were guided along the way using techniques and methods called structed analysis and structured design, reading books and articles about these subjects by noted authors of the time.

We delivered a top-quality system using this engineering approach.

Now, reading about Agile Software Design, I am told we did everything wrong, as we did not have daily meetings, produced lots of written documentation instead, using (more or less) the waterfall model.

We delivered no intermediate deliveries of a partially working system, waiting until the end to deliver the full-up system.

The system was delivered on time and on budget and it worked, meeting all the requirements.

Granted, the software development tools now are fantastic:  better and faster computers, modern languages, great compilers, object-oriented programming, source code control, great libraries of tried-and-true code, and so much more.  

Now is the best time to be writing software; but quality software has been around long before before Agile Software Design became vogue.