While I work to complete my new book “AI-Driven API Design”, I’m keeping my posts here sparse (see below) and light (see my “Approved by Management” comic series). I’ll return to my story-telling posts later this year once the book is off my plate. -- mamund
For some time I’ve been working on creating self-driven, autonomous systems. I started GRAIL to understand what it takes to build software that can pursue goals without relying on a human to continually decide what happens next.
As a result, I have settled on a couple useful axioms. They are very compact but I find them helpful.
Designing Autonomous Systems
Designing autonomous systems means making enough of an environment explicit for programs to situate themselves within it, use a goal to determine what is relevant, decide what to do next, recognize success, and determine when progress is no longer possible.
Programming for Autonomy
Programming for autonomy means turning assumptions about an environment into explicit facts, relations, and capabilities so that programs can pursue goals within it without human intervention.
What Does This Change?
This has helped me move from asking, “What does the program need to do next?” to asking, “What does the program need in order to decide what it will do next?”
That shift has helped me focus on ways to implement autonomous solutions that work.
