A software engineering truism that feels weaker now after AI codegen:
"The best programming language is the one your team currently uses."
I am stealing that from a John Carmack interview shortly before chatGPT was released.
This used to be great advice. You generally aren't building software for rockets. There was a huge advantage in everyone being able to jump from one service to another without losing a beat. Familiarity mattered. Ramp-up speed mattered. Shared team context mattered. Saving a few clock cycles on some IO-bound application.... not so much. Never worth it when a production incident turns into a Kotlin tutorial at 2am.
But AI codegen has really changed the equation on language choice.
It is now much faster to become productive in an unfamiliar language. Not just to be productive but to get productive... as it is easier to learn a language. And some languages truly are better than others. How you evaluate a language also changes. Previously you might have a premium on the language's ecosystem. You aren't just choosing the language but all the frameworks and libraries that come with it and can help you ship immediately. But when the cost of code is dramatically lower, having to write your own cookie parsing middleware isn't such a pain and might not warrant choosing a subpar language.
I guess the caveat in this is it is very easy to just turn your brain off and have the LLM write all the code. And you will never end up learning the new language. Opening yourself up to footguns whenever you stray off the beaten road. Being unable to recognize when a model is confidently wrong while debugging.
I think these days you should simply choose the right language for the product. But be willing to temporarily slow shipping speed down with the expectations of building a new muscle. Don't be afraid to turn off codegen for a feature or two. It will force you to read some docs.
The language traits that matter most in the AI codegen era:
- Static Typing
- A good compiler with actionable errors (fast feedback loops)
- Simplicity over cleverness
Languages that I think are set up to benefit in the era of LLMs
- Typescript over Javascript. There are really no drawbacks to typing at this point. Only upside.
- Rust. Technically excellent but historically hard to ramp into. AI lowers the barrier to entry though.
- Go. Has simplicity and speed. Its verbosity is no longer such a drawback given it is so much faster to write code.
- Python in the short term. The majority of AI is written in python frameworks so python has obviously benefited in the short-term, but because of the aforementioned reasons I can see it losing some ground.