Future of Coding
A lot of today’s AI assisted code development is focused on enhancing and expediting the software development lifecycles:
SLDC:
----------| specification | ----------
0. definition of scope/requirements
----------| generating code | ----------
1. write code
2. test it
----------| continuous integration | ----------
3. make things pass
4. build it
5. run more intense tests
----------| continuous deployment | ----------
6. deploy (maybe gated)
----------| production operation | ----------
7. monitor
With AI, a solid job of (0) will aid with (1) and (2) and maybe even (5). However, (3), (4), (6), and (7) won’t necesarily drastically change. Furthermore, (0), (1), and (2) will increase in complexity as as the system scales, the organization scales, and the user base increases in diversity. It may be possible to reduce such complexity with smaller, more well contained, and isolated sevices, however this comes with other challenges.
Examples of all this.
- Lovable: an ai website generator. Focuses on development of a product or prototype with just a prompt based approach. Handles iteration and deployment.
- Claude Code
- Latest Memo: The role of developer skills in agentic coding, Birgitta Böckeler
- When AI Writes the Code, What Do Programmers Do?, Steve Krenzel
- Model Context Protocol (MCP)
The concept of vibe coding elaborates on Karpathy’s claim from 2023 that “the hottest new programming language is English”, meaning that the capabilities of LLMs were such that humans would no longer need to learn specific programming languages to command computers.A key part of the definition of vibe coding is that the user accepts code without full understanding. AI researcher Simon Willison said: “If an LLM wrote every line of your code, but you’ve reviewed, tested, and understood it all, that’s not vibe coding in my book—that’s using an LLM as a typing assistant.”
So maybe we’re doing this all wrong? Does AI driven coding require a new paradigm? Sure, moving the bottlenecks around and reducing obstacles in one domain is an improvement, but what can we do to reap the benefits of this new paradigm evolution?
Vibe Check: testing is hard. Can we instead focus on less granular more systemtic analysis and monitoring?
Maybe programming as a whole needs a facelift. Taking a step back, code is ephemeral, data is forever. Code is becoming cheaper and cheaper to write but its complexity hinders innovation.
Constraint based metapromming:
Existing work on constraing solution space for AI assisted coding:
- X
- Y
- Z
However, what if the core language itself was constrained? Maybe we need an evolution on programming paradigm:
a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms – Programming Paradigm, Wikipedia
Most folks are familiar with imperative programming, or instructing how to do a thing, and declarative programming, or instructing what thing to do.
As a simple example, consider how we’d printfilter out only the evens from an array of numbers.
Imperative:
numbers = [1, 2, 3, 4, 5, 6]
evens = []
for num in numbers:
if num % 2 == 0:
evens.append(num)
Declarative:
evens = filter even [1, 2, 3, 4, 5, 6]
Yet, when we’re truly vibe coding, we may not know or even need to know how we go from problem to solution, only that the instructions given to the computer abide by some set of constraints.
We’ve several existing paradigms that seem relevant:
- constraint based programming
- metaprogramming
- rule-based programming
- symbolic programming
- agent-oriented programming
- dependent type theory
My ideas here are pretty well encapsulated within:
Ephemeral UI with realtime metaprogramming.
- code based on data
- code based on config