Stop Writing Code, Start Writing Docs
By The New Stack
Key Concepts
- Agentic Coding: The use of AI agents to assist developers in writing, debugging, and managing code.
- Google Developer Experiences (GDE): A broad umbrella of developer tools and services at Google, including GCP tools, AI agentic coding tools, and open-source projects like Go, Flutter, and Dart.
- Gemini CLI: A command-line interface tool that allows developers to interact with Gemini, Google's AI model, for coding tasks.
- Conductor MD: A methodology and set of markdown files used to guide AI agents in setting up and developing projects, emphasizing detailed planning and documentation.
- Tool Usage Models: AI models capable of using external tools to perform tasks, enabling more autonomous and complex operations.
- Context Management: The process of providing AI models with relevant information and data to ensure accurate and effective task completion.
- "Vibe Coding" / "Impossible Coding": An aspirational concept of enabling knowledge workers and consumers to easily create applications and tools using AI, blurring the lines between user and developer.
- Abstraction Layers: The progression of programming interfaces from low-level machine code to higher-level, intent-driven interactions with AI.
Google Developer Experiences and the AI Push
Keith Ballinger, VP and GM for Google Developer Experiences, discusses the broad scope of his role, which encompasses not only Google Cloud Platform (GCP) services like Cloud Build and Cloud Deploy but also a significant focus on AI agentic coding tools. This includes products like Gemini CLI, which is not exclusive to GCP. His team also oversees foundational development projects such as the Go programming language, Flutter, and Dart, along with the Google Developer Program.
Ballinger emphasizes that AI is not a separate entity but rather an integrated component that enhances all aspects of code development and operation. Investments in traditional developer tools, like those for the Go team, indirectly support agentic coding by providing robust static analysis and Language Server Protocol (LSP) capabilities, which can be leveraged by AI tools like Gemini CLI.
Career Path and Evolution in Developer Tools
Ballinger shares his career journey, starting in dev tools at Intel in the late 90s, followed by a significant period at Microsoft working on .NET and C#. He then transitioned to the startup world, co-founding companies focused on developer-centric solutions, including Standard Treasury (APIs for banks) and Xamarin. His experience at Xamarin, which was acquired by Microsoft, led him to manage developer services like Azure DevOps. He was also instrumental in the acquisition of GitHub by Microsoft, where he served as SVP of Engineering. His current role at Google continues this focus on developer productivity and innovation.
Google Labs and Project Jules
Ballinger clarifies that Google Jewels, a project he encountered at GitHub Universe, is a Google Labs initiative. Google Labs focuses on cutting-edge, riskier ideas, with successful projects potentially transitioning into mainstream product teams. Jewels aimed to create an AI agent tied to GitHub, specifically for managing GitHub issues semi-autonomously. This project provided valuable insights into applying agentic methodologies to other Google products, including those offered to enterprises.
The Evolution of AI in Coding: From Completion to Agents
Ballinger traces the evolution of AI in coding, drawing from his early interest in AI and his experience at GitHub building Copilot. He highlights the progression from simple code completion to chat-based interactions (like early Bard/Gemini) where the human acted as the "tool" for the AI, to the advent of agentic models capable of tool usage and semi-autonomous tasks. He notes the significant impact of tool-using models around mid-2023, which enabled more efficient and complex operations.
Best Practices for Agentic Coding
A key argument presented is the need for developers to move beyond "single-shot" interactions with AI. Ballinger advocates treating AI as a "co-worker" and applying established software development best practices, such as creating user guides, specifications, technical designs, and project plans. He demonstrates this methodology with his open-source project, "conductor," which uses markdown files to define project setup, style guides, workflows, and prompts for AI agents. This detailed upfront planning, he argues, leads to significantly better results.
The "Conductor" Methodology and "Aether" Programming Language
Ballinger showcases his "conductor" project as a practical example of his methodology. He explains how the conductor.md file guides an AI to set up a project, including creating detailed documentation like architecture and style guides. This process allows him to remain involved in the creative aspects of development without writing every line of code.
He then presents "Aether," a programming language he built using this methodology. Aether is designed for LLMs, aiming to reduce ambiguity. It's a Lisp-like language implemented in Rust, leveraging LLVM for compilation. Ballinger built Aether, a complete systems language, in about a month of nights and weekends, demonstrating the power of structured AI-assisted development.
Verification and Trust in AI-Generated Code
Regarding verification, Ballinger explains that he uses AI to assist in the process. He doesn't inspect every line of code, especially in languages he's less familiar with, like Rust for Aether. Instead, he relies on a test-driven development (TDD) approach where the AI writes tests, and then implements features until those tests pass. He prioritizes ensuring that examples and tests run successfully, treating the AI's output as a black box as long as it functions correctly.
Personal Pain Points and Creative Inspiration
Ballinger reflects on how personal pain points often drive software innovation, citing Linus Torvalds' creation of Git. For him, coding is often driven by a desire for fun and exploration. He uses AI tools to understand business issues and ensure product quality ("dogfooding"). His creative inspirations range from building a comic book generator using "nano banana" to developing an MCP server called "DevSense" for analyzing Git history.
The Resurgence and Evolution of the CLI
The conversation highlights the renewed popularity of the Command Line Interface (CLI) in the AI era. Ballinger attributes this to the terminal never being truly abandoned in modern development, especially within the open-source community. The CLI offers control, focuses on the "job to be done," and integrates seamlessly with existing workflows.
He envisions the terminal evolving further with AI capabilities, either through AI-enhanced command-line tools (like an AI extension for kubectl) or through more intelligent and agentic shells themselves (like Warp or potential AI-powered Bash/Zsh).
The Future of Programming Languages and Abstraction
Ballinger expresses an optimistic, though perhaps minority, view on the future of programming languages. He believes we are moving towards languages designed for LLMs, where developers focus on system design, architecture, and user interfaces, with the underlying code becoming a "black box." This represents a natural progression of abstraction, similar to the shift from machine code to higher-level languages. While acknowledging that some will always enjoy crafting code line by line, he anticipates a future where direct code manipulation is less prevalent.
He discusses the debate between natural language and more precise meta-programming languages for AI interaction. While initially skeptical of natural language, he now believes its ubiquity and the existence of precise natural language in fields like scientific writing make it a viable and accessible interface. He emphasizes the importance of strong writing and problem-decomposition skills, arguing that these are fundamental to both traditional programming and agentic coding.
Addressing the "Black Box" Nature of AI and Inference
Regarding the inherent "black box" nature of AI and inference, Ballinger acknowledges the ongoing research into understanding LLM internal workings. However, he draws an analogy to human collaboration: just as we don't need to understand the neurochemistry of another programmer's brain to work with them, effective communication and task completion are paramount with AI. He stresses the need for robust evaluation and monitoring techniques to ensure AI systems perform as intended, especially in production.
Gemini CLI: Early Days and Future Potential
Ballinger firmly believes that Gemini CLI is in its "first inning" or "warming up" phase, far from being a "solved problem." While it currently enables basic conversational interaction with Gemini and tool usage, significant advancements are expected in user experience (UX), problem decomposition (sub-agents), and workflow optimization. He envisions Gemini CLI evolving to handle more complex tasks, monitor runtime systems, and integrate deeply into CI/CD pipelines for automated debugging and deployment.
The Interplay Between CLI and Background Agents
The relationship between CLIs and background agents is explored. Ballinger notes that CLIs can easily function as background agents, spawning other instances to monitor and execute tasks. This pattern is being refined for better UX and integration. The open-source nature of Gemini CLI is highlighted as a key advantage, fostering community contributions and rapid iteration on features like sub-agents. He also points out that Gemini CLI is increasingly being built using itself, demonstrating its growing capabilities.
Context Management and State in Agentic Systems
Context management is identified as a critical area for improvement. Ballinger suggests that models are not yet adept at managing their own context, necessitating tools that give developers more control over the information provided to AI. Sub-agents are seen as a way to provide highly specific context for particular tasks. This leads to discussions about state management in distributed environments, the need for coordination among multiple AI agents, and the role of cloud providers like Google in offering the necessary processing power and infrastructure.
AI in Science and Mathematics: "Co-author" and Formal Verification
Ballinger shares his interest in applying AI to science and mathematics, particularly in paper writing, research, and formal verification. He demonstrates "Co-author," a tool built with a set of prompts and playbooks that leverages Gemini CLI to assist in scientific writing, LaTeX management, and figure generation. He likens the iterative development process of Co-author and his programming language Aether to the progression seen in AI coding tools, moving from interactive assistance to more autonomous capabilities. He believes AI can significantly accelerate scientific research by making scientists and mathematicians more effective.
"Vibe Coding" and the Future of Application Development
Addressing a question about "impossible coding" or "vibe coding," Ballinger envisions a future where knowledge workers and consumers can easily create ephemeral applications and business tools using AI. He cites McKinsey's projection of a 100x increase in software demand, highlighting the need for greater efficiency. He foresees AI facilitating the creation of custom business apps by individuals like marketers, with potential AI-assisted handoffs to internal engineering teams for more robust applications. This concept draws parallels to the rise of tools like Excel and Access databases in the past, but with the potential to avoid the need for complete rewrites.
Reading Recommendations
In closing, Ballinger shares his current reading list, including:
- A Shards of Earth by Adrian Tchaikovsky (novel)
- Seven and a Half Lessons About the Brain
- Works by Scott Meyers
- The Fourth Age
- A Theory of Justice by John Rawls (reread)
- Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin (highly recommended for creators)
Conclusion
The discussion underscores the rapid evolution of AI in software development, moving beyond simple code generation to sophisticated agentic systems. The emphasis is on structured methodologies, effective human-AI collaboration, and the continuous development of tools and interfaces like CLIs to enhance developer productivity and creativity. The future points towards a more abstract and intent-driven approach to software creation, where AI plays an increasingly integral role across various domains, including science, mathematics, and everyday application development.
Chat with this Video
AI-PoweredHi! I can answer questions about this video "Stop Writing Code, Start Writing Docs". What would you like to know?