SE Radio 683: Artie Shevchenko on Programmers as Code Health Guardians
Artie Shevchenko, author of Code Health Guardian, speaks with host Jeff Doolittle about the crucial role of human programmers in the AI era, emphasizing that humans must excel at managing code complexity. Shevchenko discusses these concepts and key takeaways from his book, including the three problems caused by complexity: change amplification, cognitive load, and the most severe, unknown unknowns. He suggests that maintaining code health should be viewed pragmatically as a productivity question, requiring an ownership mentality and product focus to balance short-term delivery with long-term maintainability. The episode also covers vital processes such as using design documents for upfront analysis and code reviews, highlighting four goals: high code quality, knowledge sharing, delivery speed, and -- most important for team productivity -- psychological safety.
This episode is sponsored by Monday Dev
Artie Shevchenko, author of Code Health Guardian, speaks with host Jeff Doolittle about the crucial role of human programmers in the AI era, emphasizing that humans must excel at managing code complexity. Shevchenko discusses these concepts and key takeaways from his book, including the three problems caused by complexity: change amplification, cognitive load, and the most severe, unknown unknowns. He suggests that maintaining code health should be viewed pragmatically as a productivity question, requiring an ownership mentality and product focus to balance short-term delivery with long-term maintainability. The episode also covers vital processes such as using design documents for upfront analysis and code reviews, highlighting four goals: high code quality, knowledge sharing, delivery speed, and — most important for team productivity — psychological safety.
Show Notes
Related Episodes
- Episode 633: Itamar Friedman on Automated Testing with Generative AI
- Episode 603: Rishi Singh on Using GenAI for Test Code Generation
- Episode 626: Ipek Ozkaya on Gen AI for Software Architecture
- Episode 520: John Osterhout on A Philosophy of Software Design
- Episode 662: Vlad Khononov on Balancing Coupling in Software Design
- Episode 574: Chad Michel on Software as an Engineering Discipline
Other References
- LinkedIn: @artie-shevchenko-67845a4b
- Complexity in Managing Modularization by Poul Kyvsgaard Hansen and Hongyi Sun (Computer Society Digital Library)
- Measuring Enterprise Architecture Complexity by Maria Eugenia Iacob et al. (Computer Society Digital Library)
- Managing Design-Time Uncertainty by Michalis Famelis and Marsha Chechik (Computer Society Digital Library)
- Managing Technical Debt Under Uncertainty by Suwichak Fungprasertkul and Rami Bahsoon (Computer Society Digital Library)
- Cognitive Complexity — An Overview and Evaluation by G. Ann Campbell (Computer Society Digital Library)
Transcript
*Transcript brought to you by IEEE Software magazine.
This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number and URL.*
Jeff Dolittle 00:00:18 Welcome to Software Engineering Radio. I’m your host, Jeff Doolittle. This episode will explore the role of human programmers in the AI era. Topics around machine learning and AI have come up frequently in previous episodes. Some examples are Episode 633 with Itamar Friedman on Automated Testing with Generative AI. Episode 603 hosted Rishi Singh on using Gen AI for Test Code Generation. And in Episode 626, Ipek Ozkaya joined Software Engineering Radio again to discuss Gen AI for Software Architecture. Today we’re hosting Artie Shevchenko, who is a former Google software engineer, ex-CEO, and founder of a startup. Currently, he’s a software engineer at Canva and a lecturer at ITMO University, which is famous for winning more programming world cups than any other university in the world. He is also the author of the recently published book Code Health Guardian, the Old New Role of Human Programmers in the AI Era. Artie, welcome to the show.
Artie Shevchenko 00:01:22 Thanks for having me.
Jeff Dolittle 00:01:24 Glad you’re here. The subtitle of your book, as I said, is the Old New Role of Human Programmers in the AI Era. In your view, what does it take for programmers to be successful in the era of AI?
Artie Shevchenko 00:01:37 I think there are three things you need to be great at. One is collaborating with AI. Another is delegating to AI. These two are pretty much on the hype right now. Everybody talks about Copilot and Cursor I guess. But there is also one more thing there. You really want to be better than AI at something. And if we were talking about software engineers, I would say your best bet is to become an expert in managing code complexity, just because complex reasoning is hard for AI and in software engineering, that’s probably the hardest problem we have. How do we keep our code bases reasonably simple? So yeah, honestly, I wouldn’t overfocus on learning these AI tools like Cursor and Copilot today and really spend some time to make sure that you’re ready for this new role of human software engineers, which is Code Health Guardian. That’s how I call it. And that’s the title of the book.
Jeff Dolittle 00:02:39 So you mentioned the idea of complexity in case it’s unclear to our listeners, help us connect. How does complexity relate to this idea that you describe about programmers as Code Health Guardians?
Artie Shevchenko 00:02:50 Yeah, definitely. When I say code health, I basically mean code that is simple enough, code that is reasonable, simple or maintainable. So if that’s the hardest problem in software engineering to keep our code bases simple enough, then it’s likely that we will continue to be better than AI in this for at least some time, maybe years, maybe even decades. So that’s basically the link there.
Jeff Dolittle 00:03:20 Why does AI struggle to keep things simple in your experience?
Artie Shevchenko 00:03:24 Complex reasoning is hard for AI, so it looks simple on the surface often. I think that’s what AI is very good at. It gives you an impression that it understands things, right? And it gives you an impression that, okay, that’s super simple. It’s like 1, 2, 3, here you go. But sometimes the real world has very significant challenges that need to be deeply understood, and that’s what humans still do better than AI at this point.
Jeff Dolittle 00:03:56 So would you say sometimes the AI comes up with simplistic solutions rather than simple ones? Okay. So your contention is that humans still need to maintain the sense of complexity management and the way we do it is by guarding the health of our code?
Artie Shevchenko 00:04:08 Yeah, exactly.
Jeff Dolittle 00:04:09 And you mentioned maintainability. Are there other aspects to code health, you mentioned simplicity and maintainability. How else would you characterize code that is healthy?
Artie Shevchenko 00:04:19 That’s basically the definition. If we’re talking about definitions, I just use the term health as an alternative to saying that is reasonably simple or pragmatically simple. But I like to think about code health as a productivity question. I think it is ultimately a productivity question. So if you think about human productivity or programmers productivity, the first thing that comes to mind is team productivity, right? There are a bunch of factors that make team either productive or not productive, like psychological safety, reliability, clear goals, clear responsibilities, impact, all these kind of things. But if we zoom in a little bit into an individual in a team, still in a reasonably productive team, you will have individuals which perform really great and in individuals that perform not that great. And historically, if you’re an engineering manager dealing with this issue, the question you’re asking yourself is, well, is it a skill problem or is it a will problem?
[...]