Ten months ago, I talked about AI x Software Development (“Natural Language Coding”) and what it means for software development workflows and tools like the IDE.
GitHub's announcement of Copilot Workspace this week marks the start of the sunsetting of IDEs as the main interface for building software.
IDEs have been long, trusty companions for software developers. However, with the rise of AI-assisted dev workflows, the traditional IDEs days as we know them (= fancy code editors), are about to make ways for new tools and interfaces.
New Workflows, New Tools
There’s a new paradigm in software development. Call it “Natural Language Coding” or “AI-assisted dev workflows”. It follows a specs-driven approach, where the role of human developers is to steer the wheel and guide the AI on how to write code, rather than actually writing the code themselves. Here is how it goes:
Issue description: Product/Engineer “open a ticket” and describe the scope of work: business requirements and high-level specs.
AI writes specifications: AI analyzes the issue, generates technical specs, and breaks it down into an actionable, step-by-step work plan - followed by a human review and refinement.
AI generates code: AI executes the steps defined in the work plan
Inner Feedback Loop: AI autonomously iterates using internal tools (tests, builds, linters, self-reflection).
Human Feedback Loop: The AI hands off the task to the operator for code review and revision.
Hand-off to CI Process (“Last Mile”): Once the operator approves, the AI creates a pull request, and the rest of the workflow continues: Other developers review code, the CI/CD process kicks in and may run tests or create preview environments. If CI/CD process fails, it may bring back the AI to re-work and edit the Pull Request.
Deployment 🚢
We need new tools and interfaces to facilitate the new collaboration model between AI and human developers. Could we implement them in current IDEs? Probably yes. Should we do it? Probably not, as natural-language coding workflows have almost nothing in common with traditional coding workflows.
I'm glad to see the industry adopting the new paradigm and shifting to AI-centric software development workflows that are not dependent on the IDE.
Cloud Dev Environments 🤝 AI-Dev Environments
Cloud development environments (CDEs) like Gitpod and Github Codespaces set the stage for AI-native development environments. These environments facilitate AI's "inner loop"—automated iterations of code generation, testing, and refining.
Also, AI-driven development involves a lot of waiting, and these platforms allow AI to run asynchronously, away from the operator’s computer, freeing them to do whatever.
Even though the essay I’m paraphrasing (Hey @swyx, The End of Localhost) anticipates otherwise, Web IDEs and cloud dev environments have been slowly adopted by the mainstream. For me, AI-Native dev environments look like the next evolution of Cloud Dev Environments, with the huge benefits of coding from the mobile.
The other day, I took the bus to the office and solved 3 issues with my iPhone on the go. By the time I got to the office, I only had to review the code and make a few tweaks, and it was done. What’s that, if not the ultimate developer experience?
README Driven Development
In this new era, code is no longer the “main dish” in software development. On the other hand, technical specifications are now becoming first-class citizens.
It reminds me of the concept of README Driven Development, introduced by GitHub's founder Tom Preston-Werner 14 years ago. When thinking of natural language coding, it seems relevant than ever. RDD advocates for crafting a clear and concise README before coding, serving as a blueprint for AI to generate accurate and aligned code. In a way, what we’re seeing now is RDD becoming a reality.
The promise of this new workflow is bigger though. Well-crafted specs provide valuable documentation of the thought process behind a project, preserving the rationale and decisions for future reference.
Mixed with some more LLM magic, this could be the key to understanding software projects and retaining knowledge in the organization.
AI is Not Good Enough.
Skepticism regarding AI's ability to develop software is understandable. Concerns about code quality, security, and maintainability are valid, as AI-generated code may be prone to errors or inconsistencies. Is it worth it? Will you end up spending more time reviewing code and fixing AI bugs?
The ones who will benefit the most are those who can find the right balance between AI-assisted automation and human oversight and can identify the appropriate use cases.
There is a learning curve. Coding in natural language is a skill most of us need to learn and improve (how many of you truly master technical writing?)
Prefer low-value tasks over high-value tasks. AI (usually) lacks the domain knowledge and contextual understanding that human developers bring to the table, so it works better for routine tasks: write a new endpoint, a unit test, add error handling or do a limited refactor.
“Good enough boilerplate”: If you’re looking for 100% working code exactly as you imagine it, come back in a few years. Expect 80% and be prepared to read and modify someone else’s code though, and you’d be surprised how powerful these tools are.
Final Thoughts
It’s going to be a long adoption process. Developers will not shift away from their beloved companions tomorrow morning, and IDEs will be here for a long time (I’m here to remind you some people still enjoy using VIM!).
While interfaces, tools, and practices might change, the essence of the software engineering job remains the same: Analyze a problem, and propose a beautiful, simple solution.
When we started Fine, we made a critical product decision: We decided to build Fine outside of the IDE. Though many people urged us to build it as an IDE plug-in, it was clear to us that AI would play a much more significant role in software development than just code completion.
Even though GitHub Copilot Workspace is a competing product with Fine, I felt somewhat proud to see them following similar design patterns and UX decisions we made months ago 🙂
I am excited about this future. I’ve been writing code for the last 15 years, and I’ve never enjoyed it as much as I did for the last year. Extraordinary times for everyone excited about Natural Language Coding!
Hey, it’s Dan 👋 I’m writing a practical guide about Natural Language Coding and AI in software engineering. Do you have any ideas? Let’s chat.