
15 segments available
Today's guest is Martin Fowler! Martin is chief scientist at ThoughtWorks. He is one of the original signatories of the Agile Manifesto and author of several legendary books, among which there is Refactoring, which shares the name with this podcast and this newsletter. With Martin, we talked about the impact of AI on software development, from the development process to how human learning and understanding changes up to the future of software engineering jobs. Then we explored the technical debt metaphor, why it has been so successful, and Martin's own advice on dealing with it. And finally, we talked about the state of Agile, the resistance that still exists today towards many Agile practices and how to measure engineering effectiveness. (03:29) Introduction (05:20) Development cycle with AI (08:36) Less control and reduced learning (13:11) Splitting task between Human and AI (14:48) The skills shift (20:17) Betting on new technologies (27:22) Martin's Refactoring and technical debt (29:24) Accumulating "cruft" (33:14) Dealing with "cruft" (37:24) The financial value of refactoring (42:04) Measuring performances (46:19) Why the "forest" didn't spread (56:11) Make the forest appealing — This episode is brought to you by https://workos.com — Show notes / useful links: • Cruft, Tech Debt, and High quality software is cheaper: https://martinfowler.com/articles/is-quality-worth-cost.html • Measuring Developer Productivity with qualitative stuff too: https://martinfowler.com/articles/measuring-developer-productivity-humans.html • Code review isn't just pre-commit: https://martinfowler.com/bliki/RefinementCodeReview.html • Thoughtworks's Haiven tool: https://github.com/tw-haiven/haiven - Building Boba AI: https://martinfowler.com/articles/building-boba.html — You can also find this at: - 📬 Newsletter: https://refactoring.fm - 🎧 Spotify: https://open.spotify.com/show/7Luds9dmzZDoDC8Q7EMbSw - 📱 Apple: https://podcasts.apple.com/us/podcast/refactoring-podcast/id1719137305 — For inquiries about sponsoring the podcast, or appearing as a guest, email: luca@refactoring.club
Martin Fowler emphasizes the importance of developing junior developers into senior ones within organizations. He highlights ThoughtWorks' strength in fostering talent and the growing necessity for companies to invest in their workforce as technology evolves. This segment underscores the value of internal growth and knowledge transfer in software development.
"One of the most important properties of a junior developer is the fact that you can turn them into a senior developer. And that's one of the crucial things that any organization needs, it needs that a..."
In this segment, Martin discusses the early stages of AI integration in software development. He shares insights on how AI is changing coding practices and the overall development lifecycle, emphasizing the need for developers to adapt and learn how to effectively utilize AI tools in their work.
"Hey, Martin, welcome and thank you so much for being here with us today. Well, thank you for having me. Good to see you. Thank you. So, Martin, you really need no introduction. You are the chief scien..."
Martin reflects on the dual nature of AI's influence on productivity and code quality. While AI can enhance individual throughput, it may also lead to less stability and more bugs in team projects. This segment raises critical questions about the balance between increased code generation and the control developers have over that code.
"Well, I guess my primary thought is that it's still relatively early days, both in the development of the technology and in our understanding of how we can best use the technology. I am not particular..."
This segment explores the concern that reliance on AI may hinder developers' learning opportunities. Martin argues that understanding the code and the business context is crucial for effective software development, and that AI should not replace the learning process inherent in coding.
"Yeah, and also one of the troubling aspects of this is also evidence that it reduces learning. And so if a development team is not learning as much, both about the code that they're creating, the syst..."
Martin discusses the potential division of labor between humans and AI in software development. He suggests that AI could assist in generating both code and tests, but emphasizes the importance of human oversight in evaluating AI-generated drafts to ensure quality and relevance.
"not clear to me at this point. I mean, it strikes me that AI can be equally useful at coming up with a first draft of tests, as it can be with first draft of code. And maybe as a critique of tests of ..."
In this segment, Martin addresses the evolving skill set required for software engineers in the age of AI. He highlights the necessity for developers to learn how to effectively utilize AI tools, suggesting that those who adapt will thrive while others may become obsolete.
"this? - Oh, it's definitely a skills shift, in the sense that one of the skills that we need to know is how best to utilize AI, right? Both in where it becomes useful, I mean, the skill of knowing th..."
Martin shares his perspective on the importance of embracing new technologies in software development. He discusses how organizations can leverage AI and other advancements to enhance their processes and improve overall effectiveness in delivering software solutions.
"listening to my colleagues. You know, I have colleagues who I've built a lot of respect for over the years. And when they have an opinion on things, I make a point of listening to that. So that's impo..."
This segment delves into Martin's insights on technical debt and the metaphor's success in the software industry. He explains the implications of technical debt on software quality and the importance of addressing it proactively to maintain a healthy codebase.
"question. Why has it it is really caught and resonated with people. I suspect because debt is in financial debt, is such a touchy and big issue for us in the rest of our lives. And therefore creating ..."
Martin discusses the concept of 'cruft' in software development, referring to unnecessary complexity that accumulates over time. He emphasizes the need for developers to recognize and manage cruft to ensure the maintainability and clarity of their code.
"problems. And the problems are sometimes because of the fact that it is only a metaphor and people try to stretch it further than it should be. But also because people don't necessarily have a good un..."
In this segment, Martin offers practical advice on how to deal with cruft in software projects. He shares strategies for refactoring and maintaining code quality, highlighting the importance of regular reviews and updates to prevent the accumulation of unnecessary complexity.
"best way I know to deal with keeping your internal quality high and therefore your costs low is to focus on those practices that minimize cruft. And that really does boil down to the kind of stuff tha..."
Martin discusses the financial implications of refactoring in software development. He explains how investing in refactoring can lead to long-term savings and improved software quality, making a strong case for prioritizing code maintenance.
"What's your experience? That is a difficult thing. In fact, you could argue, I think that that's the failure of people like me is that we haven't been able to spread the forest as widely as one would ..."
This segment focuses on the importance of measuring engineering effectiveness in software development. Martin shares insights on various metrics and approaches that can help organizations assess their performance and improve their development processes.
"Yeah, I have attention here. On the one hand, I do think it's important we come up with better ways of measuring. And I would say we'll grow more broadly assessing the effectiveness of engineering pro..."
Martin reflects on the challenges faced by Agile practices in gaining widespread acceptance. He discusses the resistance to Agile methodologies and the factors that have hindered their adoption in various organizations, providing insights into the future of Agile.
"where I wish I had a better memory, because I listened to that interview. And I don't remember what Kent said, so I can't just parrot it. I mean, in some ways, I mean, the problem is, we don't know wh..."
In the closing segment, Martin shares thoughts on how to make Agile practices more appealing to organizations. He emphasizes the need for clear communication and demonstrating the value of Agile methodologies to foster greater acceptance and implementation.
"element of that? - Oh, yeah. I mean, that's always the way with these things, right? I mean, you come up with something like this, and there's always the danger that something like that will happen. ..."
In the closing segment, Fowler encourages listeners to continue spreading the knowledge of effective development practices. He expresses gratitude for the conversation and emphasizes the importance of sharing experiences to foster growth in the software development community. This segment serves as a motivational call to action for developers.
"that's a big shame, because that's not what it is. Yeah, yeah, I just agree. But I guess as long as we have good patches of forests here and there, and we can thrive in there. - Yeah, patches of fore..."