I’ve been using Copilot for a couple of years, but mostly limited it to grunt work; auto-completing obvious code, filling out obvious patterns, and drafting comments (some of which I accept).
Recently I’ve been looking for an excuse to try out something more ambitious. More vibe-codey. Whatever the fuck that means.
Then it hit me. I built this website a few years ago with Jekyll and Bootstrap, which frankly are things I know little about. The world has moved on, but the website hasn’t.
This seemed like a perfect test case…
(sidebar: If you’re confused by the title of this post, try saying it with a thick Glasgow accent. You’ll get the idea.)
A Skeptic I Am Not
I think I’ve got a fairly good understanding of the current state of “AI”.
I get how LLMs work, what they’re doing, and what they’re not doing.
I think I understand why people in general (and creative people specifically) are scared of what AI is going to do to their careers (and whole industries).
Finally, I am also as cynical as they come, and so I’m certainly skeptical about the way that some form of AI-like functionality is being levered into every damn product around.
However…
Force Multiplier
I firmly believe that the coding tools that are beginning to emerge, in the right hands, are force multipliers.
Like any powerful tool, you can certainly make a monumental mess, and I’m sure that lots of people will.
In my professional life I think I’ve already seen examples of code that I suspect was generated by an AI tool, where the person using the tool was not sufficiently experienced to understand the implications of the code. Which bits to keep, which bits to change, which bits to discard because they duplicated functionality elsewhere or just didn’t fit the brief.
This, however, is very little different from the examples I’ve also seen where someone has copied & pasted some dodgy code from a Stack Overflow answer. Given that the AI tool was probably trained on those Stack Overflow answers, the only difference seems to be that the tool actually has a better chance of adapting the code to fit the user’s codebase than a naive copy-and-paster has.
So yes, vibe coding tools and other programming assistants are going to help some not very good programmers blag their way in the world for a bit longer and make some tangled code bases.
However, based on my experience today, if you already sort of know what you’re doing, oh boy do these things help.
Refreshing The Site
To be clear, I haven’t asked Copilot to change a single line of actual content on this site.
However, for a laugh, I did ask it to make a first draft of this post.
In it, it described the reason for refreshing the site.
This site has been running on the same basic design for years - a fairly standard Jekyll setup with Bootstrap 3, some custom CSS, and a layout that, while functional, was starting to feel quite dated. The typography was uninspiring, the color scheme was bland, and the overall feel lacked personality.
Brutal Copilot. Brutal - you bastard!
However, it may have had a point. The site has always been a bit quirky, and intentionally minimalist, but I wanted something that felt more modern. I suppose what I’m aiming for is more “I like it simple”, and less “I can only do simple”…
I most definitely have a sense of an aesthetic that I’m after, but I do most definitely not know much about modern web standards, and I’ve forgotten most of what little I did know about the technology I used to build the previous version.
I did think about switching to a whole new engine, but I really wanted to preserve all the previous urls and just clean up the appearance.
So what I asked it to do first was to “modernise the look and feel of this website”.
From this simple prompt, it basically did the following*:
- Migrated from Bootstrap 3 to Bootstrap 5
- Replaced the old CSS with a modern SCSS system using CSS custom properties
- Switched from local Bootstrap files to CDN delivery
- Replaced Font Awesome with Bootstrap Icons (also from CDN)
- Added proper dark mode support via
prefers-color-scheme
- Implemented a clean, responsive grid system
- Introduced subtle gradients throughout the design for depth without being overwhelming
- Created better visual hierarchy and spacing throughout
(* again these are basically it’s own words, although I’ve edited them a bit. This time I mostly agree though!)
That was a pretty major upgrade, it would have taken me a lot of time, and I would have broken things. It did it in a bunch of logical steps, which it explained, and it didn’t just to technical things, it also applied some taste in the way it adopted gradients, adjusted spacing, and so on.
How easy this step was rather blew me away, so I got a bit more ambitious.
I’d been experimenting with a slightly friendlier hand-drawn version of my logo, and I wondered if I could change the main title fonts to match it. I’d also been meaning to add an optional subtitle, and there were some little layout details that had been annoying me forever, so I dived in a bit deeper.
Fiddling With Fonts
I had a vague idea of a font I liked, but it wasn’t quite right (a bit too close to comic sans for my liking!).
So I asked it to change the site to use it, but then if there was anything else out there that was similar. I tried to describe what it was I liked and didn’t like about the font I sort-of liked.
It basically suggested a few more fonts, and made a style sheet where it was easy to switch between them. We then had a bit of a dialogue where we homed in on my eventual final choice.
This all felt very natural. It was as if I was sitting alongside someone who knew a lot more about all of this stuff than I did, and who was helping me. I said what I thought I wanted. It tried its best. We iterated.
I have to say that the process was more than “ok”, it was actually pleasurable. It had all the good bits of what I would have experienced if I’d been tinkering on my own, but it expedited the discovery part, and when it applied suggestions, it didn’t make the dumb mistakes that I would have made, like forgetting semicolons or missing a place where I needed to change something.
My other changes went a similar way. We didn’t get there right away, but we honed in pretty fast with a little bit of iteration.
Honestly, I couldn’t have done what I did today in anything like the time it’s taken, without using Copilot. I think it’s probably taken about four hours maximum, and at least an hour of that was writing this post.
Conclusions
I’m not starry eyed about this technology, but I don’t think we can ignore it.
If you’re an experienced developer, I think it can really help, but probably only if you know what you want and can clearly articulate it.
You need to know good code from bad, and need to be able to direct the tools accordingly.
It probably also helps if you can start off from a template or existing project that is already well structured and consistent.
In my career I’ve come across a range of developers with different skills and different approaches.
The ones I tend to gravitate towards are the people who don’t stop when the code works, they keep going until they understand why the code works. They tend to have opinions about coding standards and techniques, and methodologies. They like tools, and building tools. They probably have a favourite programming language (or ten). They like talking about this stuff, and reflecting on it, and generally are engaged in the process of software engineering.
Honestly I think vibe coding tools, AI coding assistants, whatever the hell we call these things, are absolutely built for such people - and for me, since I put myself in this category.
Change is scary, and we are most of us insecure about getting left behind. We’re also rightly suspicious of the Emperor’s new clothes. I don’t intend to dive in head first and forget everything I already know.
I do intend to attempt to embrace the potential though - which seems to me to be substantial.