2 Comments
User's avatar
Mark's avatar

Been reading your posts for ~year now. Love your update this week. I'll looking into Vibe Coding! So far people tell me it's Smoking + Coding... but I suspect it's quite different. Cursor has bugs, I'll try Windsurf. It's replit different? Have you tried ByteDance's Trae?

Thx for the update.

Expand full comment
richardstevenhack's avatar

"But it’s actually so powerful in the hands of someone who knows what they’re doing!"

As Han Solo said in "Star Wars": "Well, that's the real trick, isn't it? And it will cost you extra."

"Knowing what you're doing" in software design is more than becoming familiar with a code editor and an AI. In my opinion, most of the software produced even by actual software engineers tends to be crap to a large degree in terms of usability, reliability, and definitely in security.

In fact, I tend to dismiss the term "engineer" when used with software developers. Real engineers - the people who produce buildings, dams, cars, etc. - are using components with known properties, applying processes to these components with known properties, and resulting in objects which have known properties specified beforehand. The operative word here is "known properties" based on the laws of physics.

Most so-called "software engineers" are doing what might be charitably called "spit-balling" most of the time with regard to their so-called "design documents". And that's before their product managers - many of whom have zero training in actual engineering - get involved, imposing unrealistic marketing-derived deadlines.

Where I would like to see AI applied is the use of expert systems which are trained on proper software engineering principles - to the degree they exist - to do the design work and THEN hand off the actual coding to an AI trained in coding.

Get the so-called "software engineers" out of the loop and replace them with machine rigor in applying proper engineering principles.

Instead, with "vibe coding", we are inevitably heading in the opposite direction, much like when web development was handed over to "Web designers" with zero training in either UI design or coding who were then handed relative sophisticated languages like Python and JavaScript and PHP instead of mere components like HTML and CSS. The result is the crap we see on the Internet.

This isn't just my opinion. Quite a few people with experience in software designer are worried about this as well.

A guy named Ted Nelson said in a talk during the last West Coast Computer Faire back in the 80s that there was no acceptable software on the market, proprietary or open source, based on actual engineering.

That's still true today.

I'm fixing to restart my programming training to learn Python for computer security and AI work. To start that, I'm going to refresh my previous training in proper software design principles and methods that I studied back in the 80s when "structured programming" and "structured system design" were first being developed.

I just asked DeepSeek to list the people I''m referring to. Here is its list, with most of the names I recognize:

Ah, you're interested in the **methodologists**—the pioneers who established software engineering principles, formal design methodologies, and structured approaches to system development in the 1980s. These individuals laid the groundwork for disciplined software design, architecture, and development processes. Here are some of the most influential figures:

1. Structured Programming & Software Engineering

Edsger Dijkstra – Advocated for structured programming and formal correctness proofs (though his major work was earlier, his influence persisted in the '80s).

Niklaus Wirth – Designed Modula-2 (1980s) and emphasized stepwise refinement in software design.

David Parnas – Pioneered modular programming and information hiding (key to modern OOP and component-based design).

2. Formal Methods & Specification

Tony Hoare – Developed CSP (Communicating Sequential Processes), influencing concurrency models.

Jean-Raymond Abrial – Created Z notation (formal specification language, 1980s).

Leslie Lamport – Worked on Temporal Logic of Actions (TLA), formalizing concurrent systems.

**3. Software Design Methodologies

Tom DeMarco – Co-author of "Structured Analysis and System Specification" (1979), defining data flow diagrams (DFD) and structured analysis.

Edward Yourdon – Popularized structured analysis/design (Yourdon/DeMarco methodology).

Chris Gane & Trish Sarson – Developed an alternative DFD (Data Flow Diagrams) notation for structured systems analysis.

Michael Jackson (M.A. Jackson) – Created Jackson Structured Programming (JSP) and later Jackson System Development (JSD) for data-driven design.

4. Object-Oriented Design (Early Influences)

Grady Booch – Developed the Booch Method (precursor to UML) for OO design.

Ivar Jacobson – Introduced use cases and Objectory (early OO methodology).

Bertrand Meyer – Designed Eiffel (1985), promoting design by contract (DbC).

5. System Architecture & Design Patterns

Fred Brooks – While "The Mythical Man-Month" (1975) was earlier, his principles on software complexity remained key in the '80s.

Larry Constantine – Co-developed "structured design" (coupling & cohesion metrics).

Douglas McIlroy – Advocated for "component-based software engineering" (Unix pipes as an early example).

6. Real-Time & Embedded Systems

Paul Ward & Stephen Mellor – Developed "Ward-Mellor method" for real-time structured analysis.

Hatley-Pirbhai – Introduced extensions to structured methods for real-time systems.

These thinkers formalized software and system design as an engineering discipline—moving away from ad-hoc coding to structured, repeatable, and verifiable processes. Many of their ideas evolved into modern UML, Agile, and model-driven development.

I recognize most of those names since I was around at the time. DeepSeek left out one name: Jean-Dominique Warnier, a French computer scientist who developed the "Warnier Diagram" which heavily influenced Michael Jackson, mentioned above.

This is the sort of thing people who want to do more than one-off personal programs for their own individual use need to study. But us old-timers are concerned that "vibe coding" will find its way into mainstream commercial and open-source software development, leading to a decline in software quality, i.e., worse than it already is.

Expand full comment