print(“Hello, World!”)

Musings on code, coders and the universe

Brilliant talks on Software Engineering

I love to watch talks on software engineering. To me, they’re a great source of inspiration and knowledge, I can just cram somewhere into a quiet evening on the couch.

I found it quite a discovery that so many videos of talks I deem absolutely brilliant are available on the web - for free! And now I would like to share with you some of these video gems I discovered so far - so without further ado, here’s a list of my favorite videos on software engineering, grouped by topic:

Agile Software Engineering

Agile/XP Overview (DDL): Robert Martin shines a spotlight on the flaws of the “traditional” phase-oriented software development methods, before introducing a brief history and the key advantages of Agile methods and how they address the flaws of phase-oriented software development.

Real Software Engineering: This talk by Glenn Vanderburg highlights the misconceptions in software engineering that led to the document-centric, phase-oriented approach to software engineering that is predominant these days. It does so by pointing out the differences between what Vanderburg calls “a caricature of an engineering discipline” that is software engineering and “real” engineering.

Software Architecture

Architecture: The lost years:
Brilliant keynote delivered by Robert Martin. He presents his preferred architecture for MVC-ish web apps, based on Ivar Jacobson’s book “Object-Oriented Software Engineering - A Use Case Driven Approach”. Takeway: Good architecture is about introducing abstraction at the right place, to ensure flexibility.

Testing and Test-Driven Development

The Deep Synergy Between Testability and Good Design: Great talk by Michael Feathers, about the way testability issues point out design flaws in software.

Emergent/Evolutionary Design

Evolutionary Design Illustrated (DDL): This talk by James Shore introduces the idea of evolutionary design, guided by tests and refactoring. The evolution of a real software system is then visualized by class diagrams of the personal finance tracking software, Shore develops in his Let’s Play TDD screencast.

The Transformation Priority Premise (DDL): Another talk by Robert Martin, introducing the notion of tests driving algorithm design, followed by an interesting theory, where the order of transformations applied to production code during TDD may have an effect on the quality of the resulting algorithms.

Software Craftsmanship

Filling the Professionallism Gap: In this talk Robert Martin touches upon the alleged lack of professionalism he sees amongst software developers and how the software craftsmanship movement may be a first step towards a more mature software industry.

Craftsmanship/Deliberate Practice (DDL): This talk by Corey Haines touches on a lot of topics: software craftsmanship and the role of practice, TDD, emergent design and professionalism in it.

Domain-Driven Design

DDD: Putting the model to work: In this talk Eric Evans explains the fundamentals of domain-driven design and how domain modeling may improve the design of software applications with complex problem domains.

I hope these videos will inspire you as much as they did me. Also feel free to add your own discoveries to this page as a comment :-)