πŸ€– Vibe Coding Persona Junior Developer?

I've been following the development of Claude with great interest and have had an account with Anthropic for quite some time.

I had also heard about this other tool called Cursor that some friends and colleagues had been toying with.

But this presented a pretty interesting opportunity for learning and I decided to give Claude Code a go.

🧠 Claude Code

Initially, I applied for an account with Claude Code and was put on a waiting list. Typically these things are meant to take a while to accept new users as I think at the time, it was at capacity. But lo and behold, I got approval later that very day.

I immediately installed the NPM package, cd'd to a project and ran claude to see what happened.

After signing in, I was simply presented with a simple text based interface.

πŸ€” What am I supposed to use this for?

I'm not a software engineer, but I am comfortable writing code and most of the code I've written until about a year ago was totally organic.

I relied on Stack Overflow and docs like everyone else, and sometimes would ask advice or guidance from generous colleagues.

But I was presented with the dialog and was stumped. I think this was because the project didn't have a plan and I didn't really feel the need to develop it further.

I decided it'd be interesting to see how far I could get with a fresh project, another website, much like this one.

So I asked it:

Create me a Next.js site for a client who wants to present their portfolio, some publications and a general personal showcase.

🌫️ Too vague

I quickly discovered that this approach was far too vague and loose. The result was fine, but not what I'd imagined, which really turned this whole "vibe coding" trend on its head.

The site was simple, had minor functionality, wasn't structured how I would have structured it myself, and I didn't really know how I could contribute personally.

πŸ“ Planning

I wondered if I could first create a plan for what I wanted to achieve, and decided I'd approach this project like a product manager. Create a detailed briefing with requirements.

Mix that with a rough design guideline and see how we get on.

I deleted everything in the directory, killed claude and ran it again, this time I'd approach it differently

πŸ“‹ plan.mdx

I asked claude to create me a single Markdown file that would serve as a set of requirements and a plan for developing the project.

I asked it to make a rough, numbered plan. Each step would be a logical workflow for developing this project.

The model created a plan.mdx file with a fairly simple and clear step by step guide.

I then opened that in VSCode and modified it myself. I added some other steps that I thought would be necessary like defining a basic set of styles (colors, spacing, typefaces etc)

Once I'd made my amendments, I told Claude to take another look at that file, digest it and then prepare me a design-guide.mdx.

Once again, as I asked, it created me another file with a structure for the design guide.

I pointed it to 2 reference websites that I wanted to replicate thematically, and asked it to gather insights about those sites, their styles and build a consolidated design guide.

I then moved an image file into its folder.

Color palette

I asked Claude to also use this palette as reference and create a colors.ts and spacing.ts file to lay the foundations of the website.

πŸ‘¨β€πŸ’» Junior Developer?

I started to realize that I had previously really been thinking about this in the wrong way. I couldn't allow the AI to be the master, I had to be the master. The AI was much better at completing smaller tasks, one by one, but really benefited from having a plan of its own.

From my experience I have noticed that creating structure and guiding someone, or in this case, something, through your best practices, learnings from previous experience and ensuring alignment with your overall objective is crucial to fostering their success.

😲 I don't recognize any of this code...

It's typical, at least with me, that I ask AI to crack on and solve a complex problem for me, but upon returning to the code, I find myself immediately lost. I have no sense of why the code was written in that way, how things relate, how functions are meant to operate etc. This has caused many of my recent projects to stall, quickly.

Turns out, I quite like coding myself.

Coding can be fun, and I don't want that to change. I don't want to lose interest in a hobby because AI is taking over the complexity or reward from it.

πŸ† Reward

Coding, like many hobbies, can be deeply rewarding. The satisfaction of solving problems, creating something functional, and seeing your ideas come to life is what keeps many of us coming back to the keyboard.

Think of another hobby like tennis. There aren't really any shortcuts. You practice, you learn techniques, you play matches, and gradually your skills improve. The reward comes from the journey itself and the progress you make through dedicated effort. It also contributes to your fitness, and perhaps your social circle.

Board games present an interesting contrast. While practice and strategy help you improve naturally, there's always the temptation to cheat. To peek at cards or move pieces when no one's looking. Cheating might give you better outcomes in the short term, but it robs you of genuine skill development and the authentic satisfaction of winning fairly. The same could be said for computer games.

When it comes to coding with AI, there's a similar temptation. You could simply ask the AI to write entire applications for you, sitting back while it handles all the complexity. But that approach, much like cheating at board gamesβ€”you might get a working product, but you've missed the learning opportunity and the genuine reward.

The approach I've outlined; Treating AI as a junior developer that you guide and direct, creates a collaborative dynamic that enhances rather than replaces your skills. By maintaining ownership of the architecture and planning, breaking problems into discrete tasks, and reviewing the code that's generated, you're still engaged in the meaningful parts of coding.

This isn't cheating; it's more like having a coding partner who complements your abilities. Your own Junior Developer (Although they likely know immeasurably more than you). You're still solving problems and thinking critically, but you're leveraging AI to handle the implementation details once you've established the direction. The result is that you can learn while working more efficiently, getting the reward of creation without sacrificing the satisfaction of genuine contribution.

Most importantly, you remain the master of your code. You still understand it because you guided its creation. And that understanding is ultimately what makes coding such a fulfilling hobby in the first place.