Skip to main content

Programming Tools Change. Thinking Doesn’t.

It’s never been easier to write code — or to misunderstand what you’re actually building.

From assembly language to AI coding assistants, software development exists on a spectrum of abstraction. At the low end, you manage every byte by hand. At the high end, you describe what you want in English and get code in return. But no matter where you are on that spectrum, one thing stays constant:

You still have to understand the problem.

High-level tools simplify how you express a solution — not what you need to understand. Whether you’re dragging blocks in a no-code interface or writing C from scratch, you’re still designing a system that solves a real-world problem. That part hasn’t changed.


The Spectrum of Abstraction #

At the lowest level, you’re working in assembly language. It’s precise and powerful, but unforgiving — every instruction matters. One step up, C and C++ give you structure but still require manual memory management. You’re juggling performance, allocation, and low-level control — often far removed from the actual business problem you’re solving.

Languages like Go, Rust, Java, and C# introduce memory safety, garbage collection, and robust concurrency features. They let you focus more on logic and less on resource management.

Then come Python, Ruby, and PHP — high-level, expressive, and optimized for speed of development. You worry less about the machine and more about the shape of the solution: inputs, outputs, data flow, validation. Great for web apps, data workflows, and anything where rapid iteration is key.

Finally, we have low-code and no-code platforms. These let you build by dragging, dropping, and configuring instead of typing. You still have to define logic, model data, and handle edge cases. The tools are accessible — but the thinking is still hard.

And now, we’ve entered a new realm: AI-assisted coding.


“Code in English” and the Rise of Vibe Coding #

Tools like ChatGPT and Claude can generate entire applications from natural language prompts. You can describe an idea and get back a functional prototype. But there’s a catch:

These tools are force multipliers — not substitutes for clarity.

If your instructions are vague, your results will be vague. If you omit critical logic, the system won’t invent it for you. You need to know what you’re building — and be able to express it precisely.

This has led to a new trend: “vibe coding.” It’s the act of prompting something into existence, hoping it works, and tweaking as you go. It can be fun. It’s great for exploration and prototyping. But when vibe-coded software hits production, reality hits back.

“Vibe coding is fun until it isn’t.” — @catalinmpit

Or the AI ends up in a loop trying to amend a working site, breaks it and then gets stuck trying to resolve it and needs human guidance to get back on track….

“It created a working website… then broke itself trying to fix a plugin.” — @kuzushi

When you skip foundational logic and rely on vibes alone, the bugs creep in fast. AI can write code — but it can’t fix a broken product strategy, missing business rules, or unclear data flows.


Abstractions Don’t Eliminate Complexity — They Shift It #

Some people assume high-level tools eliminate the need to think. They don’t. They just change where the complexity lives.

  • Assembly demands detailed control over the machine.
  • C demands control over memory and architecture.
  • Python lets you focus on logic and design.
  • No-code platforms ask you to think in flows and data models.
  • AI asks you to describe everything clearly — or risk confusion and failure.

At every level, you’re solving a problem. The friction changes. The tools change. The thinking doesn’t.


Better Tools Give You Leverage #

Excel didn’t replace financial analysts or your CFO, it makes them higher leverage. AI is doing the same for developers. It rewards people who understand what they’re building, and punishes those who don’t.

A bad idea, well-expressed, still leads to broken software. A good idea, poorly expressed, gets mangled in translation.

The tools you use are important — but they’re not the core of your work. Your real job is to understand problems, design systems, and express your thinking clearly. Everything else is just leverage.


Final Thought #

The future of programming isn’t no-code, or even AI code. It’s clear thinking, paired with powerful tools. You still have to solve the problem. You just don’t have to do it alone anymore.

With AI moving so fast, much of this is potentially a “moment in time” issue. AI is still very early in it’s development and we are seeing rapid progress almost every day. Some of these issues we see now will look like mere teething troubles, simply part of being on the bleeding edge of this technology.

But, however quickly AI progresses, clear thinking and communication never goes away. Understanding and expressing needs clearly, whether to a human or AI will be what matters. More to come on this.