harbar.net component based software & platform hygiene

To “Best Practice” or not to “Best Practice”

posted @ Sunday, December 21, 2008 2:34 PM | Feedback (1)

Adam Buenz over on SharePoint Shelter has a nice post titled When Best Practices Aren’t Best Practices. It’s a good read, and pretty much all he says I agree with. There are a few things he doesn’t touch on that I feel like highlighting however, so here goes…

The key problem is the term itself. “Best Practices”. I’ve always hated it. “Best Practices”, says who? :) There’s nothing funnier than someone who has been practicing a particular technology for six months spouting off about them. Well actually there is, and that’s the vendor spouting off about them, especially when the so called best practice is supporting their latest attempt to cover up a weakness in the product.

As I keep telling people (some of whom are listening) Software is about tradeoffs and compromise. One person’s “best practice” maybe a terrible practice for someone else’s scenario.

Unfortunately of late the SharePoint world has a fetish for “Best Practices”. It’s probably one of the babble speak terms you will hear most often (apart from the equally disturbing “governance: of course), usually being spouted by consultants. In the introduction to the all-round pretty damn decent SharePoint Server 2007 Best Practices book, Ben Curry says:

“As you’ll see when you read this book, there is a fine line between best practices and design decisions……

…..at some point, design concepts and best practices are intermingled. At other times, best practices are presented with a notation that other design choices might be possible and might be the best choice given a different scenario.”

He tells it like it is. This might seem like stating the obvious. But the trouble with stating the obvious, is that it more often than not, is nowhere near obvious enough. If it was obvious, it wouldn’t need stating, now would it?!

SharePoint is a complex technology stack, MOSS isn't a product, it’s eight products. It’s got a lot of stuff. It’s got a lot of great stuff (that no one else has got) and it’s got a lot of rough edges. It’s a complex beast.

Most importantly, and I don’t give a monkeys what the vendor presales folk tell you, SharePoint is not a point solution, in any scenario. It’s a platform upon which you build solutions for your business requirements. This doesn’t necessarily mean you need to write code.

Because the “Best Practices” term has become such a vouge in the SharePoint world there are a few key symptoms:

  1. Inexperienced consultants who did something that worked once, so they pimp their approach as a best practice, when it’s nothing of the sort.
  2. A couple hundred thousand project managers implementing SharePoint across the globe want easy answers for difficult questions, so ask “What’s the best practice for XYZ?”
  3. The vendor spouts “best practices” to cover themselves in terms of supportability and services headaches.

Now don’t get me wrong, there are plenty of real best practices out there in SharePoint land. Many of them produced by the vendor. However you simply must not take them lock, stock, the whole lot. They are guidelines for the most part, and must be considered carefully as part of your overall solution and take into account all aspects of your deployment.

Adam talks about best practices often not considering industry verticals or company culture. These are less tangible aspects which are very important to any SharePoint deployment, which after all is about changing, embracing or effecting culture. The “new world of work” the vendor liked to say before they ditched that spin. I though I’d add my views towards some of the more tangible aspects of SharePoint deployments….

 

1. There are some best practices which are applicable to every single SharePoint deployment. Especially when it comes to infrastructure areas. For example you absolutely should be using single affinity (sticky sessions) in load balanced environments. However for pretty much every other aspect it’s not so cut and dry. Recently there was a bit of a blog battle regarding Site Definitions, there is no black and white – it’s all shades of grey. Again, compromise and tradeoffs.

2. There are no easy answers to difficult questions.
Often times I get emails from folk asking about some development related activity they are trying to get working in SharePoint. The message usually goes something like, “I am attempting to customize the navigation to include external resources from a external system and SharePoint is messing it up, what is the best practice for including such resources within my SharePoint site navigation.”

For that, my friends, what might seem a simple thing is nothing of the sort and simply cannot be answered without in depth analysis, and besides there is no best practice here. There are no easy answers to difficult questions, unless you count the default answer of a “security consultant”, which is of course, “no”. :)

3. Some aspects of SharePoint have solid best practices.
Some scenarios targeted by SharePoint, e.g. Collaboration Portals, have mature, proven best practices which have been refined over years of successful deployments. The sweet spot of the current release is this scenario. There was a solution accelerator for the previous release and the core content on release was in this space. That stuff is solid. It’s proven. However it’s still just a blue print or framework to base your deployment on and extend. Some folks take this and deploy it as is and be successful, but they are the minority, everyone else is building on top of it to meet their business requirements.

 

4. Some aspect of SharePoint absolutely do not have any best practices.
It’s plainly ridiculous to suggest that some features of the product have associated best practices. Why? Well, it’s simple. because they haven’t been around long enough, and they haven’t been deployed enough yet. You can’t have best practices for things which have only been available for a couple years. It’s not long enough. They are not mature enough.

Take Excel Services for example, that’s only been about for a couple years and is extremely broad. At launch the product group suggested separate ECS app servers were the best bet (reasonable bet hedging that). Now it’s more common to hear them talking about using ECS on the WFE servers. the whole conversation is totally bogus anyway as it depends upon the complexity and latency of the calculations you are performing. If you are just using EWA to display non intensive calcs like sums and so forth, then WFE is the right place, but if it’s some crazy sales projections coming from multiple external sources, it’s another story.

Another example is Document Conversions. If any one tells you there’s a best practice there then they are full of it. Sorry, but it’s how it is. The only best practice in these types of scenarios is how to approach the planning and measurement of a given deployment and taking it from there. And those are thin on the ground.

 

 

I’m sure this post will noise some folks up, but it is important to take best practices with a pinch of salt, and verify them alongside the specifics of your project, and remember there are no stupid questions, only stupid answers.

Don’t get me wrong I am fan of best practices, but only if they are truly tried, tested, proven and validated. And just by using the term or label doesn’t make it so. It is important to soak up as much as possible that can help you be successful with SharePoint, and the aforementioned book and the SharePoint Best Practices conferences are some of the best ways to do so.

The bottom line however is to have a deployment/implementation that works and meets your business requirements. If you have that then you have the best practice for your organization. And that is the only thing that matters.

Things I want in Windows 7

posted @ Sunday, December 21, 2008 1:20 PM | Feedback (2)

There’s a bunch of cool stuff coming in Windows 7 if the things they showed and talked about at PDC make it into the final release. But there’s plenty of things which are reasonably basic which I believe would make things much better, especially on a laptop. I no longer have a desktop running Vista. My laptop is my desktop (and my laptop when on the road) and this is increasingly common.

Don’t get me wrong there’s plenty of things I like about Vista and I’m not one of these XP is better fan boy freaks who hated XP until Vista shipped. I also like some of the cool new stuff, but to my mind there’s not much point doing all the cool new stuff (like touch) if you can’t get the basics down. It’s the basics that frustrate users, and a modern general purpose client OS shouldn’t frustrate users. That is not the “magic of software”. In addition, I like Mac OS, but there’s also plenty of things that suck about that, which I’ll probably rant about at some point.

In other words, this is just a (not to be taken too seriously) list of things I want fixed. And yes, I have submitted all of these formally to the Windows Engineering team.

 

1. Improved Start Up time
Why exactly does it take so long to boot Vista? You know the story, you do a fresh install and everything is nice and quick. Then you load up all your apps and it turns into a disaster zone, waiting often four to five minutes just to get the logon screen. Then you log on and it’s another four minutes before you can actually use the computer properly as all the start up items are loaded and you sit there looking at the blue doughnut of death. Now I know why this happens. On my machines I have this down, I have a useable desktop from boot in about three minutes, but I know what I’m doing and have tweaked my machine with Autoruns. I remove all the spyware “reminder” crap and anything else I don’t want. I’ve also set delays on the apps I care less about. Also my Services are tweaked and I have autoruns profiles for different uses of the laptop, for example when I’m on the road I am running the “undocked” profile which doesn’t run the Tablet services.

But the point is, I shouldn’t have to do all this work. Windows should, because it’s the Operating System and that’s what Operating Systems (modern ones at any rate) are supposed to do. Of course this does require some buy in from ISVs (stop putting crap in startup etc). At the very least Vista should give me a proper UI to configure these things

 

2. Docked/Undocked Profiles for laptops
Can’t believe this feature doesn’t exist. Just because I don’t have a docking station, doesn’t mean I don’t want profiles for things like power management, services to run etc when I’m on the road versus when I’m plugged in at home and connected to a monitor etc.  No “computer manufacturer’s job” wuss out excuses, build this capability. Why else have a Windows Mobility Center (Windows X)?

 

3. Decent Power Management
When I’m on battery I should be running in Power Saver mode, when I’m plugged in I should be running in High Performance mode. When I’m on battery I don’t want Sidebar. Oh and I want this to be automatic. Why is this so hard? So Vista switches Aero Glass off when in Power Saver, but I have to switch to that mode myself. That’s silly. I know, I know the big blue monster will say – that’s the computer manufacturer’s job. But it isn’t. I can use Vista Battery Saver from Codeplex, but either way that cool widget or the laptop manufacturer’s widget – they both run as a little widget (see complaint number one). This should be part of Windows, period.  Oh and make some of the apps like Sidebar not consume ridiculous power even when only one gadget is open.

 

4. Erm, fix Hibernate and Sleep
They don’t work very well. What is up with Vista simply displaying a blank screen when you do hibernate? I mean come on, which UI genius decided that would be a good idea? If your laptop has no HDD light or other status indicator you can’t tell your machine is on unless you listen to the HDD etc, and on my machine they are very quiet. STOP BLANKING THE SCREEN, that’s really stupid. Now I’m kinda losing interest in hibernate as I have 6Gb RAM, but sleep should be decent.

 

5. Autodetect Optical Out.
If the machine has a digital audio out using the same socket as for the analog 3.5 speaker jack then sense when an optical cable is attached and switch to the high definition output from speakers. Having to do this manually is frankly just idiotic. There is no good reason not to implement this.

 

6. A decent remove removable device
When I click Safely Remove Hardware (e.g. a portable USB disk) that means I want to remove it. Not sit there clicking “it’s in use, please try again”. This feature is downright pathetic. On Mac I do Apple-E and the thing (whatever it is) that’s using it is killed, because that’s what I told it to do. On Vista this capability is practically useless.

 

7. Decent multi monitor support.
Nuff said. Just do it. Acquire Ultramon.

 

8. Ship Anti Virus for free as part of the Operating System
I already know you want to do this. I don’t care about those other “security vendors”. Of course you need governments to let you do this. If we are in the “cloud” age there should be no general purpose client operating system on the market that doesn’t include AV. Stuff Symantec et all.

 

There you go, eight “small” things I’d like to see instead of bringing the Ribbon to the font control panel :) I’m pretty sure I’ve forgotten a bunch, but these would make me very happy.