Slashdot Mirror


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

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.

45 of 338 comments (clear)

  1. But the requirements by Anonymous Coward · · Score: 5, Insightful

    they keep changing.

    1. Re:But the requirements by Big+Hairy+Ian · · Score: 3, Interesting
      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

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    2. Re:But the requirements by Oswald+McWeany · · Score: 4, Insightful

      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".

      --
      "That's the way to do it" - Punch
  2. I know I'm being selfish, but... by Baron_Yam · · Score: 5, Insightful

    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.

    1. Re:I know I'm being selfish, but... by ranton · · Score: 4, Insightful

      I don't understand posts like this. Why do you want to waste 40+ hours per week on a job that delivers little in the way of satisfaction or pleasure? Even if you're a well paid programmer, you're probably working on something that doesn't interest you, and therefore isn't particularly fun or rewarding. Wouldn't you rather have more free time to work on something that is of interest to you and that you believe would benefit other people? I worked as a programmer for a few years when I came out of university, but I concluded that my free time is far more valuable to me than a decent wage. I now work in a low paid part-time job, and while I have no money and no retirement plan, at least I can spend most of my time on projects that interest me.

      I don't understand posts like this. You assume everyone has the same life priorities you do, and get satisfaction or pleasure from the same things.

      My job isn't the perfect job I would create for myself if money was not a concern, but it is quite close. I get to solve complicated problems for companies and get to offload most of the grunt work to more junior staff members. While I may prefer to work on projects with more social impact than making financial transactions more efficient, I prefer providing well for my family more.

      My children will attend arguably the best public school district in our state (paid for by my egregious property taxes), they won't need loans for even Ivy League colleges if they so choose, will have the option to take unpaid internships starting in high school instead of needing a part time job to pay for a car, and spend their childhood surrounded by other affluent families who will become their initial professional network once they become adults.

      I'm not saying my priorities are better than yours, they are just different. So while I understand why you don't choose a similar life as I have, I still don't understand why you think your way is best for everyone.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:I know I'm being selfish, but... by drinkypoo · · Score: 3, Interesting

      The world of code is more like this:

      Software is inherently different to hardware, so you make a valid point. Though in a more perfect world, in which interoperability was forced by hook or by crook (so, if you don't use standards, your code repo gets raided until people can figure out how to interoperate with you) the software world itself would probably be more streamlined anyway as those who have built their existence on lock-in become eliminated.

      Arguably though, for software all that has to be done is protect open source and Free Software, because eventually it will destroy all other software. It has a tendency to surpass commercial software given enough time and attention, and it has a tendency to attract that attention in proportion to the need — as Linux has proven.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. Re:I know I'm being selfish, but... by computational+super · · Score: 2

      That was my first thought, too - if this is successful, it may change the nature of "programming", but won't obviate the job classification. What it WILL do, which CASE tools, and UML, and DSL's, and "AngularJS" and every other miracle time-saving product did, is convince people who don't know how to use those tools that a) programming is easy-to-trivial and b) should be more or less a minimum-wage type of paper-pushing task. The reality is, all of these things actually end up making programming mentally harder, because you have to understand what those tools are doing on your behalf in order to troubleshoot them when they don't do what they should have done, but I don't see that resonating with the Illiterati that are running the show these days.

      --
      Proud neuron in the Slashdot hivemind since 2002.
  3. Who is this "Al" by OzPeter · · Score: 4, Funny

    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.

    --
    I am Slashdot. Are you Slashdot as well?
  4. For people who can't program by whoozwah · · Score: 2, Insightful

    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.

    1. Re:For people who can't program by JBMcB · · Score: 2, Insightful

      +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.

      --
      My Other Computer Is A Data General Nova III.
  5. AI Snippets... by Daerath · · Score: 5, Insightful

    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?

  6. Yes... more crappy code by Vapula · · Score: 2, Insightful

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

  7. Real coders? by JaredOfEuropa · · Score: 4, Insightful

    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.

    --
    If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    1. Re:Real coders? by AmiMoJo · · Score: 4, Informative

      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.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
  8. Coding requirements by marciot · · Score: 4, Insightful

    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.

    1. Re:Coding requirements by wasteoid · · Score: 2

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

      I see what you did there.

  9. dealing with the human element by sheramil · · Score: 4, Funny
    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.

  10. specifications by Anonymous Coward · · Score: 2, Insightful

    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.

  11. Maintenance by inhuman_4 · · Score: 2

    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.

    1. Re:Maintenance by Kergan · · Score: 2

      Just have the AI do a full blown rewrite.

  12. That is great. by vyvepe · · Score: 4, Funny

    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 :)

  13. Re:Oblig. XKCD by OzPeter · · Score: 5, Interesting

    https://xkcd.com/1185/

    OT but I believe that XKCD has reached the level where it is the embodiment of the old joke where the prisoners (or whoever) sit around telling jokes by reciting the joke's index number. Sometimes you don't even have to look at the XKCD cartoon, you just look at the number in the link and go "yep, that's applicable". (Although in this case I had to look).

    --
    I am Slashdot. Are you Slashdot as well?
  14. Because it worked so well in 1981 by Megane · · Score: 4, Insightful

    The Last One (software)

    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.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  15. Re:Kill the H1b visa people by Anonymous Coward · · Score: 2, Funny

    Don't forget we need to build a 2000-mile wall on the Mexican border, and stop all Muslims from entering the country.

    Taking those tough but common sense steps will protect your job from automation.

  16. I want to see the results first by johanw · · Score: 3, Interesting

    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.

  17. Don't worry by Anonymous+Brave+Guy · · Score: 5, Funny

    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.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Don't worry by Anonymous+Brave+Guy · · Score: 2

      Ah, cunning! So it's like my idea, but now you don't even have to hire someone to do the translation, because your boss/customer already did that bit. Nice. Definitely no programmers involved anywhere now!

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Don't worry by ranton · · Score: 4, Insightful

      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.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    3. Re:Don't worry by mnemotronic · · Score: 3, Interesting

      Of course there are many requirements specification languages. I doubt if any of them cover tribal knowledge or situations where the people being relied on to provide the specifications, sensing that they were about to be automated out of a job, supplied incomplete or inaccurate data. In this case, the Microsoft tool would be demonstrating GIGO -- Garbage In, Garbage Out. On the other hand it would do it much faster and more efficiently that a team of developers who, if they were diligent, who start asking questions about inconsistencies in the spec.

      --
      The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
    4. Re:Don't worry by thinkwaitfast · · Score: 4, Informative

      Yeah, my company has been working on this for over twenty years and is probably a world leader in the field and has been used to develop systems for as long as I've been around with it. It's the first I've heard anyone call it AI. I think it's due to the labeling of what's considered intelligent being dropped.

    5. Re:Don't worry by david_thornley · · Score: 2

      Maybe we could define a COmmon Business-Oriented Language to do this in.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  18. This is different from the status quo how? by 0xdeadbeef · · Score: 3, Insightful

    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.

  19. Oh, is it 4GL time again? by mccalli · · Score: 4, Informative

    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...

  20. Oh, really? by Ecuador · · Score: 2

    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.

    --
    Violence is the last refuge of the incompetent. Polar Scope Align for iOS
  21. And they said it could never be done! by Archtech · · Score: 4, Insightful

    "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?

    --
    I am sure that there are many other solipsists out there.
  22. Re:Wanted! by Anonymous Coward · · Score: 2, Insightful

    More likely HR will expect 10 years of Deep Coder experience the moment businesses start using it.

  23. Re:Nothing to worry about by the_Bionic_lemming · · Score: 2

    *this*

    I've tries to use their service with a timer code - all iterations - and it just doesn't work

    If their "AI" is drawing on their "code Base" people will be asking for refunds.

    --
    _ _ _ Go for the eyes Boo! GO FOR THE EYES!
  24. Licencing by The+Evil+Atheist · · Score: 2

    Where are they getting snippets from? To me, this just makes GPL'ing my code much more attractive.

    --
    Those who do not learn from commit history are doomed to regress it.
  25. You're assuming specs are well written by f00zbll · · Score: 2
    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 methodologies to try and fail ideas fast and avoid wasting time. Often what a business person says isn't what they want. If someone invents an AI that can read minds, then AI writing software will be practical. Until then, garbage in != usable software.

  26. Re:Kill the H1b visa people by Big+Hairy+Ian · · Score: 3, Insightful

    Great so now the computer will write the program the customer doesn't want because he didn't really know what he wanted when he wrote the requirements. How will this AI piece cope with software maintenance & bug fixes?

    --

    Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

  27. Great but it won't put coders out of a job by GuB-42 · · Score: 4, Insightful

    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.

  28. Once upon a time... by heikkile · · Score: 3, Insightful

    ... 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.

    --

    In Murphy We Turst

  29. In reality, this can't handle division, or modulus by raymorris · · Score: 3, Interesting

    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.

  30. Re: Programming languages by courteaudotbiz · · Score: 2, Insightful

    Looking at how FrontPage generated simple HTML markup language behind the WISIWYG interface, programmers have nothing to fear for their job...

  31. Re:This is pretty obvious. by thinkwaitfast · · Score: 2

    We had self diving cars in the 1980's, a few of which drove all the way across the US. I think they go back to the world's fair in the 1930's. The problem is being able to handle all scenarios that might arise like a police officer standing in the road giving you specific directions.