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
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
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
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
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
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
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
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
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
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
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
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
Requirements, Validation, and the Role of Testing
Software development concepts and practices
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
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
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
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
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