Please be aware of P&P guidance

First and formost, I think the idea of a P&P team at M$ is a good thing. Its a team that is suposed to give guidance on how to use proven practices to build enterprise grade solutions. Unfortunately tit is not always the case. Normally I wouldnt care if someone was giving dodgy advice however when it is a team that people follow blindly it can be a bit agrevating.
I personally have nothing to add to the mess that is P&P. I had used various things that come out of P&P including Ent lib from 1 – 4.1 & guidance packages suchs as SCSF. Largely they are not best of breed but, “enough to get you by”. 99% of the time there is an OSS version that is better (Castle, Log4Net/NLOG) and when there is not something i want, i create my own over useing the out of the box products. Ironically I use fthe GAX and GAT to create my own Software factory, which I feel provides a much more usabale version of the SCFC/CAB for the majority of user and projects out there.
Well aparently they have done it again… I rarely even read what comes out from them now , my disillusionment is such that I don’t think it is worth my time. Sebastian AKA SerialSeb has put out a ppst recently that highlights his concerns. Really a lot of it is semantics; however when you have proclaimed to the world that your are an authority of a subject, as P&P have done then those semantics actually matter. If you muddy the means of communicating your message then your intents can be interpeted in many ways. In this case I don’t think P&P are trying to be ambiguous or abstartc I just think they don’t have a level of understanding of the problem space that is required when trying to give this type of advice. For example I understand agile and I use it, but it does not make me an authority on the subject and therefore it is not appropriate to give best practice advice on the subject. P&P guidance is percieved by the masses to be just that. My stance now unfortunately is to assume the worst and hope for the best when it come to M$ or P&P guidance because they have got it wrong so often.
How can this be changed?
I have to be honest, my uinderstanding of the inner workings of P&P is pretty much nothing. I have met a bunch of the guys, they are ALL super nice, friendly and generally knowledgable about M$ and .Net stuff.
But I don’t want any of those things. All I want is for them to be super experts in architecture, design patterns and frameworks,: specifically the fiedl they are giving advice on. If they have not persoanlly rolled out production code using those best practices and had it peer review (peer is not the guy you worte is with) then how can it be Proven Best Practices?

*The following is all opions do not construe any of theis as me stating facts*
Smart Client Software Factory to me was a mistake. It should have been preceeded by a lightweight application framework and the SMSF should have been kept for the M$ consultants. Huge red writing should be placed all over the download page telling you thios is a big bloated framework. Every project I have come across that has used it has failed. Miserably. Why? Because it was decide that M$ had “recommeded” SCSF and therefoe it was best practice. The fact the M$ nor P&P never actually recommended it is beside the point, in fact many time they recommend you to seriously consoder whetherth this is the best option. Unfortunatley the people who make the descision on what software I use are not coders, don’t like reading docs and have more faith in M$ than their own team. They also have ego’s and believe that their project is a big enterprise system that need the biggest and best framework. I find this is not the exception, this is the rule. It usually take months of “Good Behaviour” at a new contract for employers to have faith in my descions making skills. By then we are usually up to our eyes in whatever technical descision management made for us many months ago. SCSF, EntLib EF and are a couple of pain points I have had to bare.

So if you are embarking on a new green fileds project and the mentality at your firm is still M$ == best of breed, please rethink and make an educated descuion on your tool of choice. It may be the case that the M$ product is the best choice for you, bu then again you wont know that unless you do a bit of research. As for P&P, it really is time to pull your socks up. LIike anything in life, if you dont know, ask. Dont publish junk… please.

Unity – OMG… it just works!

I have started up at a new company back in Perth and am so far feeling pretty good about things. Initially I thought I may be back in “waterfall land”, but the guys are all super receptive to new ideas and very keen on moving to a more agile (or at least less waterfall) process.
The other dev’s and I have come up with a nice MVP/Presenter First framework with a repository pattern for the DAL and are currently using service with DTO‘s in the middle. All good so far.
Then I learnt we were using EF… ahhh ok…
Well, luckily the guys here have enough experience with it and have manged to put together a nice usable repository implementation using EF that is agnostic enough that any non EF should be able to come along and use it.. happy days.
Next step for me was to introduce IoC and AOP to the stack. These are somewhat new concepts here so I wasn’t to sure how they would go down. I have a wrapper Container that I use to abstract away all the container specific gunk and jargon that you can get with some containers. As we were very much in the EF/PnP/EntLib park here I thought I had better at least look into Unity to see if it is a viable option.
My last dealing with M$ IoC was ObjectBuilder in CAB… what a f&?king pig.
Needless to say I was not expecting anything special. I was however pleasantly surprised. Unity is supper usable and slotted in perfectly to my abstracted container adapter. If you are in a M$ centric software house I HIGHLY recommend trying out Unity. Far to many M$ devs don’t use IoC, often because there is a 3rd party framework that is not from M$ that is now required… the amount of time i have been told i can not use OSS on a project… grrr…well now there is no excuse. To see how painless it is checkout PnP guru David Hayden screencast and posts. Actually if you use any on the EntLib or PnP stuff you should be subscribed to DH blog; he is the ninja in this field and pragmatic enough to use (and have extensive knowledge of) other 3rd party frameworks such as the wonderful Castle stack.
Next step is to investigate the PnP AOP implementation namely the Policy Injection Application Block… will keep y’all posted

Ayende’s "Unity" review

As per the norm Ayende has some good points
My 2 big issue are the seperation of concerns and error handling.
Just by looking at code that use ObjBuilder (i.e SCSF etc) you know it is using OjbBuilder due to all of the ugly dependecy attributes everywhere, i was really hoping this was not going to be carried into Unity.
As for not throwing an exception on not finding an implementation i find the truely odd default behaviour.

http://ayende.com/Blog/archive/2008/02/24/Reviewing-Unity.aspx