Skip to content

Instantly share code, notes, and snippets.

@greghelton
Last active July 3, 2024 22:30
Show Gist options
  • Save greghelton/7f6cd23f2292ddda81020801139966e8 to your computer and use it in GitHub Desktop.
Save greghelton/7f6cd23f2292ddda81020801139966e8 to your computer and use it in GitHub Desktop.

A friend of mine gave a presentation about the evolution of software development as an engineering disipline. His focus is on waterfall and agile methodologies. In his talk my friend reveals that waterfall was not proposed as a methodology that would succeed but rather it was presented as the antithesis of a methodology that was responsive to the challenges of software development. As a developer, I am interested in a transition that happened in parallel, in the move from monolithic programs to modular code. What drove programmers to develop new goals for the code they wrote, going from writing perhaps 10,000 line programs to developing modular code and then to developing and deploying modular components.

The Rise of Structured Programming

From the mid-1970s to the mid-1990s, most IT developers learned what was considered the proper style of programming from Ed Yourdon’s books. He was the first popular advocate of Structured Programming or what was then often called "GOTOless programming". Besides banning the use of GOTO, structured programming consisted of two things, use of structured control statements (IF-ELSE and DO-WHILE) and the idea that programmers should use subroutines. Use of subroutines resulted in modular code. Structured programming constructs were introduced in COBOL in 1974 and in RPG with the release of RPG III in 1978. Microsoft’s QuickBASIC, introduced in 1985, had structured programming constructs.

The Impetus For Something More

IBM introduced its desktop computer, the PC, in 1981 and sales exceeded IBM’s expectations by 800%. The IBM PC was the catalyst that in the early 1980s filled the largest university auditoriums with students enrolled in intro to programming classes. These students bought Yourdon’s Structured Programming text and they learned structured programming (IF-THEN-ELSE, DO-WHILE) and modular programming (subroutines). Structured programming was taught in the workplace as well. One incongruous fact from that time stands out, program size was never an issue; ten thousand line programs did not warrant attention other than, perhaps, a pat on the back.

Designing Architecture

In the mid-80s and earlier, programs almost always ran on the machine where the data was. That may have been a PC and a floppy disk or a green-screen program and a mainframe. Then, around 1990, offices bought and installed Microsoft SQL Server DBMS and attached PCs to LANs and programmers wrote FoxPro, VB and PowerBuilder programs that interfaced with the database server over the network. This architecture where the components weren’t all in one box was a new paradigm for the majority of programmers. For many, this was the first time they had to think about the individual hardware components their code ran on, the GUI code on the desktop and the SQL on the remote server.

New Challenges, New Tools, New Concepts

Despite having been the most popular author of textbooks for entry level programming courses for two decades, Ed Yourdon is probably most remembered today for his 1990s books, "The Decline and Fall of the American Programmer" (1992) and "The Rise and Ressurection of the Americn Programmer" (1996). The second book was an acknowledgement of the erroneous conclusions of the first, that he had overlooked how modern tools like those of VisualBasic (1991), Powerbuilder (1991) and Interface Builder for NextStep IDE (1988). With these new tools came new concepts.

Extending Utility

The help system in Visual Basic's IDE included code snippets and instructions identifying the which procedure in which to place it. NextStep's Interface Builder generated code as the mouse was used to draw lines between visual components and code.

Conclusion

In new languages, the tangled mass of difficult to follow spaghetti code is generally a thing of the past. This change is largely independent of the language.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment