This announcement is fascinating. Not because it announces the generation of documentation for software systems, but because of the motivation. Let's take a look.
"Today, developers report they spend an average of just one hour per day coding."
This is not new, of course, but it's great to see it out loud. Indeed, writing occupies a small fraction of software development. I am actually surprised it gets to 1h per day, actually.
But then comes this:
"They spend most of their time on tedious, undifferentiated tasks such as learning codebases, writing and reviewing documentation, testing, managing deployments, troubleshooting issues or finding and fixing vulnerabilities."
There exist indeed "tedious, undifferentiated" tasks in software development. But they do not quite look like what they list here. Take deployments, for example.
#DevOps commoditized much of the tedious parts. The same applies to testing. And if people are still testing or deploying manually, the solution is not AI.
That said, there exist tedious tasks carried out in software engineering. In particular, developers spend most of their time reading through textual artifacts as a way to figure out what to do next. This is the most manual way to extract information from systems. Only the solution is not AI here either. We can automate a great deal of this activity by creating custom tools. Like we did with testing and deployment.
AI can play a role, but before we can exploit it for software engineering, we have to understand the foundation of software engineering.
For example, let's say that you want to use
#GenAI for testing purposes. Would you consider an AI which takes the code and answers if there are bugs or not without showing you any test artifacts? Or would you rather prefer a solution that generates a test that you can investigate and run yourself? The former might sound tempting, but it's only the latter that can be a useful software engineering tool because it can be explained and adapted to various needs. Testing is the goal indeed, but the engineering way is to get the tests that you can run yourself to check.
The same applies to any topic, including documentation. If you ask an AI for a diagram of the code, would you trust it? How do you know if what it tells you is correct and complete? The alternative is to ask it for a tool that you can use to create the diagram. That tool can be explained and adapted to various needs.
That's the engineering path. But we'll only find that path if we, as engineers, expect it. Today, engineers are just fine with reading as a means to learn about a code base. It's tedious indeed. And much of it can be automated away. Just not with AI. As long as we want to make decisions about what gets deployed, AI is only an optimization in this space.
p.s. There is another point that this announcement reveals. It sees code as a utility. This perspective misses a large source of value creation: code as encoded knowledge.
#MoldableDevelopment