Software acts like substitute of human mind with much more processing capacity. Combining software with hardware (machine) acts like a substitute of complete human with mind to process and body to perform action.
Software has already replaced many tasks which were done by human mind earlier (individual or collective) such as ERP, Accounting, Business Intelligence… List will increase in future.
Combining Software with Machine to make smart machines is still on early evolution path. Basic rule based control systems can be performed now and this will evolve into smarter machines, appliances, cars, gadgets …
What is the future of software? To understand this, one needs to understand how mind works?
How does a human mind work?
Mind performs three broad categories of functions
*Analysis – Currently done by existing software but can be improved
*Imagination – Currently not done by existing software
*Information Collection – Currently existing software only receives user input – later self information collection by all senses – read, touch, hear, see
Comparing mind functions with existing software capabilities, It looks software capabilities are getting there. What can be the problems in future software evolution?
The biggest problem is that human mind doest not always work logically or in a rule bound way
Human mind has its own imperfections and biasness based on
*Emotions: Mood, Righteousness, Empathy, Hatred
*Selective Thinking: Exceptions, Processing full or only part of information
*Psychological Profile: Risk, Reward, Failure
*Prior Information: Curiosity, Information Gathering, Social Condition
Future of software development will demand development of competencies to understand above imperfections and incorporate them in software development.
For eg .. Risk management software tools in financial world failed because software were analytical, rule based and didn’t incorporate human imperfections. One can argue that software was right and human understanding of risk management was wrong. Well if end result is not achieved than blaming weakest link doesn’t offer any comfort.
Efforts of future software development will be to achieve this imperfection. If imperfection is achieved then distinguishing line between Man and Machine will get blurred.