Author Topic: Will they automate programmers out of existence ?  (Read 832 times)

benali72

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 2561
    • View Profile
Will they automate programmers out of existence ?
« on: January 30, 2017, 06:08:55 PM »
Will they ever automate programmers out of existence ?

I recall many such efforts -- CASE, 4 GLs, specification languages, expert systems. They all contributed to higher productivity or addressed certain needs, but none ever fulfilled their hype of eliminating programmers. Seems most big companies still have their armies of Java programmers or COBOL maintainers. It's just that these techies reside in India or elsewhere offshore these days, instead of in the U.S.

What do you think?

Code Refugee

  • Wise Sage
  • *****
  • Posts: 1489
  • To Serve Man
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #1 on: January 30, 2017, 06:30:31 PM »
Not in our lifetimes.

Not sure if by ever you include very long term.

Maybe in 500 years Star Trek future computers are a ship computer voice and you tell it things and it just does them. But even then, you have to know enough about the problem to specify something about it and give some constraints, and the computer had to have been set up to handle those scenarios in some sense. The situation where the computer can handle a general situation is the one where the computer is sentient. I don't believe in that singularity stuff, I think it's nonsense. Even if a computer passes a Turing test I don't think that means anything. Just because it sounds the same as a person in conversation doesn't mean it is actually alive. I can read a book and there's a voice of Huckleberry Finn and he sounds like a real boy from the 1800s. That doesn't mean he is a real alive person.

I D Shukhov

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 6195
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #2 on: January 31, 2017, 05:11:30 AM »
Will they ever automate programmers out of existence ?

I recall many such efforts -- CASE, 4 GLs, specification languages, expert systems. They all contributed to higher productivity or addressed certain needs, but none ever fulfilled their hype of eliminating programmers. Seems most big companies still have their armies of Java programmers or COBOL maintainers. It's just that these techies reside in India or elsewhere offshore these days, instead of in the U.S.

What do you think?

Like you say, there doesn't seem to be any evidence of decreasing numbers of programmers.  There's probably not a great economic incentive to automate programming entirely because why bother when U.S. system analysts can spec out programs and have them implemented at $5/hour offshore.

Notice, though, that core functions are being automated such as version control and automated testing.  Java technologies automate a lot of Java programming.

Maybe the reason why programmers are not decreasing, despite the huge number of labor-saving frameworks, is because the number of problems which have information-based solutions keeps growing.  E.g. VR creates the possibility of realistic training and entertainment experiences and programmers are needed to write the VR programs.

This is pretty cool:  http://news.stanford.edu/2017/01/25/artificial-intelligence-used-identify-skin-cancer/.   As time goes on anything knowledge-based will be automated, so the amount of work will grow.





Be Prepared.

The Gorn

  • I absolutely DESPISE improvised sulfur-charcoal-salt peter cannons made out of hollow tree branches filled with diamonds as projectiles.
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 21652
  • Gorn Classic, user of Gornix
    • View Profile
Explaining this in a different way - information and knowledge theory
« Reply #3 on: January 31, 2017, 10:02:23 AM »
Everyone in IT *KNOWS* that point and click building of complex solutions by laypeople is a fantasy and has never, ever been shown to work well in real life.

WHY is this? Without digressing into comparisons of past failures and just saying "see, it failed before, so doomed to failure now."

I think the problem is very fundamental and on the level of Nyquist theorem in communications theory (look it up, I worked hard on an engineering degree decades ago where I learned that crap.) In other words it's a conceptual impossibility.

Here's the problem:

ANY automation - software or mechanical - that transforms a complicated task into a simple directive - is far more complex to build than to simply do the end work yourself.

- It's much harder and much more complex to design and build an auto (or even a bicycle) than it is to walk 10 miles on foot.
- It's much harder and much more complex to design and build a compiler than it is to write hand coded assembly language for a medium sized application.

These are two "machines" - a car or bike, and a compiler - that each do single tasks/rote work, with varying types of user input.

Now take the problem of designing and building a software application. Suppose your compiler, libraries, and tool chain are givens. You "just" design the UI and write the code.

NOW abstract that process of you building that application. Your task is to build an application that builds such applications itself.

The thing is, computer science is always at a certain prevailing level of sophistication. Green screens in the 60s and 70s, gigabyte level displays and a hundred tasks that the computer does in the background today.

I think it would now be fairly straightforward to design a system that allows higher level end users to create apps such as green screen 1960s timesharing applications. An operator of such a system would find the specification and build of such apps to be fairly straightforward.

And that kind of app builder could probably be readily built today by some members of this board.

But NOBODY wants that level of end result today. They want a 2017 UI and app builder that creates vintage 2017 look and feel and operational sophistication.

Impossible by definition with today's tools to build such a tool before the next paradigm shift in user interfaces, etc.

It was just as impossible in 1968 to design an app builder tool that high level users could use to create 1968 level applications.

This is the way it is, period. I'll entertain studied arguments to the contrary but look in your heart and you know I'm right, period, end of story, no discussion necessary. 

The creation of app builders that actually create something useful and sophisticated demand extremely higher levels of sophistication to create than the generated apps themselves.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.

The Gorn

  • I absolutely DESPISE improvised sulfur-charcoal-salt peter cannons made out of hollow tree branches filled with diamonds as projectiles.
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 21652
  • Gorn Classic, user of Gornix
    • View Profile
Part II of what I just posted - little business case
« Reply #4 on: January 31, 2017, 10:35:51 AM »
I just characterized a problem of time, effort and expense.

It's probably entirely possible to build such a tool.

I hold that it will never be economically practical to create such a product or application that is truly useful across an interesting cross section of application types.

Because the cost of development, plus profits, would have to be recovered from the sales of such a system to organizations that require this tool. The effort and resources would be so high to create such a meta-tool that there's probably no business case for developing such a tool. The tool would have to be priced much higher than the yearly cost of a small development team.

What if a license to CRUDDezyn '17 cost an organization $1 million? They still need to hire someone (an analyst) who can "steer" the thing, feed it specifications. So they still have an analyst role in house.

They only eliminate developer seats if the app can deploy its own apps seamlessly and with no technical effort. Probably highly unlikely.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.

The Gorn

  • I absolutely DESPISE improvised sulfur-charcoal-salt peter cannons made out of hollow tree branches filled with diamonds as projectiles.
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 21652
  • Gorn Classic, user of Gornix
    • View Profile
And Also... Maintenance
« Reply #5 on: January 31, 2017, 10:59:41 AM »
... which is a far higher component of the total cost of software applications that actually become useful, than the upfront development cost.

Creating a tool that automates maintenance is pretty much a quantum level beyond the effort and design difficulty of creating an "expert app builder."

Since many "developers" wind up being rolled into maintenance, you're stuck hiring developers to keep old stuff running (and the business going) anyway.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.

I D Shukhov

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 6195
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #6 on: January 31, 2017, 11:18:21 AM »
I'm intrigued by CR's notion of automating programmers rather than creating app-builders.

How does a human become an expert Oracle developer for instance?  Watson could read a hundred Oracle books starting with tutorials and progress to Kyte's Expert Oracle.  There must be best practice development procedures an automated programmer could learn to perform.

Be Prepared.

David Randolph

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 4355
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #7 on: February 03, 2017, 05:54:24 AM »
To answer this question, we need to first define the scope of what is being asked.

A programmer does two different things:
a. digs in and understands the problem better than any one else
b. designs and writes the program to solve that problem

It is possible to create a machine that will select from a set of existing designs and writes a modified version of the predefined program that will run.

However, the first part is something that humans do far better.

Why? When Watson can analyze X-Rays better than humans can, why can't it do that for programming problems?

The problem isn't doing analysis on a specific domain. The problem is that the domain is constantly shifting. Thus, the human capacity for learning, coping with a changing environment, and changing outcomes is far greater than that of AI.

TechTalk

  • Wise Sage
  • *****
  • Posts: 555
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #8 on: February 05, 2017, 05:29:41 AM »
Excellent points made by The Gorn.

I do remember reading (a long time ago) about Charles Simonyi and the company he started after leaving Microsoft. I believe his goal (a code generator?) had something to do with transforming diagrams into finished software.

A person could do a Google search using these keywords if they wished to learn more: intentional programming Charles Simonyi

I D Shukhov

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 6195
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #9 on: February 09, 2017, 02:58:15 AM »
To answer this question, we need to first define the scope of what is being asked.

A programmer does two different things:
a. digs in and understands the problem better than any one else
b. designs and writes the program to solve that problem

It is possible to create a machine that will select from a set of existing designs and writes a modified version of the predefined program that will run.

However, the first part is something that humans do far better.

Why? When Watson can analyze X-Rays better than humans can, why can't it do that for programming problems?

The problem isn't doing analysis on a specific domain. The problem is that the domain is constantly shifting. Thus, the human capacity for learning, coping with a changing environment, and changing outcomes is far greater than that of AI.
Technically, a programmer is someone who turns a design into an implementation.   An automated programmer (AP) wouldn't do requirements analysis and design.  These would be done the old-fashioned way by humans who would continue to gather requirements and have design reviews, etc.  The AP  would know how to use software technologies like Oracle and full-stack web programming to turn these designs into code.   The AP would get handed the program specs in a design language.

It would have a memory of low-level and enterprise design patterns.

Right now, an AP wouldn't be much good for maintaining existing programs, but it would be excellent at maintaining code it had written.   As time goes on when more code is written by the AP maintenance costs would go way down.   Since maintenance consumes most of a software budget, this would be the best reason to have an AP.

The AP could easily adhere to the practice of agile development.  It would write its own automated tests, use a version control program and write incremental code.  The longest part of its sprint cycle would be for humans to sign off on what it had done.  Development and testing would take about 60 seconds.





« Last Edit: February 09, 2017, 04:10:33 AM by I D Shukhov »
Be Prepared.

Code Refugee

  • Wise Sage
  • *****
  • Posts: 1489
  • To Serve Man
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #10 on: February 09, 2017, 07:01:31 AM »
Quote
Technically, a programmer is someone who turns a design into an implementation.

Well that's just like your opinion man.

Here's mine:

http://www.developerdotstar.com/mag/articles/reeves_design_main.html

I D Shukhov

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 6195
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #11 on: February 09, 2017, 12:24:59 PM »
In the companies I worked for, which were mainly government contractors, there was a functional design document  from which a critical design document was created.   Programming started after the CDD was created.  At least that's how most big projects got started.

This is probably old school, and may have always been a government requirement.   Probably most places use some form of agile development nowadays that is less top-heavy on design.

An automated programmer is going to need the expected inputs defined and what form the output is going to be, as well as what resources in the form of data and software it can use.  It would create a solution based on what design patterns it knows about.

Be Prepared.

David Randolph

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 4355
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #12 on: February 10, 2017, 06:31:19 AM »
The AP could easily adhere to the practice of agile development.  It would write its own automated tests, use a version control program and write incremental code.  The longest part of its sprint cycle would be for humans to sign off on what it had done.  Development and testing would take about 60 seconds.

An AP writing its own tests???? You never want the programmer writing their own tests. Because they would perpetuate the same blind spot.

Basically, once you are using an AP, you don't have the same tests. The unit tests are meaningless for the very reason you stated. However, system tests are still needed and would be written by the humans, not the AP.

I D Shukhov

  • CCF Winner's Circle - Supporter
  • Wise Sage
  • *
  • Posts: 6195
    • View Profile
Re: Will they automate programmers out of existence ?
« Reply #13 on: February 10, 2017, 07:27:29 AM »

An AP writing its own tests???? You never want the programmer writing their own tests. Because they would perpetuate the same blind spot.

Basically, once you are using an AP, you don't have the same tests. The unit tests are meaningless for the very reason you stated. However, system tests are still needed and would be written by the humans, not the AP.

Unit tests are not meaningless because they verify that incremental changes in the Agile development model of "release early, release often" don't break anything.  They get run every time a build is initiated after something is committed to the version control system.

You're right though, someone other than the programmer should have a look at them.  There could be an automated tester which creates the unit tests separately from the programmer.







Be Prepared.