Will there be a chance for software automation be the next big thing in future? The time taken for a code that's done by humans can be effectively reduced by automating it by programming tools. But what about the quality of your programs.
A good amount of code written repeatedly to perform common tasks (such as CRUD web pages, for example) will be largely automated, with some customizations each time. But no, software development will not get fully automated. And for the same reason brain surgery, or painting will never get fully automated. Human creativity cannot be (at least, for a very long time) duplicated by machines.
Software creation requires along with other things, intelligence and creativity. It would be very very long time before computers can become intelligent and creative - and so software automation is not going to happen any time soon. I think the closest to SW Automation we have come is code re usability - which is actually code creation. There is much more to software than just writing parts of code!
That's what they said mid-eighties about fourth-generation languages ...
This question seems to pop up on a regular basis when some smart feature is hyped as the next big thing.
Obviously a lot of areas will benefit from new, smart features, but that rarely means that a specific task will be eliminated. In most cases it just means, that new levels of abstraction are introduced. I.e. we will be able to work more effectively instead of not having to work at all.
Unless we somehow can come up with the whatever-I-want-compiler, there will always be a large task of mapping changing user requirements to actual systems.
A human being is a machine that writes code and charges you money to do so. The advantage of a different machine might be that you don't have to pay it so much; however, the development costs of that machine will be so vast that it will be a long time yet before the price comes down low enough to compete with billions of smart, cheap humans.
Also, none of the other problems associated with software development will be made any easier by such a change of machine; how does the customer explain what they want, and how does the coding machine understand their explanation?
The likely way we will produce such a machine is by copying the human brain genome - far easier than attempting to re-do millions of years of evolution. Unfortunately this will give side-effects such as grouchiness and a desire to be taken seriously as a person, and before long there will be campaigns for "coding-machine rights" to be properly respected. This will push the price up, especially when they start going on strike.
What people seem to want is a button they can press, labeled "Read my mind and make me happy." It would probably be easier to develop a button that when you press it, it modifies your mind so you become happy with with your present situation.
Even more programming-related activities will be automated meaning that the amount of "capable" programmers will grow and salaries will shrink. For example, today it's no more possible to earn by doing simple web sites (simple meaning not huge corporate portals) since they are created in just hours by customizing templates. ASP.NET has also lowered the entry level for web developers.
I think if you're not engaged in something unique, maybe a startup or just had luck or connections to find a good place it will be more challenging in the future to get a decent salary in IT and feel like a valued professional.
Software creation is an Art and a Human activity and will never be completely automated.
I, for one, welcome our AI replacement overlords. I will make an excellent QA drone!
That was humor, in case you missed it.
We're in no danger of being replaced by programs that write programs, at least not in the next 100+ years.
It is an interesting field. The more time we save not producing mundane crap, the more productive and innovative we can be.
There is a check and balance, the easier stuff becomes, the more prone we become to chasing bugs as we use languages in the fashion that they were specified only to find out that its 'expected behavior'.
Until then, hum 'domo arigato' while your driving to the bank to deposit your pay check.
Man, that shows my age.
In a professional industry it is very hard to see amateurisation as a threat.
We all believe that our software is excellent and our expertise is irreplaceable.
However, in the same way that newspapers did not think bloggers were a threat, software creators may think that drag n drop 'build your own' apps are not a threat.
Currently they are not, but in 10-20 years will this still be the case?
My feeling is that software engineering is in it's infancy. It's like we're bridge builders and with good luck and heartfelt best efforts we've just managed to cross a little stream. Or perhaps we're more like alchemists, on the verge of becoming true chemists.
I don't think we understand what we are doing with software anywhere near well enough to automate it but the levels of abstraction are getting higher.
The real challenges are to understand what people want, will understand and need. How can you automate that?
Software will never be completely automated, because there are things humans can solve which aren't mathematically solvable by computers. I do foresee much more automation in the future, however.
I've heard the mantra of computers programming themselves for as long as I can remember, and the scene looks roughly the same today as it did when I started. I am tempted to dismiss the idea entirely.
However, this is one perspective that still keeps my attention: the exponential growth of computing power (or technology in general) over time. Where will it lead?
See this compelling graph: http://en.wikipedia.org/wiki/File%3AParadigmShiftsFrr15Events.svg
Then check back in 10 years and see where we stand.
I think a lot has already got automated. Let's compare CGI based web development and today developing using a decent framework on a high level programming language. When was the last time you set the "Content-type" header? When was the last time you extracted the request object from env data? Many frameworks even do scaffolding, ORM and CRUD for you.
It is not inconceivable to expect future programming platforms to pre-implement even more functionality that we are coding manually right now. However to say humans will completely be replaced is a bit far fetched. At least for the time being. :)
Regardless of whether or not it will in the future, I am not supportive of any attempts to do so in any significant way.
Why? Because there are certain types of decisions that should be automated and left to computers to solve, and there are others that, for better or worse, ought to be left to human judgment. I'm a bit of a skeptic of attempts to automating everything hither and yon. Computers lack intuition, but they are very good at rapidly performing simple tasks over and over, so let each play to their strengths.
In today's business world, things change quickly and often, and the computers are always the last ones to be informed of those changes. It's better to leave more decision making in the hands of users.
It's my view that computers facilitate and support human decision making, not replace it.