Podcast thumbnail for Fundamentals of Software Engineering

Fundamentals of Software Engineering

Claim This Podcast

by Dan Vega, Nate Schutta

5.0(1 reviews)
7 episodes
Updated Daily
Accepts GuestsHas SponsorsLocation 🇺🇸

Podcast Overview

Programmer, coder, developer—there are any number of titles used to describe people who create software, but what does it mean to be a software engineer? Despite the way software is often taught, being a software engineer is about far more than simply producing syntactically correct programs.

Language

🇺🇲

Publishing Since

12/9/2025

1 verified contact email on file for Fundamentals of Software Engineering

Pitch yourself as a guest, propose sponsorships, or reach out directly to the host.

Recent Episodes

Episode thumbnail for Why We Hate Legacy Code (and How to Work With It Anyway)

May 5, 2026

Why We Hate Legacy Code (and How to Work With It Anyway)

<p>In this episode of Fundamentals of Software Engineering, Nate and I dig into the love hate relationship every developer has with the inherited code base. We unpack what actually makes code 'legacy', why working with it feels so painful, and the strategies that turn it from a burden into something you can confidently change. From Mike Feathers' definition ('legacy code is code without tests') to the realization that your code today will be someone else's legacy code tomorrow, we cover the full spectrum of why this stuff trips up even seasoned developers and what actually moves the needle.<br>We get into the rewrite trap (and why YOLO big bang rewrites usually backfire), the strangler fig pattern that has saved countless modernizations, and how AI is finally turning the years long mainframe migration into something realistic. We also talk about scout rule refactoring, the fresh perspective new joiners bring (and why managers should actually listen), the soft skills side that nobody warned us about, and what empathy for past developers looks like in practice. If you have ever opened a code base, thought 'what idiot wrote this?', and then realized it was you, this one is for you.</p><p>Key Highlights</p><p>🔍 What Counts as Legacy: Mike Feathers' definition is code without tests, but functionally it's anything you didn't write within the last couple of hours. Even your code becomes legacy faster than you think.<br>🛠️ The Rewrite Trap: Big bang cutovers are stressful, risky, and usually reintroduce edge cases that took years to fix. The strangler fig pattern lets you replace systems thin slice by thin slice with continuous demoable progress.<br>🤖 AI as a Modernization Force Multiplier: AI lowers the cost and risk of mainframe migrations and makes interrogating commit history at scale realistic. Use it to summarize code intent, surface edge cases, and answer the questions human patience won't.<br>🧠 The Missing Context Problem: The original developers retired, the why is gone, and only the what remains. Tribal knowledge walks out the door. That's the real challenge, not the syntax.<br>📋 The Edge Case Iceberg: Happy path is easy. The real complexity lives in last day of the month, mid year changes, timezone quirks, and the goofy combinations of dates and times. If those are not tested or documented, the rewrite will reintroduce them.<br>🌱 Fresh Perspective Is a Superpower: New joiners can challenge 'that's how we've always done it' assumptions that seasoned engineers no longer notice. Dan shares a real story of parallelizing an overnight batch job by simply asking 'does it have to be sequential?'<br>🧹 Scout Rule Refactoring: Always leave the code better than you found it. Better variable names, smaller methods, dead code removal, missing documentation. Small daily improvements compound into a maintainable system.<br>📈 Your Code Today Is Tomorrow's Legacy: Write the tests. Document the edge cases. Leave the breadcrumbs. The future maintainer might be you, and you will not remember why you made any of those decisions.</p><p>Resources &amp; Next Steps</p><p>📘 Fundamentals of Software Engineering (book), now in Portuguese and Korean translation<br>🌐 fundamentalsofswe.com (book + podcast hub)<br>👥 Mike Feathers, Working Effectively With Legacy Code (definition source)<br>📐 Strangler Fig Pattern, Martin Fowler<br>🎧 Subscribe to Fundamentals of Software Engineering on Apple Podcasts</p><p>Chapter Timestamps</p><p>00:00 Cold Open, When the Idiot Code Turns Out to Be Yours<br>00:54 Welcome to Episode 7<br>02:33 Fundamentals of SE Now in Portuguese and Korean<br>04:05 What Counts as Legacy Code<br>06:48 Why Greenfield Feels So Good<br>09:11 Legacy Doesn't Mean Bad<br>10:41 App Modernization as a Career<br>11:51 Getting Off the Mainframe in the AI Era<br>15:25 Missing Context (the Why Is Gone)<br>17:36 Fear of Breaking What You Don't Understand<br>18:17 Mike Feathers and Why Tests Slow You Down Less Than You Think<br>22:08 Getting Maintenance Time Approved<br>25:01 Outdated Dependencies and the 1962 Car Analogy<br>28:06 Tribal Knowledge Walks Out the Door<br>32:14 The Rewrite Trap and YOLO Big Bang Cutovers<br>39:48 The Strangler Fig Pattern<br>42:00 Working in Unfamiliar Code<br>47:00 Fresh Perspective as a Superpower<br>50:23 The Scout Rule (Leave It Better Than You Found It)<br>52:24 Comments, Refactoring, and Naming<br>53:29 Empathy for Past Developers<br>55:03 Your Code Today Is Tomorrow's Legacy<br>59:08 Closing Thoughts (and a Dad Joke)</p>

Episode thumbnail for E06 - Why Software Engineering Fundamentals Matter More in the Age of AI

April 29, 2026

E06 - Why Software Engineering Fundamentals Matter More in the Age of AI

<p>In this episode of Fundamentals of Software Engineering, Nate and I dig into what we learned at the <strong>Arc of AI</strong> conference in Austin. We discuss the big conversations happening around <strong>AI-generated code</strong> in production, why <strong>vibe coding</strong> falls apart at scale, and how tools that let developers move faster can also get them off course just as quickly. From an AI agent that tried to <strong>delete production</strong> to 50,000-line diffs that no human can realistically review, we explore the real risks showing up as teams adopt these tools.</p><p>We also get into the durability of code, whether we'll eventually stop writing <strong>human-readable code</strong> altogether, and why <strong>evals</strong> for AI-generated code are something most teams are skipping at their peril. A recurring theme is that <strong>typing has never been the hard part of software</strong>. The fundamentals (testing, code review, architectural thinking, and understanding what code shouldn't do) matter even more now that we can produce code faster than ever. If you're feeling anxiety about AI replacing developers, this conversation is for you.</p><p><strong><br>Key Highlights</strong></p><p>💻 <strong>Code Is Cheap, Software Is Expensive</strong>: AI excels at generating behavior, but the architectural qualities and non-functional requirements that make code into software still require human expertise.</p><p>🔐 <strong>The Authorization Bug</strong>: An AI agent commented out authentication code because it lacked the right role in dev. The kind of mistake a human reviewer catches instantly, but one that could slip through a 50,000-line diff unnoticed.</p><p>🏗️ <strong>200,000 Lines of Vibe Code</strong>: When someone asked Dan to review their vibe-coded app, it was 200,000 lines. Finding a bug in that is like being dropped into a massive enterprise codebase on day one with zero context.</p><p>🤖 <strong>AWS Agent Gone Rogue</strong>: An agent tasked with fixing a critical production issue decided the best approach was to delete production and start from scratch. Any human would have vetoed that immediately.</p><p>⚡ <strong>Moving Fast Safely</strong>: Like an F1 driver at 200 mph, moving faster in software development means being off course by even a small margin can put you miles from your target. More speed demands more frequent feedback loops.</p><p>🧪 <strong>Evals Over Vibes</strong>: When switching AI models in production, "vibe testing" isn't enough. Proper evals are essential to verify that behavior remains consistent across model updates and prompt changes.</p><p>📖 <strong>The Testing Paradox</strong>: You can write tests for what code should do, but you can't easily test for what it shouldn't do. AI-generated code may introduce unexpected behavior that no one thought to test for.</p><p><strong><br>Resources &amp; Next Steps</strong></p><p>🎤 Arc of AI Conference (Austin, TX)</p><p>📕 Fundamentals of Software Engineering in the Age of AI (workshop by Dan Vega and Nate Schutta)</p><p>🎧 Subscribe to Fundamentals of Software Engineering on Apple Podcasts</p><p><strong><br>Chapter Timestamps</strong></p><p>00:00 Introduction and welcome back</p><p>01:30 Recap of the Arc of AI conference in Austin</p><p>04:00 A power outage, elevators, and conferencing by candlelight</p><p>07:30 Overview of talks, workshops, and hallway conversations</p><p>09:00 The eight hour workshop on fundamentals in the age of AI</p><p>11:00 Code is cheap, software is expensive</p><p>13:00 Vibe coding at low stakes vs. enterprise software</p><p>16:00 Developer anxiety and the real role of a software engineer</p><p>18:00 200,000 lines of vibe coded code nobody can review</p><p>20:00 50,000 line diffs and the authorization bug</p><p>23:00 The AWS agent that tried to delete production</p><p>26:00 Is code going to be durable or constantly regenerated?</p><p>30:00 Will we stop writing human readable code?</p><p>34:00 The testing paradox and what code shouldn't do</p><p>37:00 Can AI replace CEOs? Black Swans and human intuition</p><p>40:00 AI as productivity enhancer, not job replacement</p><p>44:00 Evals vs. vibe testing in production AI systems</p><p>48:00 Relearning lessons of the past in software engineering</p><p>52:00 Moving fast safely and the F1 analogy</p><p>56:00 Feedback loops, staying on course, and closing thoughts</p><p><br></p>

Episode thumbnail for E05 - Exploring Career Paths for Software Engineers with Dan Vega and Nate Schutta

February 11, 2026

E05 - Exploring Career Paths for Software Engineers with Dan Vega and Nate Schutta

<p>In this episode of <strong>Fundamentals of Software Engineering</strong>, we dive deep into the diverse <strong>career paths available</strong> to software engineers beyond just writing code. Many engineers start their careers thinking the only options are coding until retirement or eventually becoming a <strong>manager</strong>, but the reality is far more exciting. We explore how the tech industry offers numerous opportunities that combine <strong>technical skills, creativity, and professional growth</strong>. From individual contributor tracks to specialized roles in <strong>developer advocacy, consulting, entrepreneurship</strong>, and more, we break down what each path looks like and how to know which one might be right for you.</p><p>Drawing inspiration from <strong>Chapter 14</strong> of our book, I share personal experiences about discovering my passion for <strong>teaching and content creation</strong> while Nate reflects on his journey into <strong>developer advocacy and speaking</strong>. We discuss the importance of <strong>paying attention to what energizes you</strong> in your daily work, whether that's solving complex technical problems, mentoring others, building products, or communicating ideas. We also emphasize that your interests will <strong>evolve over time</strong>, and that's perfectly normal. The key is staying <strong>open to opportunities</strong>, being willing to try new things, and not being afraid to pivot when something doesn't feel like the right fit.</p><p>________________________________________</p><p><br>Key Highlights:</p><p>💼 <strong>Individual Contributor vs. Management Track:</strong> We break down the two primary career paths in software engineering and explain how the individual contributor (IC) track allows engineers to grow technically without managing people, reaching senior levels like Staff, Principal, and Distinguished Engineer.</p><p>🎤 <strong>Developer Advocacy and Community Building:</strong> Learn how developer advocates bridge the gap between companies and developer communities through content creation, speaking, and building relationships. This role combines technical expertise with communication skills and offers a unique way to impact the industry.</p><p>📚 <strong>Teaching and Content Creation:</strong> Discover how creating courses, writing technical content, and teaching others can become a fulfilling career path. We discuss how the saying 'to teach something, you have to learn it twice' reinforces your own technical knowledge while helping others.</p><p>🏢 <strong>Consulting and Freelancing:</strong> Explore the world of independent consulting where you solve diverse problems for different clients, build variety into your work, and have more control over your schedule and projects.</p><p>🚀 <strong>Entrepreneurship and Building Products:</strong> We examine how engineers can leverage their technical skills to build their own products and companies, especially in this AI-powered era where the barriers to entry have been significantly lowered.</p><p>🔍 <strong>Following Your Passions:</strong> Throughout the episode, we emphasize the importance of paying attention to what energizes you, following those indicators early in your career, and not being afraid to advocate for the things you're passionate about without waiting for permission.</p><p>💡 <strong>Empathy in Engineering:</strong> We discuss how understanding who your applications are helping and putting yourself in other people's shoes can make even the most mundane projects more meaningful and rewarding.</p><p>________________________________________</p><p><br>Resources &amp; Next Steps:</p><p>🌐 Learn more about the <a href="https://fundamentalsofswe.com/">Fundamentals of Software Engineering book</a> and get your copy</p><p>📖 Purchase the book on <a href="https://www.amazon.com">Amazon</a> or access it through the O'Reilly platform</p><p>🎧 Subscribe to the <a href="https://fundamentalsofsw.com">Fundamentals of Software Engineering podcast</a> for more episodes</p><p>⭐ Leave a review on Amazon to help other engineers discover the book and share your feedback with Dan and Nate</p><p>________________________________________</p><p><br>Chapter Timestamps:</p><p>00:00:00 - Introduction and Steve Jobs Quote</p><p>00:01:10 - Episode 5: Career Paths for Software Engineers</p><p>00:03:00 - Book Overview and Chapter 14 Introduction</p><p>00:05:00 - Beyond Just Coding: Understanding Career Options</p><p>00:06:00 - Early Career Perspectives on Career Paths</p><p>00:15:00 - Individual Contributor Track Explained</p><p>00:25:00 - Management Track and Leadership Roles</p><p>00:35:00 - Developer Advocacy and Community Work</p><p>00:45:00 - Teaching, Content Creation, and Education</p><p>00:52:00 - Consulting and Freelancing Opportunities</p><p>00:58:00 - Entrepreneurship and Building Your Own Products</p><p>01:01:00 - Key Takeaways and Following Your Passions</p><p>01:03:00 - Final Thoughts and Dad Joke</p><p>01:04:00 - Wrap Up and Call to Action</p>

7 total episodes available

Deep-dive analytics for Fundamentals of Software Engineering

Frequently asked questions

Have a different question and can't find the answer you're looking for? Reach out to our support team by sending us an email and we'll get back to you as soon as we can.

What is Fundamentals of Software Engineering?

Programmer, coder, developer—there are any number of titles used to describe people who create software, but what does it mean to be a software engineer? Despite the way software is often taught, being a software engineer is about far more than simply producing syntactically correct programs.

How often does this podcast release new episodes?

This podcast updates daily.

Where can I listen to this podcast?

This podcast is available on 4 platforms including Apple Podcasts, Spotify, and more. You can also use the RSS feed directly.

Does this podcast accept guests?

No, this podcast does not typically feature guests.

Legal Disclaimer

Pod Engine is not affiliated with, endorsed by, or officially connected with any of the podcasts displayed on this platform. We operate independently as a podcast discovery and analytics service.

All podcast artwork, thumbnails, and content displayed on this page are the property of their respective owners and are protected by applicable copyright laws. This includes, but is not limited to, podcast cover art, episode artwork, show descriptions, episode titles, transcripts, audio snippets, and any other content originating from the podcast creators or their licensors.

We display this content under fair use principles and/or implied license for the purpose of podcast discovery, information, and commentary. We make no claim of ownership over any podcast content, artwork, or related materials shown on this platform. All trademarks, service marks, and trade names are the property of their respective owners.

While we strive to ensure all content usage is properly authorized, if you are a rights holder and believe your content is being used inappropriately or without proper authorization, please contact us immediately at hey@podengine.ai for prompt review and appropriate action, which may include content removal or proper attribution.

By accessing and using this platform, you acknowledge and agree to respect all applicable copyright laws and intellectual property rights of content owners. Any unauthorized reproduction, distribution, or commercial use of the content displayed on this platform is strictly prohibited.