The next generation of software is a paradigm shift that requires engineers to think differently about how they design programs. AI is heavily theorized. Imaginations create fantastical futures comprised of superhuman computers. While these ideas are entertaining to think about, they are certainly a distraction from reality.
Most software today is built classically using the same style of programming as 20 years ago. Languages are updated, infrastructure improves, but the underlying philosophy remains.
This presents a massive opportunity for AI implementations to pioneer in fields where software already dominates.
For the last 20 years computers have been replacing manual processes across every industry. These silicoln systems combined with communication networks enable calculation and data management at rates that far exceed the human capacity. The introduction of this virtual dimension of business created an evergreen world of opportunity and innovation.
Most businesses today have a software component to them. Some companies are on the edge of their industry, trying to breakaway from the norm with the virtual solutions they produce; but even then, majority of software being built follows a classical architecture.
The classical architecture of software involves code that is written literally, in a constant manner. It is code that will make the same decisions given the same circumstances. For example, a familiar peice of classical code might look like:
getFavoriteColor(var userId) {
var color = database.run(
"SELECT favColor
FROM UserPreferences
WHERE userId = :userId"
)
return color
}
Using a mindful approach for the same favorite color example from above might look like:
getFavoriteColor(var userId) {
var color = determineFavoriteColorBasedOnRecentBehavior()
return color
}
As behavior changes, the favorite color will change. As time goes on, the favorite color can follow the person without manual intervention.
Engineers should build programs that follow people and learn from them and move away from programs that require users to manually adjust configurations. Programs that are dynamic not static.