Yes, you heard it right! In this article, I am going to explain why it is so (in as many ways as possible). Now, if you are a IT Project Manager or a Technology Architect who has used the term 'building an intelligence in this software' with the client or in front of a developer, and you get pissed off easily when someone challenges your usage of IT terms, then you need to quit reading right now.
What is intelligence?
Intelligence is the ability to take a decision in the unseen, unfamiliar, and unvisited circumstances. How good/effective your decision is, decides how intelligent you are. For example, consider the situation of joining a new office at a new place. You haven't asked for the directions to the office and only know the address of the office. You need to make some decisions now which includes, from where to take the bus, how long to wait for the bus, which bus to take, how much cash/change to keep with yourself, should I be consulting someone for the information, from whom to check this information, etc. There will be tons of decision you will take when you will be in a new situation. Most likely your decisions will be based on not only HOW, but it will include WHY and WHAT too. Next time you will have fewer decisions to make, or may even some new ones like should I take taxi instead to save time, is there another bus that can take me to my destination in lesser time, etc.
How a software behaves?
Your application software is nothing but a bunch of instructions which gets executed by an engine. You can make your software simulate decision making by putting some if-else conditions to check for the data available to it, but that is all you can do with it. For checking a new KIND of situation/condition, you'll have to update the code/configuration. Software cannot take a decision on its own, it’s your hardwired logic programmed into the code that make your software do what it does. You can only make your application LOOK flexible in terms of different decisions it is making through a FINITE set of ifs-elses, but that also only to an extent.
Does software evolve?
A software represents implementation of logic. It is a logic of how a functionality will work in the system. By definition logic only represents HOW. Therefore, by looking at a software one can only make out how a certain logic is implemented, not WHY or WHAT. Which is why, in most cases you will need to know what functionality a code is implementing to understand the code. This is precisely the reason why you cannot make a generic software that debug the code on its own. Since you will have to tell that software first about what is the right functionality. No finite sets of configuration and if-elses can make it debug a code debug a WHY or WHAT error. It can at max debug only HOW errors. So, this myth of software evolving as per the situation is a terrible myth.
Major Problem! How will you debug an intelligent software?
If you are still up for the challenge, then think about a software who actually have a mind of its own. It is taking decisions on its own. Now, you would have met a lot of misbehaving and uncontrollable teens who think that whatever they think and do is right. Imagine that your software too has a brain of its own, and now it is no longer functioning the way you want it to. In normal softwares, you can do the dry run of the logic and change what is not right. However, this intelligent software is more than a normal machine, it may be taking a decision that it think is the right one. It is no longer dependent on logic now and he can even question your decisions too since it can do the 'WHY' and 'WHAT' part also. Scary thing is - it may not let you debug itself.
Hopefully, this will clear you head and ease out various doubts and questions. I know that this word 'Intelligence' looks great on PPTs and works as a marketing gimmick. Please feel free to post your questions, doubts, concerns etc. on this controversial topic. If you have ever claimed to make something intelligent (not simulation of intelligence, which is still quite honest and reasonable), please feel free to post it here. I'll try to help you understand why it is not so.
Experts Exchange is a tech solutions provider where users receive personalized tech help from vetted certified professionals. These industry professionals also write and publish relevant articles on our site.
Ask questions about what you read
If you have a question about something within an article, you can receive help directly from the article author. Experts Exchange article authors are available to answer questions and further the discussion.