Series

Software Engineering Lectures

Lectures from a 2010 software engineering course — purpose and complexity of the discipline, lifecycle models, agile mindset, Scrum and XP in practice, domain-driven design, requirements and validation, testing as a craft, TDD as a thinking tool, and version control as the foundation underneath all of it.

17 posts in total

Posts in this series, in order

  1. Why Software Engineering? Building with Purpose Beyond Code

    Discover software engineering's deeper purpose—learn how systematic approaches, quality focus, and collaborative practices transform code writing into sustainable solution building that serves real human needs

  2. Taming Complexity: When Process Helps and When It Hurts

    Tame software complexity through systematic processes—discover how structured approaches, clear documentation, and collaborative practices transform overwhelming projects into manageable, sustainable development

  3. When Following the Recipe Fails: Rethinking Waterfall

    Understand waterfall's place in software history—discover when sequential development works, why it often fails, and how its lessons inform modern iterative approaches to complex projects

  4. Learn, Adapt, Evolve: Embracing Change in Software Development

    Embrace iterative development over rigid planning—discover how evolutionary models like spiral and incremental approaches handle uncertainty, reduce risk, and deliver value through continuous learning cycles

  5. Less Stress, More Delivery: The Agile Mindset Shift

    Shift from process obsession to people-first thinking—discover how agile mindset values individuals, working software, customer collaboration, and responding to change over rigid adherence to plans

  6. Finding Your Team's Rhythm: Scrum for Productive and Predictable Delivery

    Unlock team productivity through Scrum framework—discover how sprints, ceremonies, and roles create sustainable delivery rhythms that balance speed with quality and people with process

  7. Running the Scrum Cycle: From Planning to Working Software

    Master the heartbeat of agile delivery—discover how sprint planning, daily standups, reviews, and retrospectives create predictable cycles that turn chaos into sustainable team rhythm

  8. Quality Through Courage: Extreme Programming's Bold Approach

    Transform fear into fearless development—discover how XP's quality practices like pair programming, TDD, and continuous integration give teams the courage to embrace change and deliver excellence

  9. XP in Action: Principles, Practices, and Sustainable Excellence

    Turn XP theory into daily practice—discover how 12 concrete principles and practices transform development teams from reactive to proactive, from fragile to antifragile

  10. XP in Practice: Real Strategies for Real Teams

    Bridge the gap from XP theory to real-world implementation—discover practical strategies for introducing pair programming, TDD, and continuous integration in resistant environments

  11. Domain-Driven Design in Practice: Building Software That Speaks Business

    Bridge the gap between business and code—discover how Domain-Driven Design creates shared language, models complex business rules, and builds software that truly reflects real-world domains

  12. Requirements, Validation, and the Role of Testing

    Software development concepts and practices

  13. Testing Software: Fidelity, Quality, and System Evolution

    Master comprehensive testing strategies—discover how unit, integration, and system testing work together to create robust verification pyramids that catch bugs early and build user confidence

  14. Test-Driven Development: Building the Right Thing the Right Way

    Master the red-green-refactor cycle—discover how TDD transforms testing from afterthought to design tool, creating confidence, better architecture, and living documentation through disciplined practice

  15. Unit Testing with JUnit: Clarity Before Complexity

    Build confidence through disciplined unit testing—discover how JUnit, test structure, and systematic verification create safety nets that enable fearless refactoring and reliable code evolution

  16. Advanced TDD: Thinking in Tests

    Elevate your TDD practice beyond basics—discover how thinking in tests shapes design, drives architecture decisions, and creates living documentation that evolves with your understanding

  17. Version Control: Don't Code Without It

    Never code without version control again—discover how Git, branching strategies, and commit discipline create safety nets, enable collaboration, and preserve the history of your decisions