I am not an expert on this specific topic, but I can say a few words. I will use the term "programming" to refer to software development (of any kind). > If you are in the camp that this isn't that hard, why hasn't it become mainstream? It's definitely hard, otherwise, we would have already some useful artificial programmers. > Why is creating AI that can code a hard task? Programming is actually a hard task because it often requires creativity and a deep understanding of the context(s), goal(s), programming languages, etc. In other words, it's a very complex task (even for humans), apart from the exceptions where you can copy and paste. Programming can probably be considered [an AI-complete problem][1], i.e. a problem that probably requires an AGI to be solved. In other words, if an AI was as capable as humans in terms of programming, then that probably means it is an AGI (but this is not guaranteed), i.e. programming is a task that probably requires general intelligence. This is why I say that programming is an AI-complete problem. However, note that being able to program is just [a necessary (but not sufficient)][2] ability that an AI needs to possess in order for it to be an AGI (although not all general intelligences, e.g. animals, may be able to develop software, but the definition of general intelligence is also fuzzy). AFAIK, no AGI has yet been created, and I think we are still very far away from that goal. Currently, most AI systems are only able to tackle a specific problem (i.e. we only have narrow AIs, such as AlphaGo). You could say that programming is a very specific problem too, but this is misleading or wrong, because, unless you just want to develop very specific programs in a very limited context (and there are already machine learning models, such as [neural programmer-interpreters][4], that can do this to some extent), then you will need to know a lot about other contexts too. For example, consider the task of developing a program that can detect signs of cancer in images. To develop this program, the AI would need to have the knowledge of an AI engineer, doctor, etc. Furthermore, programming often requires common-sense knowledge. For example, while reading the software specifications, the AI needs to interpret them in the way that they were originally meant to be interpreted. This also suggests that [programming requires an AGI (or human-level AI)][3] to be solved. (Finally, to address a comment, note that writing a 4-line program is not equivalent to writing a 10-line program. Also, the length of the program often doesn't correspond to its difficulty or complexity, so that alone is not a good measure of the ability to program.) > What are the barriers/problems we have to solve before we can solve this problem? I think that the answer to this question is also the answer to the question "How can we create an AGI?". However, to be more concrete, I think that, in order to be able to create an AI that is able to program as well as humans, we will need to be able to create an AI that is able to think about low- and high-level concepts, compose them and it will probably require common-sense knowledge (so knowledge representation). A typical supervised learning solution will not be enough to solve this task. See the paper [Making AI Meaningful Again][5], which also suggests that ML-based solutions may not be enough to solve many tasks. [1]: https://ai.stackexchange.com/a/12147/2444 [2]: https://en.wikipedia.org/wiki/Necessity_and_sufficiency [3]: https://ai.stackexchange.com/a/13262/2444 [4]: https://arxiv.org/pdf/1511.06279.pdf [5]: https://arxiv.org/pdf/1901.02918.pdf