Friday, November 07, 2008

PnP Final Day

The last few days have been overwhelming - sitting and absorbing all the content really takes everything out of you.

Day 3 covered Architecture - Don Smith talked about investing in data access guidance, Jim Newkirk explain that pretty much everything is evoluntary design and Rocky Lhotka talked about architecture choices and frameworks.  A tremendous amount of content - it is amazing how much it can either shape what you think or make you feel much more comforitable with the choices you have made.  Then at night Microsoft Research talked about some interesting research areas in Software Engineering.

Day 4 focused on the Client - and this was one of the days that I was most excited about.  My current project at work has a big focus on the usablity of the application - performance and scalablity is the official motivation for it, but I think the real hidden story (and will be the last tripod of the project's success) is going to be the usability of the application.  They discussed Prism and Silverlight which are two interesting approaches.  We have currently built applications using the Smart Client Software Factory (SCSF) and had great success with it  and the Prism model looks much cleaner and sleaker. You aren't quite forced to use every pattern that p&p put in SCSF.  I like being able to choose where and when I want to apply things.  And Silverlight is just an awesome idea - but is still too bleeding edge for mainstream development yet (at least for us).  I haven't spent enough time with Silverlight yet - so this might just be part of the learning curve that I'm in.  Time will tell.

Today, we wrapped up with a look a the future of patterns and practices and keynote by Scott Guthrie.  It was a great session - very interactive and we got to see how dedicated they are to developer platform and solving the real issues we have.


All in all, it was an awesome conference - I highly recommed it.  Congratulations to Keith for another great conference.

Also - check out the flickr photo set from the conference...

Tuesday, November 04, 2008

PnP Day 2

Today started with a keynote by Kent Beck - it was pretty high level but did a good job summarizing some of things that I now realize that were happening but didn't really acknowledge.  For instance he talked about some Strategies; such as Leap, Parallel, Stepping Stone, and Simplification.  Depending on the project size/scope and resources we use the 1st three heavily.  Some projects we make a drastic leap forward and feel the pain of starting over, others we start in Parallel and have to split resources and finally we cherry pick features to update or move to better architectures or designs.   Each has advantages and costs, but we did it based more on gut feeling than acknowledging the costs. I will have to think more about what strategies we use without acknowledging their presence. 

Kent Beck Keynote - Patterns

Then Peter Provost did a great presentation on Architecture without Big Up Front Design.  He also demoed the VS2010 Architecture Explorer.  It was very cool to see the OO class diagrams and the sequence diagrams get reversed engineered from code.  This is huge tool for code reviews and getting started with existing code.  Sometimes things change so much in just a few months that getting comforitable is much harder then you would expect.  Not to mention the huge help in finding sensitive areas of the code.  Everyone will be asking how promiscuous your objects are once you can actually graph it.

Peter Provost Architecture Slide

Before lunch we heard about Distributed Agile which is interesting and challenging, but since we do all development in-house at one location it really doesn't help us.

During lunch Ajoy Kishnamoorthy lead a panel about Tools for Agility.  It was interesting to hear what Kent Beck, Sam Guckenheimer, and Jim Newkirk thought of the tools.  And lunch was really tasty...

After lunch Stephanie Saad talked about how Microsoft uses TFS.  There dogfood numbers outrageous.  It was interesting to hear about the different development cycles that Microsoft uses and how customized TFS is for them.  We think scaling development with 50 devs is hard and they are managing the Windows team with 2000 devs.  This really proves that you have to find what works and always look for process improvement.  It was really good presentation.  The new Excel integrated tracking speadsheets are going to be a huge plus for us - we love to track data.  This session was very timely for us, since we are just now adopting TFS fully.  We are currently working on our transisitons plans but some of our projects are ready and will be moved by the end of the year (keeping fingers crossed).

Stephanie Saad TFS at Microsoft - Build Quality

3 More sessions to go today - very interesting and a great conference.

Day 1 Wrap up

Brad Wilson gave a talk about ASP.NET MVC and Dynamic Data - I like concepts they are proposing but I think it's still a bit young for real usage in a large project like we do at New World.  We did a prototype using ASP.NET MVC and I like the structure and code seperation - it's an amazing step forward and makes things much cleaner - but really felt like it was still being forced.  We can get some of the same benefits using MVC and MVP patterns but without the new bits.  And I do think if I was still consulting it would be something that I be using as a starting point and then pulling back as needed.  As this gets more mature I think it will be extremly powerful.

Next Glenn Block gave a presetation of the Managed Extensibility Framework - I really like this project since we already have a rolled our own version of this to handle the different state field reporting solutions.  It works for us since it give us nice seperation - but still makes the product feel fully integrated.  I'm excited to see how the different teams adopt this.  I know it is something that we will be looking into.


Monday, November 03, 2008

PnP Sessions Day 1

Continued PnP Summit Coverage
The second session was Fundamentalist Functional Programming with Erik Meijer, it was a really interesting explaination of the side effects of lanaguages and how the complier doesn't really know what the expecations are.  The idea that 'code can be data' and 'data can be code' really can cause the some strange side effects - this is most apparant when running the same block of code in C# or Javascript.   

Functional Programming

One of the basic examples he gave was that DateTime.Now.Ticks in .NET is treated like a function that returns a long value - but how many functions do you create that takes zero parameters and never returns the same thing? The idea is stop thinking that it returns a standard long value, but returns the next long value in collection of long values (the theory is that a side effect is occuring causing the value to change).  It was an interesting session and makes me want to learn more about pure functional langagues like Haskell or F#.

The next session was Application Architecture Guidance with Javed Sikander and J.D. Meier.  

Architecture Guidance
I've always thought that the guidance was pretty impressive but really hard to keep a project going under it.  But they explained that you can break it down and focus on the areas you really need to worry about first and then dig deeper later.  The best place to start is with Fast Tracks and then review the Best Practices section. 

After lunch we got an overview of the EntLib 4.1 and Beyond release with a focus on Unity and how it interacts with the rest of the libraries.  I really like Unity and concept of Dependency Injection for complex applications.  We have so many 'unique' customer needs that we have to provide some seperation of concerns and abstract the implementations to support them safely.  It will be interesting to see how this starts to blend/merge with the Managed Extensibility Framework which is a topic this afternoon.

Half way through Day 1 and 4 more to go. 

PnP Conference Day 1

I'm at the Microsoft patterns and practice Summit in Redmond this week and am really excited about learning some new strategies for architecture and building better products.

Jeff Teper started off the day with a Keynote about Developing for SharePoint. Almost the entire room raised thier hands about using SharePoint but hardly anyone is doing development for it.  He focused the first half of the talk about treating SharePoint development like any other software project and following a proper development lifecycle and invest in learning about the system (SharePoint Guidance).  It's both an applicaiton and development platform, so it's complex enough that you can't just code.

He showed a couple of great SharePoint sites that have been customized to give a entire new look and feel.  The two great ones are Hawaiian Airlines and Viacom. We've used SharePoint to store documents in our Mobile Computing solution, this saved us from having to build a front end to manage the documents and dealing with versioning and other development tasks.  We aren't using all the features, but you have to start somewhere.

They wrapped it up with demo a Silverlight and Sharepoint together, basically they just created a new WebPart and manually added a new Silverlight control.  Then you can create the Silverlight control just like normal using WCF services and SharePoint Web Services to displaying the data as you need.  It works pretty well since you get a rich applicaiton feel to it, but can easily deploy it to a standard SharePoint site and still get all the nice layout  and customization features in SharePoint.

One of the best tools that we have looked at is the LINQ to SharePoint project on CodePlex- it makes development much easier.  From an ISV standpoint - I think the deployment stories are still difficult compared to plain old installers that are customers are used too, but the learning curve isn't terrible and we have had a lot of success so far.