Fleetwood Mac and Vibe Coding

Fleetwood Mac and Vibe Coding
Photo by Bernie Almanzar / Unsplash

I enjoy music. I have extremely little musical talent - though trying to change that slowly - so I am impressed by people that can get behind a microphone or plug a guitar in or orchestrate behind a computer and record and produce. Sometimes, it's a bit off the wall, like Tune in with Chewie's "Zelda's Midwest Emo Mixtape" or something a bit more serious like Queen of Dreams "Radiant" but recently, I've been on a bit of a Fleetwood Mac kick, namely the song "The Chain".

I also enjoy seeing how technology grows and evolves. The most recent wave is definitely using Generative AI with coding - often referred to as "Vibe Coding". What makes this unique from what we've been doing for the past few years is that you tell a prompt what to make, fix, upgrade, and generally do, and it constructs the code for you. Honestly, it's pretty fun to do. As an architect, I rarely start with a blank IDE and write code - usually I am either fixing existing code or at least have some standards to comply to that indicate what I should do first.

So, what do these two have in common? Well, as they say, "listen to the wind blow".

Chains

The biggest theme in the song "The Chain" is in its title - the chain. In the song as a whole, it talks about how, no matter what, the connection between people bind them together. The band is known of going through its ebbs and flows of romantic and platonic relationships and ups and downs as a whole. Yet, they still continued to be a band - though after this 1977 hit, there were more complexities that rendered this song a bit moot. We'll ignore that for now, however.

This is also a bit of a concern with vibe coding. I recently wrote an entire website using Kiro. Honestly, with very little guidance, it produced a great website that is mobile friendly, does what I need it to do (give information about local Pathfinder and Starfinder games), and has a test suite to run before I push updates to it. Even though Kiro itself was designed and released by AWS, I was able to host it all on Cloudflare Workers without any issues. The site itself is written in Typescript and React - languages/frameworks that I know how to function, but am nowhere near an expert on. Which leads to my utter dependency on Kiro for updating it. I can do minor fixes without it, but if I need to do a major change, like adding a new theme, I have to ask Kiro to help out. I, in fact, "would never break the chain". This dependency on Kiro concerns me.

If you don't love me now

Vibe coding is here to stay, of that I have no doubt. Will it replace software engineers and architects? Time will tell, but I highly doubt it. It'll have the same effect that good IDEs had on software - there will be a few hold outs, but they mostly improve the speed as which developers can code by assisting them. I gotta say, in using it, I do absolutely love working with vibe coding.

You will never love me again

Even though talking with Kiro was like discussing with a responsible junior engineer, it still needed heavy handed guidance for edge cases and certain tasks.

As an architect, I find it best to design and layout specifications before asking people to do work. Input on the plan is always welcome, but I don't think you should wake up in the morning with an idea and just start cracking. Even in the 0 to 1 phase of a product, a little draw.io or Mermaid.js outline is better than just winging it. Which leads me to something Kiro does well, and that's requirements and specifications.

Kiro, and others such as Cursor, can be provided specifications and requirements to build to, and then execute on those requirement as Tasks. An example, from my pending rebuild of the Shifting Corridor site, here's the first requirement:

Requirement 1

User Story: As a gaming community member, I want to view upcoming events in a calendar format, so that I can plan my gaming sessions.
Acceptance Criteria

    WHEN the user visits the site THEN the system SHALL display a calendar component showing events from markdown files in content/calendar
    WHEN an event exists in the calendar THEN the system SHALL display the event title, date, and basic information
    WHEN the user clicks on a calendar event THEN the system SHALL show detailed event information from the markdown content
    WHEN events are loaded THEN the system SHALL parse markdown frontmatter for event metadata (date, title, description)

This was done through vibe coding the requirement itself with a few corrections. From this requirement, and others, it built several tasks such as

5. Calendar component implementation

    Create Calendar component that displays events from markdown files
    Implement event sorting and filtering by date
    Add event selection functionality with detailed view
    Create responsive calendar layout for mobile devices
    Write unit tests for calendar component and event handling
    Requirements: 1.1, 1.2, 1.3, 6.1, 6.2, 8.1

As it goes through the list of tasks, it completes them one-by-one - 30 total tasks in this case because I am overly precise. However, it does each one, validates it's complete, and then asks me if it can proceed.

With all of this, I am really learning to love Kiro (and Cursor and others that do this kind of thing). It allows me to architect and design while it executes on it. I can feel the direction and influence on what I am working on without needing a full team to support small projects.

Damn your lies

Here's where the crux of the problem lies - the chain that makes us dependent on vibe coding is also a "selling point". We've seen news articles and such where entire teams are being dismissed for sake of using AI instead or the horror stories of using poorly trained GenAI chat/voice bots causing damage or wrong answers for people. In these cases, I believe this is a rush to be "AI-first" and not "AI Smart". GenAI, especially in software engineering, is a huge thing that isn't going away and in fact significantly helps. However, it's not an outright replacement for engineers and technical leadership. There's still a place for both. I think we'll see some slowing down of hiring engineers as we adjust to our new GenAI partners, but it won't stop and it won't suddenly be replaced by ChatGPT.

Watch the sun rise

(Yes, the lyrics are out of order.)

We're seeing the dawn of a new age of computing with GenAI. The controversy over how they're trained, whether content can be copywritten if it's made through GenAI, and even who has the best tools (shout out to privacy-focused Lumo for my non-coding usage). This will predicate how much we can use them based on how the path ahead of us goes. We continue to see huge leaps and bounds and huge consumption of GenAI. Some of it absolute slop, some of it really good and useful, but mostly a curious unknown. The path will be more clear in the future than it is now in mid-2025. (Future historians, I consider early August to be "mid" 2025 because I am too lazy to cut it into further pieces).

Unlike Fleetwood Mac's eventual story, the only thing that holds true for us and GenAI is that the "Chain keeps us together".

Marty Henderson

Marty Henderson

Marty is an Independent Consultant and an AWS Community Builder. Outside of work, he fixes the various 3D printers in his house, drinks copious amounts of iced tea, and tries to learn new things.
Madison, WI