Wednesday, October 20, 2010

MishMash day

Today was an entertaining day at the Microsoft patterns & practices Symposium 2010 with a lot of interesting discussions in a great atmosphere. Several sessions were held about concepts, principles, patterns and architecture. We had Ask the Experts lunches to speak with the p&p team members and speakers about a lot of topics. During the day it was a joy to see the tweets about the symposium passing by at Twitter #pnpsym.

The keynote session by Uncle Bob Martin about writing clean code was really entertaining. He explained that we all should be proud to be programmers with craftmanship. Software used to be made by putting programmers in a room, than throw some food in and code is coming out. But now agile defines a craft. He explained the three rules of Test-Driven Developement which generated a lot of discussion later today whether everyone should use TDD or not. In my opinion, everyone should.

In the next session the Inversion of Control principle was explained wherein your code is called from a framework instead of the other way around. Dependency Injection is a design pattern that can be used to realize this principle. For .NET there are actually two Microsoft frameworks available: Managed Extensibility Framework (MEF) (part of the NET Framework 4 and Silverlight 4) and Unity (owned by the p&p team). Something to choose here.

Rockford "Rocky" Lhotka continued with a session about how to preserve software assets across UI technologies. He showed how the Basic Xaml Framework (Bxf) results in a uniform implementation to make MVVM work for Silverlight, WPF and Windows Phone 7. I think you should consider bxf carefully for your project, because when the UI never changes or something completely new is introduced instead of XAML, you did it all for nothing.

David Platt explained his Quadrant of Ubiquity(tm) that can be used to categorize applications and use this to make architectural decisions.The important message of this session was that applications should start from the user and work inwards instead of from the technology outwards. I fully agree with that. Unfortunately, applications are often build from the technology outwards.

The next session about Parallel Programming with Microsoft .NET demonstrated the patterns available in a beautiful assembly line application that processes a lot of data from different sources. Code examples of Task Parallel Library (TPL) and Parallel LINQ (PLINQ) where explained to give an inside in how these patterns can be applied. The Visual Studio profiler was very helpful in analysing the usage of the available cores.

The last session was a workshop for teams of about six people to create an architecture in 40 minutes. Each team had a different assignment. The outcome was verified by questions for each team how they addressed certain aspects. Remarkably, most teams didn't address testability at all. Although, someone qualified this as an implementation detail (with the assumption that it should work). A fun thing to do.

We ended the day with beer and pizza. Hurray.

No comments:

Post a Comment