This will be my last post in my Tech Days 2009 blog post “series” or “trilogy?”. I just finished soldering some wires for my car stereo – I can listen to my iPod in my car again :) … Now, I figured I could score a few minutes (well much more than that) of free time while supper is cooking, so here we go with my last update on my experience at Tech Days 2009 in Toronto.
In a quick update to yesterday’s posting What I Learned At TechDays 2009 Toronto! Part 2 Business Intelligence where I talked about the BI session and how useful the session was to me. Today, I’ve started going through Analysis Services and Integration Services in more detail than I ever had before. As already planned, an Analysis Services and Integration Services implementation will be a part of our SQL Server 2008 migration (migrating from SQL Server 2000). I’m currently setting up some proof of concept Analysis Services projects in our SQL Server 2008 test environment that will allow me to demonstrate the power of Business Intelligence to our power users.
Before I had attended this session at TechDays I was aware of these services as well as Microsoft’s BI option in general. I’ve dabbled in it before and have watched demos and played around with it, but now I have a renewed interest in this – especially since we have some great projects in the works where strong Business Intelligence will be a powerful addition.
Ok, so on with the new. As continued from my previous postings, I want to briefly discuss a few more of the sessions I attended at TechDays 2009 Toronto.
3. C# Advanced Features
In the “Going From 0 to 100 Dollars Per Hour with the .NET you never knew” session, I had the opportunity to see explanations and examples of advanced C# language features. The presenters did a great job in explaining the content, and I definitely learned a few things. Some of the features that were discussed such as Best Practices for Exception Handling and Generics, I already am taking advantage of and using quite often. I’ve found generics to be extremely powerful and really can add a lot of value to the architecture of an application. One interesting point that came up was that “Exceptions are for exceptional errors, not for process flow”. Although I agree with this, I have (once or twice), by design, had my data layer or facade layer raise it’s own custom exception that signified that, for example, a duplicate entry was being added and told the UI to “change course” and notify the user that this is not allowed. I didn’t (and still don’t) see any real harm in this :).
Some other things discussed in this session are things that would be useful in some scenarios and can contribute to a great architecture, but you just need to know when and how they should be used in cases where they will add value. Let me briefly mention these things along with the big “take-aways” I took from each item.
- Anonymous Methods – Keeping method concerns from leaking into class interface – don’t use for repeatable logic
- Lambdas – Not for anything re-usable; like an anonymous method on steroids
- Extension Methods – Add behaviour to types without modifying types – Good for string manipulation, enumerations
- LINQ To Objects – The SQL of Collections
- Closures – Powerful way of creating delegate with context
4. Team System
The “Database Change Management with Team System” session was important, because I think (like us) there are many people using Team System (and TFS) that are not using it effectively. At the beginning of the session, the question was asked “How many people in the room have a good change management process?” – no one in the room raised their hand – and the room was packed!
We’ve been using Team System and Team Foundation Server for years, and it’s a big improvement from Visual Source Safe; we are familiar with work items and bug tracking, etc, but we still aren’t getting the best value out of it. This session explained various important features that would be valuable to our organization.
- Branching – This is probably one of the biggest areas we could add value to. We don’t currently branch effectively and with TFS you can branch and merge quite well.
- Managing Change Sets
- Work Items
- Build Automation
The ideas presented in this session will be useful in improving our processes around Team System.
I’m all about layering really. I’ve done a few presentations on layering, but in the “Layers – The Secret Language of Architects” session I learned about some new things as well. By the way, the title of this session holds true, in my opinion – layering is one of the fundamental cores in software development that an application architect should understand. This session, by Adam Dymitruk along with John Bristowe, touched on some new topics for me, including, MVVM (Model-View-View-Model) which has been recently introduced by Microsoft but is not yet standardized. This session also touched on the following topics (ASP.NET MVC, Domain Model, Design by Contract, Domain Driven Design, and more). Domain Driven Design really interests me and I am in the process of learning much more about it.
It was also strongly recommended that you check out MSMQ as it is very useful for message queuing. This is something I’ve used a little bit and I will agree can be pretty valuable.
This was a great session as it introduced different layering models and design patterns used for an application architecture.
So, that wraps up the top 5 sessions (in no particular order) that I attended from TechDays 2009 Toronto. If anyone reading this has any comments on any of the three articles I would welcome them very much. I’d also welcome any comments on how I could improve this type of blog posting in the future.
(I know I left some names out – credit to many of the points listed above goes to the individuals presenting the content – I am hoping to get names to fill in more of the details about the individuals doing the presentations – I didn’t write them all down)