Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
AI Microsoft Programming Software Technology

Microsoft Research Developing An AI To Put Coders Out of a Job (mspoweruser.com) 338

jmcbain writes: Are you a software programmer who voted in a recent Slashdot poll that a robot/AI would never take your job? Unfortunately, you're wrong. Microsoft, in collaboration with the University of Cambridge, is developing such an AI. This software "can turn your descriptions into working code in seconds," reports MSPoweruser. "Called DeepCoder, the software can take requirements by the developer, search through a massive database of code snippets and deliver working code in seconds, a significant advance in the state of the art in program synthesis." New Scientist describes program synthesis as "creating new programs by piecing together lines of code taken from existing software -- just like a programmer might. Given a list of inputs and outputs for each code fragment, DeepCoder learned which pieces of code were needed to achieve the desired result overall." The original research paper can be read here.
This discussion has been archived. No new comments can be posted.

Microsoft Research Developing An AI To Put Coders Out of a Job

Comments Filter:
  • by Anonymous Coward on Thursday February 23, 2017 @09:04AM (#53916599)
    they keep changing.
    • Don't worry (Score:5, Funny)

      by Anonymous Brave Guy ( 457657 ) on Thursday February 23, 2017 @09:32AM (#53916761)

      Changing requirements aren't a problem. All you need is to define a language where they can be specified precisely, and hire someone who can translate your real world requirements into that language. Once you've got those, you can still do away with programmers because the new magic code generation tools will do everything else for you.

      • It's even easier than that. Just specify that requirements must be delivered in the form of functioning code.

      • Re:Don't worry (Score:5, Insightful)

        by ranton ( 36917 ) on Thursday February 23, 2017 @10:31AM (#53917157)

        Changing requirements aren't a problem. All you need is to define a language where they can be specified precisely, and hire someone who can translate your real world requirements into that language. Once you've got those, you can still do away with programmers because the new magic code generation tools will do everything else for you.

        Sounds like you are describing a compiler.

        Just as programming tools today are much better than those used in the 80s and 90s, the tools used by programmers a decade or two from now will make developers far more productive. IMHO we have already reached a point where the more valuable work is in requirements elicitation and architectural design as opposed to writing code. I imagine in 20 years writing code will be like being a CAD operator today in both the level of training required and pay scale.

      • by raymorris ( 2726007 ) on Thursday February 23, 2017 @12:11PM (#53917877) Journal

        Indeed this "new" tech (copy pasting junk from Stackoverflow) can't handle simple tasks like division, or modulus.

        One programming task I handled, we already had a function which basically computed some averages, using division and a few other simple operations. To simplify, lets's just say the core function was something like quotient(x,y), which would return X divided by Y. That was useful. The customer very much wanted a slightly different version. They wanted quotient(x). That was the requirement for the software, compute quotient(x). I'd like to see any AI produce code for that. I, a programmer, did eventually get the customer what they needed.

        My current assignment I'm working on today is similar. It's basically "write an SQL query which returns the list of software products we have in our database, and for each list all of the operating system versiona they can run on". Sounds simple, right. The relevant data is a table of about a million rows in this form:

        SoftwareID - ProgramName - Vendor
        1 - Firefox - Mozilla Foundation
        2 - bash - FSF
        3 - jQuery - jQuery Foundation

        I'd love to see some IA that writes a query to get, from the above table, information about which OS versions each software package can run on. That's my task as a programmer, the requirements set by the product manager. I'll take care of the need, get the job done. I may also strangle my product manager, but that's a different topic.

    • by Big Hairy Ian ( 1155547 ) on Thursday February 23, 2017 @10:34AM (#53917177)
      Funnily enough most of the projects I work on the requirements get written after the software is complete.

      Sadly I'm not kidding about that but looking at the summary it sounds analogous to when sound samples were used to replace session musicians with the exception that you describe the music you want and the computer goes away and splices a load of sound samples together into a piece of music which matches your description. Somehow I don't think John Williams needs to worry about his job

      • by Oswald McWeany ( 2428506 ) on Thursday February 23, 2017 @11:04AM (#53917383)

        Most of the projects I work on the requirements NEVER get completed. It's usually someone popping by the office saying "I need an app to do X" to which I ask a few questions and the answer is usually "I don't know- just write the app".

        I either hit the target- or redo parts of the app after deployment because the business user doesn't even know what they want until they have something and it is either "it" or "not it".

  • by Baron_Yam ( 643147 ) on Thursday February 23, 2017 @09:10AM (#53916623)

    Can we just hold progress back another 40 years or so? I'd like to be cold in my grave before the world changes so much I can no longer find my place in it.

    Also, the massive social upheaval during the transition period between our current system and whatever replaces it is likely to be extremely unpleasant for the average person.

    • Can we just hold progress back another 40 years or so?

      Sure. Just fight MGI/UBI/COLA and mission accomplished.

      In an efficient world, the most talented people would produce the best stuff, and we would use it. In this world, everyone produces a lot of shit and only a few people get to use the best stuff because it is buried under feces.

      You don't have to worry about finding your place in the world if your place in the world isn't tied to your economic output. You can simply exist. There is more than enough to go around if we cut out the waste simply for the purpo

      • From each according to their ability, to each according to their need.

        It's a beautiful thought, but unfortunately it is completely incompatible with human nature, which is evolution's response to reality. Resources are scarce and everyone's competing for them to ensure their genes survive. Part of that creates greed, envy, and hoarding... consumer culture.

        I'm sitting here conversing with people around the world, in a climate-controlled environment, with what's probably a pretty impressive understanding of

        • Since I'm NOT worried about whether the Gods are going to punish me, not worried about whether I'll make a kill on the next hunt, or if the flint spear I have will be good enough for the job... I'd say our system's working out fairly well. There's always room for improvement, though.

          If you know where your next paycheck is coming from, if your basic needs are met and you can sleep without economic anxiety at night, You are the eight percent.

          Damned right there's room for improvement.

  • by OzPeter ( 195038 ) on Thursday February 23, 2017 @09:11AM (#53916631)

    Who is this "Al" and why does he keep trying to put everyone out of work? It seems like the best thing for the economy^w Human race would be to find Al and order a drone strike on him.

    ---

    And before all you ACs leap to eviscerate me for my inscrutable post, consider your glyphs.

  • This might be good at helping people who can't program get their ideas at least functional so they can't be shown as proof of concepts to actual programmers who can finesse it to make it proper.
    • Re: (Score:3, Insightful)

      by JBMcB ( 73720 )

      +1

      You can't just glue blobs of code together and expect a decent application to come out of it, unless you are coding an extremely simple app that only automates a few things.

      Think about the UI, for example. If there were a magic formula to make a good UI, then computers would be automating it already, and every app would look great. Not so much.

  • AI Snippets... (Score:5, Insightful)

    by Daerath ( 625570 ) on Thursday February 23, 2017 @09:12AM (#53916637)
    It really won't. So instead of having to manually code it, you need the exact same type of person to specify requirements with as much precision and detail as possible. An act they were already doing while coding. They will have to do this repeatedly while working out the bugs in their requirements (aka, code), and probably still needing to manually fix things here and there. So like, thanks for AI Snippets?
    • In this respect, it's not really any different from stuff genetic algorithms have been doing for decades. If you have a set of executable tests that can tell if the algorithm is working correctly, then you can evolve something that will pass the tests. Of course, you have absolutely no idea how it will behave on inputs not covered by your tests.

    • Remember all the drag and drop GUI tools that were supposed to do this? Turns out it's easier just to code it.
  • by Vapula ( 14703 ) on Thursday February 23, 2017 @09:13AM (#53916641)

    Given the long history of crappy code from Microsoft, it don't look so nice... more crappy unoptimized code...

  • Real coders? (Score:5, Insightful)

    by JaredOfEuropa ( 526365 ) on Thursday February 23, 2017 @09:14AM (#53916651) Journal

    piecing together lines of code taken from existing software -- just like a programmer might.

    Ehm, right. Because all coders do all day is cut & paste code snippets from StackOverflow. And those snippets are placed there by the tooth fairy?

    The idea isn't exactly new, and there have been some attempts in the past to build code generators which string together finely-grained mini routines from specifications into a working bit of software. But those have proved to be problematic, especially when it comes to maintenance, change requests, and multi-threading. Keep in mind that today's software engineering isn't straightforward input -> process -> output anymore; even the simplest apps have to deal with asynchronous stuff in UI, database and networking code, and the resulting problems aren't solved simply by piecing together the right code snippets. Not saying that there will never be an "AI" that is able to code, and research like this is pretty interesting, but in this form this isn't job threatening in the least.

    • Re:Real coders? (Score:5, Informative)

      by AmiMoJo ( 196126 ) <mojo@@@world3...net> on Thursday February 23, 2017 @09:38AM (#53916791) Homepage Journal

      People don't know what they want. Part of a developer's job is figuring out what the client really needs from a vague and typically clueless spec. Since that involves looking at how things are already being done manually or with other software, talking to people, making suggestions, building prototypes etc. it is hard to see how an AI could have much success at it.

    • Yeah, this is why I said the AI is not replacing my job. My job isn't writing code most of the day, most of my job is taking the specification I was provided, talking to the people who provided it, and turning it into something that wont collapse under its own weight

  • by marciot ( 598356 ) on Thursday February 23, 2017 @09:15AM (#53916655)

    Isn't writing out requirements in a way a computer can understand the essence of any programming language that has ever existed? So how is this any different? To truly get rid of programmers, the machine would need to look at the world, figure out what the problems were, figure out the requirements to solve it on it's own, and solve it. Then, yes, would programmers be able to look at kitten pictures all day.

    • >Isn't writing out requirements in a way a computer can understand the essence of any programming language that has ever existed? So how is this any different?

      It would seem this is another layer of abstraction that will make programming easier.

      I would guess that there will still be a language to learn so you can give instructions to the computer and get optimal results. If they do it correctly, it's possible there will be a whole lot of details a human will no longer have to track... except when you have

    • Forget coding, nobody actually needs to complete this project to the pointer where it can code, it only needs to get to the point where it can write research proposals.

    • Using AI to convert specs to code has been an active research area for a long time. But to essentially echo your point, specs that are specific enough to allow this are about the same complexity and require about the same amount of detail as writing the program.

      And in my limited industry experience, we worked more as hacks than as spec implementers anyway. Typically we wrote what someone asked for, then waited for them to come back and say that wasn't really what they wanted. Iterate until you move to th

    • "Then, yes, would programmers be able to look at kitten pictures all day."

      I see what you did there.
  • by sheramil ( 921315 ) on Thursday February 23, 2017 @09:15AM (#53916657)
    have you ever seen any of those hilarious blogs by artists and graphic designers who undertake commissions from people ignorant of, well, it seems ignorant of everything? the sort of people who ask you to take a full color photo of the finished work and fax it to them and then complain that they can't load it into microsoft word? "No, that blue is the wrong blue, we wanted a different blue. I don't know! A different blue to that one!"

    automated software production? this. times a million.

  • specifications (Score:2, Insightful)

    by Anonymous Coward

    Unless your a programmer, I don't think you can make specifications complete and detailed enough for this to work. I've heard many customers say "always do this" and come back later and say well except when that happens.

  • by inhuman_4 ( 1294516 ) on Thursday February 23, 2017 @09:17AM (#53916683)

    I can't wait to try and maintain code generated by pasting together random code snippets. And people thought old COBOL mainframe code was expensive to keep going, well hold on to your hats.

  • by vyvepe ( 809573 ) on Thursday February 23, 2017 @09:18AM (#53916687)
    I'm looking forward when Microsoft uses this AI to code Windows OS.
    It will be also the time when Linux will finally take over desktop :)
    • by vyvepe ( 809573 )
      On the other side, it will be also the time when managers will need to argue with their AIs about what to do. That can turn out to be kid of funny.
    • by Hydrian ( 183536 )

      I'm looking forward when Microsoft uses this AI to code Windows OS.

      AI gives them back BSD code.

  • Probably longer. But I remember such articles in 1976.

    Getting hard to take it seriously.

  • by Megane ( 129182 ) on Thursday February 23, 2017 @09:25AM (#53916717) Homepage

    The Last One (software) [wikipedia.org]

    As someone else said, it sounds like it mimics the type of programmer who spends all his time gluging together copypasta code snippets from StackOverflow without understanding them. So it will clearly put the hack (in the context of "hack writer") contractors from India with fake degrees out of a job first. The kind of coding I do doesn't have snippets to put together.

    • The Last One (software) [wikipedia.org]

      As someone else said, it sounds like it mimics the type of programmer who spends all his time gluging together copypasta code snippets from StackOverflow without understanding them

      Perfect problem for a genetic algorithm.

    • The fact that people are gluing code together from StackOverflow is what indicates the need for this type of solution. As has been mentioned in previous comments, the real work that (good) programmers do is to understand the nuances of the problem that they are trying to solve. You can get an 80% solution very easily. It just won't handle the corner cases correctly. And when you go to handle those, you spend a lot of time thinking an discussing about what the "correct" behavior should be. But once you'
  • by johanw ( 1001493 ) on Thursday February 23, 2017 @09:27AM (#53916737)

    before I believe it will work.

    I worked once on a very large project that tried to do something similar for the Dutch tax service: put the (ever changing) tax regulations in some form of specification language, and compile that to C# code. I was a contractor for some time on that project. After a 160 milion EUR budget overflow and some questions about it in the parliament the project was significantly reduced in its ambitions.

  • Nothing new or unexpected here. This is just another abstraction from machine language. Expect bigger, less efficient & less secure code.... same as we have each time we add another abstraction layer on.
  • by 0xdeadbeef ( 28836 ) on Thursday February 23, 2017 @09:34AM (#53916767) Homepage Journal

    The people who call themselves "coders" already do little more than paste together half-assed open source projects they find on github and snippets copied from Stack Overflow.

    Replacing them with an AI would increase the quality of software by orders of magnitude, and increase the productivity of everyone who can't be replaced.

  • "Is developing", not "has developed". I understand that Dr Frankenstein was developing a perfect human, made of snippets gathered from graveyards.

  • by mccalli ( 323026 ) on Thursday February 23, 2017 @09:36AM (#53916781) Homepage
    All you have to do is specify the requirements, then you can just graphically draw it and put the app together! That's it! That's all you'll ever need to do. And it will work, just like it did in the 90s.

    Actually, it will work exactly like it did in the 90s. Which is to say not at all, and to store up a load of 4GL take-out projects for the early 2000s...
    • You laugh but this is what ASIC/FPGA developers are going through right now. I'm old enough to remember the 4GL attempts from the 90's. A couple of the tool vendors (looking at you especially, Xilinx) are pushing the living hell out of tools that let you drag and drop blocks together and voila. You are correct that it works as well as it did 30 years ago.

    • The 4GL's of the 1990s were a terrible idea because they didn't ensure well-formed transactions. They had the clients send SQL directly to the database. They weren't a bad idea due to lack of expressiveness of the languages!
  • by Ecuador ( 740021 ) on Thursday February 23, 2017 @09:38AM (#53916797) Homepage

    Bad code is already perversive, it is much more common than good code. So, you write an AI that takes various snippets of, more likely than not, bad code and combines them. And this AI is still written by coders who, more likely than not, are not the best coders themselves, so the sum will probably be even worse than the parts... If Microsoft has great engineers working on fancy stuff like that, perhaps they should instead throw a couple to the Skype team for example (I don't know what they are doing, but they are slowly degrading what was a useful service).
    In any case, good coders already reuse libraries etc and end up doing the job of several coders that are inventing the wheel. And it is much easier for the non-technical person to communicate with a coder to describe the requirements, because an AI system would still need a specification language to describe things - it would just be a higher level programming language in a way.
    I remember I was told that when SQL first came out (SEQUEL) there was the idea that business users would be able to communicate with databases so db programmers wouldn't be needed... yeah, right.

  • by Archtech ( 159117 ) on Thursday February 23, 2017 @09:42AM (#53916833)

    "Called DeepCoder, the software can take requirements by the developer, search through a massive database of code snippets and deliver working code in seconds..."

    This I have got to see. By the way, I notice that the first thing mentioned is the proposed name. "DeepCoder" - well, with a name like that, how could anything go wrong? After finding that name, I expect the rest of the project was all downhill. So to speak. Erm...

    1. "...take requirements by the developer..." Expressed in what form? As random remarks over a cup of coffee - in which case the usual proportion of incorrect, incompatible and misconceived requirements can be expected, along with the standard quota of perhaps 90% of the requirements not being mentioned at all (because no one has thought of them). Or perhaps in some rigorously defined logical format, in which case we might simply call them "pseudocode" or "Model Driven Design" or perhaps "formal methods".

    2. "...search through a massive database of code snippets and deliver working code in seconds..." Ah, the long awaited "Frankenstein IDE"! Now you too can have a loving companion or friends stitched together from offcuts of raw liver and other offal. If only it weren't so easy to pass so airily over real difficulties to conjure up images of working code delivered in seconds. I wonder if Microsoft has thought of providing some kind of validation utility to make sure that the "working code" actually implements the requirements?

  • People have been announcing such things at least since the late 80s, possibly earlier.
  • They listen to the specs, misunderstand it first, then mistranslate it into some Indian language and explain it to some graduate of a diploma mill. He/She will add his/her own misunderstanding on top, search through the code they have written or seen in some application for some company in some project that has one key word that matches. They copy & paste the code and claim the project is done.

    Then it is up to the customer to test it, test it again, and make the code meet the specs through a complex e

  • This is the first numerical problem I ever did.
    It demonstrates the power of computers:

    Enter lots of data on calorie & nutritive content of foods.
    Instruct the thing to maximize a function describing nutritive content, with a minimum level of each component, for fixed caloric content.
    The results are that one should eat each day:

    1/2 chicken
    1 egg
    1 glass of skim milk
    27 heads of lettuce.

  • ... that can turn the harebrained buzzword/bullshit-laden confused and convoluted descriptions ("specs") of my marketing crew into a working product.
    No freakin' way. The AI would probably have a meltdown.

    My job will remain for a loooong time. If the rest of the population were able to formulate what they actually want, I'd be out of a job 10 years ago, with CASE tools taking my job. But that didn't happen. However, I might be the one discussion the new software with the AI. Looking forward to that. But then

    • ... that can turn the harebrained buzzword/bullshit-laden confused and convoluted descriptions ("specs") of my marketing crew into a working product.

      I just deliver a "Hello, World!" program, and when they say "WTF?" I say "Sure, it's got some bugs in it, but I got it out ahead of schedule!"

  • by The Evil Atheist ( 2484676 ) on Thursday February 23, 2017 @10:04AM (#53916977) Homepage
    Where are they getting snippets from? To me, this just makes GPL'ing my code much more attractive.
  • So you mean high level abstraction is the hard part and once a problem has been stated at sufficiently low level the lower levels can be standardized and needn't be recoded from scratch everytime ?

    I'm shocked!

  • This would be the "Do what I mean" instruction that developers have always dreamed of.

  • As any consultant will testify, most functional specs are either non-existent or complete garbage. How many times have you discovered the business use case was wrong, the user story was wrong and the functional specification wrong. The problem with software development isn't technical, it's a human problem. I seriously doubt within the next 30 years, AI will make progress on the problem of "humans don't know what the hell they want and change their minds".

    We have all these different development methodolog

  • This will end up like a lot of engineering design work outsourced to India, China, etc. Someoneses back in the home country will have to sort out all the bugs and crap (risky, tedious, thankless, unfulfilling work) while management pats themselves on the back and gets bonuses for having "saved money". And of course, competition for the thankless jobs will be fierce since so many will be under/unemployed. The past-promised cornucopia of jobs due to boomers retiring has been supplanted by automation and offsh
  • A few years ago there was a tool that did something similar for art: you drew a really rough line-drawing that just gave a sense of scale and position to each object. Then you labeled each object like "cheetah" or "motorcycle" and had one special label for the background, like "desert." Then it ran an image search: it would look for an image tagged with the same label, with roughly the same proportions as the outline. It auto-photoshopped it in, and viola! Instant art! One of the demo pictures was a ch

    • something like "content-aware fill" would work here? ;-)

      Yeah, you just spec it out with a lot of {...}, and let the AI fill it in.

  • Does this mean Steve Balmer will have to come out stage yelling "AIs! AIs! AIs!"?
  • This is going to be an inner-platform, not for a platform, but...wait for it...for a programmer.

    The Inner-Platform Effect is a result of designing a system to be so customizable that it ends becoming a poor replica of the platform it was designed with. This "customization" of this dynamic inner-platform becomes so complicated that only a programmer (and not the end user) is able to modify it.

  • So here's a question: What skillset would be needed to use this approach effectively?

  • by GuB-42 ( 2483988 ) on Thursday February 23, 2017 @10:54AM (#53917301)

    What many people don't understand is that describing things to a computer, no matter how, is what coding is. The programming language is just a facade. Managing highly complex tasks accurately enough for computers to understand is where the real skills lie.

    Just look at one example from the paper :

    A new shop near you is selling n paintings. You have k < n friends and you would like to buy each of your friends a painting from the shop. Return the minimal amount of money you will need to spend.

    And the output (modified to fit slashdot):

    k=int; b=[int]; c=SORT b; d=TAKE k c; e=SUM d

    What it proves is that the AI is great at answering test questions. However, in a production environment, no one is going to write and maintain a description like this.
    And it is just a tiny function. To match the complexity of a real-life program, you have to imagine the same kind of description but spanning hundreds of pages...

    Compilers didn't put coders out of a job, these AIs may be the next step but they still won't displace coders. Although it may require some skill adjustments, it won't fundamentally change the job.

  • by heikkile ( 111814 ) on Thursday February 23, 2017 @11:06AM (#53917403) Homepage

    ... there was this idea that we let people define their requirements in a formal sort of English, and let the computer write programs from that. That was called COBOL, in 1959, and the computing world hasn't been the same since.

  • search through a massive database of code snippets

    Does it also search through a database of software patents to make sure that it doesn't infringe?

    A better use of the AI in today's world would be to review all existing software patents, then generate as many non-patented concepts as possible and file for software patents on them.

    • by Jeremi ( 14640 )

      Does it also search through a database of software patents to make sure that it doesn't infringe?

      Right now it's using this database [xkcd.com], presumably they have a licensing contract with Randall Monroe that gives them permission to use the code.

  • Given a list of inputs and outputs for each code fragment, DeepCoder learned which pieces of code were needed to achieve the desired result overall.

    Maybe if you work for NASA, are building life and safety critical industrial software, or writing firmware for a pacemaker you get requirements that are this specific. In the other 99% of use cases a developer will be writing to, forget about it. The cost of specifying a problem to that level of detail is astronomical and also multiplies the cost of any change

  • I will consider it a success when I can speak to it and say "I want a piece of software that, without doing anything illegal or immoral, will make me a billionaire in under a year", and it works. Multi-millionaire in under a year is a partial success.
  • Let's look at 2 basic facts: 1. Programming is at least partially an art. Along with interpreting human requirements which are often the most difficult part of the any software designer's job. An AI can make basic shell classes, but after that, well, even user friendly language constructs have been found lacking after months or years of human involvement. So an AI doing that job for anything other than basic junior level tasks, is not going to be able to do the job at a professional level. Not for quite so
  • I took a Software Engineering class where we covered formal specifications. For even a simple piece of code, the formal specifications were longer than the code to cover all of the boundary conditions. It was faster and simpler just to write code. Using code snippets in not new. We call those libraries. I've used those all my life. My code specifies which libraries to use and how to tie those together. Also, random code written by other people are frequently crap. Who is going to vet the quality of the code
  • in my 30+ years of experience in "coding" 80 - 90% of my time is spent debugging/maintaining code. any idiot can string lines of code together to complete a narrow well defined task. as soon as you give it to a real user, they try to use it in ways you never thought of and voila, bugs... in addition, i have yet to work on a project where the requirements were even close to correct the first time (or the second, third...). schleprock

"Can you program?" "Well, I'm literate, if that's what you mean!"

Working...