{
  "video_id": "7uiJkGodEAE",
  "channel_slug": "mitcsail",
  "channel_handle": "mitcsail",
  "title": "MIT Prof. Explains How AI Can (& Can't) Help w/Coding: Part 1",
  "duration_seconds": 739.0,
  "url": "https://www.youtube.com/watch?v=7uiJkGodEAE",
  "upload_date": "",
  "transcript": "(Logo whooshes)\nHi everyone, very happy to be here.\nI am Armando Solar-Lezama.\nI am a distinguished\nprofessor of computing\nhere in the Schwarzman\nCollege of Computing at MIT,\nand I'm also the associate director\nof the Computer Science and\nArtificial Intelligence Lab,\nalso known as CSAIL.\nAnd I'm very excited to be here today\nto answer all of your questions\nabout the future of AI and programming.\nAnd so let's start with\nthe first question.\nHow is AI reshaping the\nvery idea of programming,\nwhat it means to write code?\nAnd what remains uniquely\nhuman about that process\nas AI grows more capable?\nI think what's going to remain very human,\nregardless of whether\nyou're writing research code\nor whether you are doing\nbrand new development\nfor a startup, is going\nto be this question of\nhow do we actually tell the system,\nwhat is it that you're trying to do?\nWhat are you actually\ntrying to accomplish?\nAnd this is where software\ndevelopers bring a lot of their\nhuman knowledge and human\nexpertise about, you know,\nwhat should this piece\nof software actually do?\nAnd how do we break down what\nmight be a very high level,\nvery ambiguous statement of the goals\nthat we're trying to accomplish\nwith this piece of code\ndown to a very precise\ndescription of step-by-step\nwhat needs to happen in this process.\nAnd now exactly how you do it\nand the nature of the notation\nand the tools that you do\nthis are probably going\nto change quite dramatically\nin the next few years,\njust as they have changed\nquite dramatically,\neven in the time that, you\nknow, I have been working\nwith computers for example.\nBut I think what's going to\nremain very uniquely human\nis this creative process of figuring out\nhow do we bridge from the needs\nto what we expect this piece\nof software to do in a very precise way.\nSo question number two.\nDo you see programming\nshifting from writing code\nto simply expressing intent,\nwhere human specified goals\nand the AI handles the implementation?\nSo I think one of the\nthings to make clear is that\nalready today for people\ndoing software development,\na lot of programming is\nabout expressing intent.\nWe have a remarkable ability\nwith modern programming\nlanguages to abstract away\na lot of complexity so that\nthe focus of the programming\nreally is on expressing your intent.\nIt is true that people who are starting\nto program often struggle with the syntax\nand the unnaturalness of the notation.\nBut the fact of the matter is,\nonce people get to the point\nwhere they're writing\nsoftware for a living,\nthe core challenge becomes\nexpressing their intent\nat a level that is detailed\nenough and precise enough\nto actually build software.\nHowever, there is no question\nthat these new programming\ntools are going to allow us\nto be able to express\nthings more concisely,\nto be able to lift the\nlevel of abstraction\nat which we describe things.\nAnd to get around some\nof those limitations\nof the current programming tools\nwhere sometimes you still need to write\nvery large amounts of\ncode to do what you want.\nIn your recent CSAIL study\non autonomous software engineering,\nyou identified key roadblocks.\nWhich ones do you think will fall first?\nSo making predictions about\nthis technology is difficult\nbecause of how quickly the\ntechnology is developing.\nFor example, one of the things\nthat we've seen in recent\nyears is this reasoning models\nthat are able to think\nthrough challenging problems\nstep by step, and in many\ncases, solve problems\nthat they have never seen before in ways\nthat are really exciting and surprising.\nOne of the big challenges\nthat we see in tools today is\ntheir inability though, to\ndo this at scale, right?\nAnd to do this at the scale\nof reasoning that is required\nwhen you're dealing\nwith a large code base.\nHowever, we have a lot of tools coming\nfrom more traditional\nprogramming systems technology\nthat can help us manage some of that scale\nand manage some of that complexity.\nAnd so I do believe that\nas we get better at incorporating\nsome of that knowledge\nand some of those tools into\nthe current AI based processes,\nwe're probably going to\nbe doing much, much better\nat dealing with larger and\nlarger software systems.\nNow, this is just to one\ndimension in which current tools\nstill have shortcomings,\nbut I think it will actually\nmake a really big difference\nin terms of using these\ntools in the context\nof harder, larger scale\nsoftware engineering tasks.\nNow, we have another question.\nHow close are we to truly\nautomated debugging, testing,\nand refactoring at the scale\nof real production systems?\nSo all of these thing:;\ndebugging, testing and refactoring\ncome at many different flavors\nand many different scales.\nDebugging for example, you can\nhave a bug that is, you know,\njust one line of code that\nis doing the wrong thing.\nAnd once you identify it and\nfix it, the software works.\nWe have also seen bugs where you realize\nin analyzing the bug\nthat there is a problem\nin the way you structured your computation\nand in the way you\narchitected your solution\nthat actually is going to make\nthat bug really hard to fix.\nAnd so the first kind of bug,\nI think we're actually\nalready there, right?\nYou can already use many of these tools\nto identify those kind of\nfinger error type of bugs\nwhere all it takes is a\nsmall change in your code\nin order to fix it.\nAnd once you see it, it's very clear\nthat there is a bug there.\nBy contrast, the kind of bugs that arise\nfrom a faulty reasoning\nand faulty assumptions\nabout your problem domain.\nI think we're probably still many years\nbefore we can have systems\nthat can do that kind of debugging.\nAnd I think similar things have to do\nwith things like testing\nand refactoring, right?\nThere are some refactorings\nthat are very standardized\nand relatively simple\nand that can be implemented\npretty mechanically\neven with tools that\nexisted prior to LLMs.\nBut the really challenging\nrefactorings are those\nthat really require rethinking\nthe architecture of the code\nthat require very non-standard changes\nthat span the entire code base.\nAnd again, I think those\nare the kind of things\nthat we're probably many, many years\nbefore we would trust a\ncompletely automated tool\nto do them.\nSo I think to reframe these questions,\nI think it's not so much about the scale\nof the production systems,\nbut about the complexity of the task\nthat you're trying to perform.\nSo now we have a question\nhere about the research\nthat we actually do in my research group.\nThe question says, in\nDreamCoder, you showed\nhow AI can learn reusable abstractions.\nCould this lead to systems\nthat invent domain specific\nlanguages on the fly?\nSo for those of you who are\nnot familiar with my research,\nlet me give you a little bit of context.\nOne of the challenges\nin software synthesis\nin generating programs is\nthat you're often restricted\nto the building blocks\nand the abstractions\nthat were already there present\nin the existing software,\nin the libraries that the\nsystem has already seen\nin order to produce the code.\nAnd one of the things\nthat we're trying to do\nwith this DreamCoder project\nwas to allow the system\nto discover its own building blocks,\nto identify common recurring\npatterns in the solutions\nthat it generates, and abstract\nthese into new components\nthat can then make it\neasier to build new software\nin a similar way that humans\nbuild software, right?\nThe first time around you might just write\na whole bunch of code, but\nthen you start thinking about\nhow do I abstract this so\nthat the next time I have\nto solve the same problem, I\ncan build on the abstractions\nand I can build on these building\nblocks that I had before.\nAnd so this is a really\npowerful capability\nto give our AI systems.\nAnd I do believe that in\nthe future it will help us\nnot just write code\nand write solutions for the\nproblems we have at hand,\nbut actually allow us to do more\nof what real software engineerings do,\nwhich is plan for the future, right?\nAnd plan for those abstractions\nthat will not just help me\nsolve the current problem at hand,\nbut that will be useful\nto build the problems\nthat I'm likely to\nencounter in the future.\nSo the next question here\nis about natural language.\nWe talk to each other in natural language.\nWe would really like\nto talk to our machines\nin natural language as well.\nAnd this is one of the things\nthat this large language models\nreally brings to the table.\nAnd so the question here is,\nwhat role do you see\nnatural language playing?\nCould English or other spoken\nlanguages effectively become\nthe new programming interface?\nSo, no.\nBeing able to speak in\nnatural language is great\nand you know, this is\nwhat we're familiar with\nfrom the time we were children.\nThis is what we used to\ntalk to our colleagues.\nHowever, when it comes to\nbuilding really big systems,\nnatural language is very\ninsufficient, right?\nIf you've ever tried to read\nthe terms and conditions\nof some of the software you use,\nyou've probably run into\nsome of the limitations\nof natural language when it\ncomes to communicating things\nthat are really detail\noriented and complex, right?\nAny kind of legal document, you know,\nnatural language very quickly\nstarts feeling very unnatural\nonce you start having\nto communicate things\nabove a certain level of precision\nand above a certain scale.\nAnd this is where programming\nlanguages really shine, right?\nAs much as we like to\ncomplain about the fact\nthat programming languages are too brittle\nand they're too clunky\nand it's hard to learn how to use them,\nthe fact of the matter is,\nthey are the best notation\nand the most sophisticated notation\nthat we've been ever\nbeen able to come up with\nto describe really complex\nbehaviors at scale.\nAnd so, no, I actually\ndon't see natural language\ncompletely replacing traditional\nprogramming languages\nas the programming interface of choice.\nIt doesn't mean that there\nwon't be a really important role\nfor natural language in how we interact\nwith our programming tools\nand how we talk about our goals\nwith the software systems.\nBut at the end of the day,\nit's really important to have\nthat notation that can\nsupport the precision\nand the scale that we need\nfor software development.",
  "transcript_chars": 10129,
  "ingested_at": "2026-05-15T10:55:59.697699+00:00",
  "source": "channel",
  "yt_meta": {
    "view_count": 2800,
    "like_count": 122,
    "channel_id": "UCBpxspUNl1Th33XbugiHJzw",
    "categories": [
      "Science & Technology"
    ],
    "tags": [
      "MIT",
      "Massachusetts Institute of Technology",
      "CSAIL"
    ]
  }
}