Three Thoughts on Dark Code
A couple of weeks ago Dan Shapiro's blog post "The 5 Levels" (about Agentic Engineering) did the rounds. He coined Level 5 the "Dark Software Factory". So what comes out of those factories? I'm calling it Dark Code.
Dark Code: lines of software that no human has written, read or even reviewed.
Two weeks ago I presented a talk "Mapping out Dark Code" at the OpenAI Codex meetup in Amsterdam, and now people start conversations with me and mention Dark Code. So before this goes out of control, let me write some thoughts.
Tldr:
- Will my codebase become an unholy mess if no one looks at the code?: Yes, this is an unsolved problem.
- Will there be new programming languages if humans don't care about code anymore?: Doubtful, and that's a shame!
- Dark Code is already here: In enterprises no one knows the code anyways.
1 - Will my codebase become an unholy mess if no one looks at the code?
With how agents work nowadays, I see parallels with evolution chipping away at our ACGT base pairs. It's just trying some things until it works. Likewise, in software, a prompt will just find the easiest way to achieve its goal.
If the system is big enough, a random request in a prompt will not trigger a full refactoring or a new architecture. I feel architecture will get stuck in local maximums quite quickly.
Yes, without new tooling for architecture, backpressure on the agents when complexity goes too high, your codebase will become an unholy mess. However, there is a lot of development in this field now, so some things will emerge.
2 - Will there be new programming languages if humans don't care about code anymore?
The SWE Bench performance on new or unknown languages by LLMs is abysmal. I saw an article on this recently but can't find it anymore. There's no or little training data on these new languages, so the LLMs have to use their reasoning and can't rely on "muscle memory", to put it in lay-men's terms.
What does this mean for programming language research?
A) All coding agents are generating ever more code in current, general purpose, languages, and it's a bit of a vicious cycle. The more code is generated, the more models will be trained on that. It's hard to get good model performance on a new language, and thus it's harder to generate enough code to be trained on.
B) Previously humans cared about their code. When they saw a way to create a better language, some people were crazy enough to create a new one! Because they cared so much about the software systems they built. No wonder, they were living in their codebases all day. Now that we let most code be generated by our agents, do we still care enough to create a new language? I don't think so.
But, as I've written in the future of programming systems I believe there's a LOT of room left for better programming languages. I believe the Low-Code movement was partially about this. Standardizing what we were trying to build.
A language / linter / syntax should know exactly where your application talks to the outside world. Where there is Personally Identifiable Information flowing through your systems. Instead, all major current languages are general purpose languages, and unconstrained. Unconstrained sounds good, but actually, constraints allow you to speed up tremendously.
Will we ever get nice things, or are we casting the current status quo in stone. Will Rust be the best language forever?
3 - Dark Code is already here
Dark Code is not that binary. Code I've written 1 year ago is already a lot darker than the code I'm writing today. Enterprises are full of code written by teams that are no longer there. That code is pretty dark.
My startup is trying to shed a light on large software systems that are too complex to understand, unless you take a birds eye view. I'm a bit scared that it might not be relevant in the world of Dark Code, because people don't seem to care about code anymore. On the other hand, there is now more code than ever, so I'm betting that people will want to work on this higher level. Maybe we're building the IDE of the future?
Thanks for reading. If you liked this post, you might also enjoy my thoughts on the future of programming systems.
Discuss on HN, comments on the blog are mostly spam.
Comments
Post a Comment