Self Evolving Software
Software is something that is designed; designed for humans and with their best experience in mind. But many would argue our designs are flawed — what if software, instead of being designed, could evolve to the user.
Specifically from a UI perspective, for example, imagine if an interface could figure out how a user wants to accomplish a task and modify itself to better align with that. This could be as simple as the placement of a form submission button; or more complex, such as the layout of a page or steps to complete a process.
How would it learn what the user wants to do and how would it figure out what would be an improvement. As evolution happens, through trial and error. The first step is identifying the goal; for this it could define the outcome users eventually take as the “goal.” Then it could create multiple tests with different designs (A/B tests) to see which create the best experience for the user. The best experience could be defined by time spent, or by user feedback surveys.
This could be some form of software development tool. Enabling developers to focus on the higher level architecture and have this software write the details of specific tasks / flows.
Reminds me of Prof Tambo suggesting that software in the future may increasingly be written by other software and “developers” using tools to put it together.
I know these ideas are not new and self writing software is something we’re already exploring; but these were just some thoughts I had while reading The Evolution of Everything by Matt Ridley.