Proactive Software
One day we'll have AI Coworkers.
But it's a bit fuzzy what exactly that will mean from a software developer's point of view.
Obviously human-like chat will be a part of it -- that's ChatGPT's big contribution. And software flexibility will be a part too -- that's the contribution of AI Agents.
But for the past few months, I've been thinking more and more about a third pillar, proactivity, that I think is going to play a critical and distinct role.
So I wanted to collect my thoughts about what exactly it might mean.
Imagine a Proactive Colleague
The whole idea is really captured by this one contrast below. Imagine two different colleagues:
- Someone whose shoulder you have to stand behind and instruct to do everything, or else nothing gets done.
- Someone who initiates and does work on their own, checking in for confirmation and feedback.
The former maps to traditional software: it only does what you sit there and tell it to do.
The latter maps to what I'd like to call proactive software: it does its best to be autonomous, checking in with you rather than waiting for you to use it.
The Spirit of Proactive Software
Proactive software is any software that helps you continue to do your job even after you've left your desk, as if you were still working. Like the world's best intern.
I think it's distinct from other AI+software concepts we're all experimenting with right now:
- Chat interfaces aren't actually required to be proactive.
- Copilots are tools for coworking with AI; they don't do work on their own.
- Agents are a means of flexible computing, not an end. I think proactivity is an end invariant of means.
Basically: any software can be proactive if you build a ghost which uses it not just with you, but for you, while you're away.
Designing for Proactivity
Just like traditional software design includes plans for data layout, tenancy, access control, etc, I think future builders will plan for proactivity.
Here's a specific list of requirements that might involve. It's a fun exercise to go through an app you've built -- or use often -- and assess it from these angles.
I'll use the running example of sales lead generation below.
It must accept high-level objectives
Classic software is a hammer. It sits there waiting for you to use it, ignorant of why you're using it.
Proactive software knows your end-goal so it can autonomously pursue it for you.
- Reactive: Offering a search box over your lead database.
- Proactive: Asking you who your ideal customer is.
It must manage business workflow
Classic software contains the data structures to organize a workflow, but you've got to perform the evaluations and actions to advance data through that workflow yourself.
Proactive software drives your workflow forward on its own, based on goals and milestones you've given it. Where it can’t, it reaches out to you.
- Reactive: Offering a drop-down to classify a lead as "qualified", "closed", or "abandoned"
- Proactive: Evaluating and classifying qualified leads automatically.
It must brainstorm creative approaches
Classic software has nothing to say about creative strategy. It’s an organizational tool -- you're the user of it.
Proactive software is constantly generating and evaluating new ways to use itself, all based on the end-goal you've given it.
- Reactive: Providing a text box so you can write an outbound email template.
- Proactive: Generating a proposal to send outbound emails, ideas for what they could be, and then drafting personalized messages to each recipient for your review.
It must take initiative
Classic software waits for you to use it.
Proactive software uses itself. Until it no longer can -- then it reaches out to you. You decide how much leash to give it.
- Reactive: Remembering to log into your software on Tuesday morning.
- Proactive: Getting a message from your software with a mix of results, questions, TODOs, and pre-drafted work. Just like a stand-up meeting update.
It must measure and adjust
Classic software reports metrics about how you're using it and the data within it.
Proactive software measures progress toward your end-goal, and it adjusts its behavior to improve the odds of meeting target metrics.
- Reactive: Displaying how many new leads were closed this week.
- Proactive: Automatically performing new lead search & outreach because your closed leads aren't on track to meet the weekly target.
It must communicate like a good team member
Classic software sends reactionary email alerts.
Proactive software drafts the updates you'd expect from a teammate at a standup meeting.
- Reactive: Random notifications about coworkers clicking on things.
- Proactive: Updates about progress toward your goals, with requests for help and analysis about performance.
Proactivity applies to all software
What intrigues me about this thought experiment is that it offers a very clean pathway for existing software in the face of AI.
For sure, AI is already causing a rethink & rewrite of a lot of existing software.
But proactivity is a way to rethink.. and then adapt existing software.
Proactive software is your current software.. just with an AI ghost that continues to use it after you've clocked out for the day.