The new approach to building software with AI

Traditional software simply executes explicit instructions provided by Human Intelligence.

This blog is powered by software. And like most software we use, it functions based on explicit instructions.

When you are on a blog post, the code explicitly specifies to deliver content from a CMS or database that's tied to the blog post and then styles it as per explicit HTML and CSS-based instructions. When you are on the home page, the code explicitly asks to display the list of 50 recent blog posts from the database. 

This software is really useful as it can execute more precisely, quickly, cheaply, and on a larger scale than humans. But it is also simply doing what the human developer explicitly instructed it to do. 

Enter - Software powered by Artificial Intelligence. Human instructions not needed. 

Let's take this ChatGPT Plugins demo. 

ChatGPT is able to: 

  • Create a meal plan
  • Generate a visual of the meal
  • Shop for the ingredients
  • Tweet about it. 

No explicit instructions were provided by a developer for these tasks. No explicit instructions on how to create a meal plan or how to draw it. No explicit instructions to use Instacart API to shop or Zapier API to tweet, and no explicit instructions on how to use those APIs.

Instead, the software is figuring out how to execute the user's request based on its training on a large corpus of general knowledge and using the descriptions of the different APIs and tools available to it. 

It is MAGICAL and a dramatic shift in how software works. To be clear, AI has been used in software for a long time now. But nearly all of it has been for very narrow and well-defined tasks like ads, shopping, or content recommendations, and not something like this that can broadly understand and solve any problem. This dramatically changes both what software can do and how we write software 

Software is now more dynamic. It can understand any user input, then think and do or say whatever is needed, without explicit instructions...to some extent.

If you have used Plugins or AutoGPT, you'll also know that it is still far from foolproof. While it's magical in its dynamism and promise, it is quite slow and error-prone, unable to do complex tasks with large contexts, and results can vary with every run. It also costs, as Sam Altman says it, an "eye-watering amount of money". 

The new way to build software 

We don't have to write explicit instructions in a programming language anymore - it's not only unnecessary and it also cramps the ability of AI. But we also can't rely on AI (yet) to be fully dynamic, autonomous, and general purpose. 

We need a middle approach that leverages the power of AI but also has the reliability of traditional software. Something like -

  1. Specify the goal and experience, with the AI's help to draft and refine it. 
  2. Provide UI/tools/code/services/data building blocks to the AI, along with their descriptions and how to use them. AI can also assist in developing these blocks. Some of these blocks can have AI embedded, but limit those to robust use cases to maintain reliability. 
  3. Ask AI to stitch together the blocks to solve the goal.  
  4. Verify it works for a few scenarios and iterate with AI's help. 
  5. Finally, save or publish it for future use. 
Unlike the traditional explicit approach, we need to provide only rough guidelines in natural language and offer the building blocks/services, dramatically reducing the barrier, cost, and complexity of developing software. 

And unlike the ChatGPT Plugins or AutoGPTs' dynamic approach, we will be pre-verifying and saving it, so that it's more reliable and faster at run time.  

I have verified this definitely works for simple applications like a to-do list. It is possible but can get challenging for larger applications with multiple states. 

As AI evolves and becomes better, and when there's a general-purpose intelligence that can do anything we want dynamically and quickly, then there's no need for this middle approach. But I think that's still a long way away, and that will be a very, very different world in many different ways. 

Notes