####Lets Look back
Programming in simple words,is the act of automation with abstraction. There are layers and layers of abstraction involved in any kind of programming .Our Computing and network technologies are powerful, but also insanely complex such that even your smartphone has more “stuff” going on in a millisecond than you could ever possibly keep track of or account for. We wrap that complexity in abstraction and automation; it’s the only way we can usefully access the power that it enables. When you write code, you’re simply configuring and controlling the automation with better abstraction.
For Example just think about what a compiler is doing. Taking a high level language and converting it into a machine language. This is a computer performing a complex programming task that used to take programmers lots of time.This is a small chapter in a long story. Technologies have been augmenting human intelligence since writing. Calculators, high level languages, libraries, code completion, and linting, have all automated programmer labor.
####Why not Today
We are just getting started.The kinds of tasks that computers are capable of is growing at a fantastic rate. The automation of software creation is already happening, there are a number of tools and frameworks out there but for each level in the software creation process that gets automated, there will always be one more level that requires a level of intelligence that is not available currently .
also is very difficult to automate software creation and have the software operate optimally in all situations, there usually a need for a human touch when there is a need to optimise software.
another reason why it may be difficult to fully automate the software process is testing. Bugs occur when a piece of software does not behave the way it promised to behave, now since a lot of software is written to talk to other software which in turn depends on another piece of software and so on, if one of the links in the chain has a bug, human intervention is required to perform a tweak or two to get things running smoothly again.
so human computer programmers will always be needed but may be only for purpose of testing and validation.
####So how does the Future look like
we will never automate the activity of automation itself , because humans will still be the ultimate deciders of what we want computers to do for us. And somebody still needs to make the hard choices that specify exactly what any particular mechanised system will do.
Only a classical programmer will disappear because doing programming by humans is far too expensive ,it will be a combination of a programming robot and a human who will act as a Test Engineer.
Programming will starts with a need, the interface between the tester and the programming robot will be designed to accept needs. needs are just restriction in form of test cases. programming projects will be defined as a round trip between writing test cases and testing the application.
####Software Engineers need not get scared
Software development, won’t be automated out of existence.Even though computers may understand you describing what you want in “plain English”, and produce a solution. Even if we assume that were feasible, most people can’t accurately describe their problem, let alone its solution, in plain English. Software engineers translate people’s problems and an appropriate solution into the kind of logical, sequential, modular and abstract world that technology exists in. The languages, platforms and tools used to do that are largely incidental to the big picture , a translator between humans and technology. we don’t see the need for that ever going away.