$ cd ../notes

Engineering Evergreen2 min read

AI coding is here to stay

Rubin Basha

The real differentiator will not be who generates the most code. It will be who still understands the system, because people are accruing technical debt, but actually even more worrisome is cognitive debt.

AI can dramatically improve delivery speed.

It can remove repetitive work.

It can help explore ideas faster.

It can accelerate migrations, refactors, debugging, and experimentation.

But there is a dangerous trap in treating software engineering as merely prompting until something works.

Because software is not just output.

Software is understanding:

  • architecture
  • tradeoffs
  • failure modes
  • maintainability
  • scalability
  • product behaviour under pressure

At BasalBit, we see AI as an amplifier for experienced engineers, not a replacement for engineering thinking.

The companies that will build durable software products in this era will likely be the ones that combine:

  • AI accelerated execution
  • deep technical ownership
  • architectural clarity
  • careful review
  • strong debugging capability
  • product understanding

Fast delivery matters, but long-term trust in the system matters more.

Customers do not buy prompts.

They buy reliable outcomes.

Interesting discussions recently around AI coding, cognitive debt, and the future role of software engineers.


A later thought

AI makes it easy to implement features quickly, but speed can hide a cost.

A system can accumulate unnecessary abstractions, duplicated logic, too many data models and layers that make sense locally but not as a whole. Each change might look reasonable on its own. The complexity shows only when you try to understand the whole system, or change something later.

That is the cognitive debt I mean: not only code that needs refactoring, but a system that becomes harder for the team to reason about.

The answer is not to avoid generated code. It is to be deliberate about what we accept:

  • Ask whether the abstraction is necessary.
  • Check whether a new table or service represents a real domain concept.
  • Prefer the smallest design that solves the actual problem.
  • Review the whole system, not just the latest change.

The measure of good engineering is not how much code we can generate. It is how well the system solves the problem, and how understandable it stays.

Originally posted on LinkedIn, where the discussion is.

$ ./contact

If you are building something

A new app, a prototype that needs to become a real product, or a team that needs senior hands. Tell me the problem. I will tell you honestly whether we are a fit.

More from the engineering tree