Dan North discusses an example of rearchitecting an application without rewriting it from scratch, and explains general strategies for a holistic rearchitecture such as changing the team culture, removing obsolete technologies, allowing mistakes to be made (and learned from), transitional architectures, introducing bounded contexts, refactoring and emergent simplicity, and rotating through roles.
Dan is a principal consultant with ThoughtWorks, where he writes software and coaches teams in agile and lean methods. He believes in putting people first and writing simple, pragmatic software, and that most problems that teams face are about communication. This is why he puts so much emphasis on "getting the words right", and why he is so passionate about BDD, communication and how people learn.
QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community. QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers.
Ok....nothing much to take away
My favourite of Dan's talks
Worth watching just for Dan's description of singletons.
Good Stuff Here
great stuff - for developers, too
As Dan points out: the first problem is *not* the lack of technical experience of the colleagues (like knowing design patterns for example, he says most of the guys were skilled enough) but the whole approach, culture, mentality.
That's much deeper than just managers' BS - it's about the real -pragmatic, agile- nature of the software development (rather than the rigid separation of developers/bosses, silos in the Waterfall model).
Maybe more details on techniques wouldn't hurt, but that would have made this much longer - yet, what's said there was a necessary minimum. There just too many of those techniques, and those can be better covered in books like "Design Patterns", Refactoring, TDD, "Working Effectively with legacy code",etc..