Friday, May 1, 2009

Why SharePoint Projects Fail

Microsoft Office SharePoint Server 2007 (affectionately known in our circles as “MOSS”) is now at what should be at the peak of adoption.  The product has been on the market since 2007 and there is a new version coming in a year.

Yet with many of our customers, we find that MOSS has been implemented but barely gets off the ground.  There a few reasons why this seems to be happening:

  • MOSS is championed by IT and then too tightly controlled.  For example, we have customers who have installed MOSS but will only use it for out of the box collaboration – no custom code, no document management, no BI, etc.  If you want an out of the box team site, then that’s part of the “service” but otherwise you will have to wait.
  • MOSS starts in a single department and then never makes it out.  A department picks MOSS for their needs but then there is not enough support or sponsorship in the organization to roll it out further.
  • MOSS is implemented skunk works style on a single box.  The implementation is more successful than originally envisioned and what was a “proof of concept” starts getting treated like production.  This sets up the assumption that MOSS is “Rapid Development” and eventually the box falls over under strain.
  • MOSS is implemented by IT but there has been no planning for adoption and training.   MOSS sits there with a bunch of services – users simply don’t know how to use them and go on using other more reliable forms of collaboration such as email, file shares, etc. 
  • The implementation gets mired in legal, HR, or branding issues as corporate citizens start to have the ability to create their own content.  Similar to the IT clamp down, the organization clamps down on the services that MOSS can provide such as blogs, wikis, My Sites, etc. because they do not have a good model for managing the risk of employees contributing their own content.

Why does this happen?  What is missing from most MOSS implementations?  In my experience, there are a few common causes:

  • Too much involvement by IT, not enough involvement from business stakeholders.
  • Too much focus on MOSS as a generic toolbox (document management, collaboration, search, etc.), not enough focus on MOSS as a way to automate or enable true business services.
  • Poor infrastructure planning to enable scaling to the enterprise.
  • Lack of training, adoption and change management.
  • Lack of a killer app for the particular needs of the business
  • Not enough support from executive champions
  • No governance model to set expectations on how MOSS will be operated, changed and maintained.

If you are an IT Director or department champion for SharePoint, I strongly encourage you to think about these issues BEFORE you start an implementation.  We see many cases where organizations start thinking about these issues after the first implementation has already failed and the organization has soured on the platform because there was not enough investment in managing the project and an eager IT department ready to roll out a service.

Monday, April 20, 2009

Separating the Humans from the Robots

 

With a new Terminator movie coming out, I started thinking about the ways that on the Internet now we need to try and distinguish the humans from the robots.  There is already a “war” going on out there between humans and sophisticated robots for control of Facebook, Hotmail, Gmail and other web 2.0 services.

One of the more annoying “fronts” in this war is CAPTCHA (“Completely Automated Public Turing Test to Tell Computers and Humans Apart”).  This reverse Turing test is what is used on many sites to test to see if you are human and not some automated robot.

The problem is that these tests are like antibiotics – the more they get used the more sophisticated the robots.  Early CAPTCHA tests were easily broken by bots so they have evolved into more and more sophisticated tests.  Now the number of hoops and the readability of these tests are so bad that human beings can barely pass them.

6th Worst

The challenge is how to make a test easily answerable by a human being but yet heuristically difficult enough to foil a software program. 

Google is experimenting with new techniques to try and simplify the experience of verification – see below.

Even using this technique, Google has to specifically pick the right images:

However, while the images will be randomly rotated, they will be carefully selected. First, Google will exclude images for which its own computers can readily identify the top, such as photographs showing landscapes with blue sky (easily detected), text (easily recognized) or portraits of people (there are many facial recognition applications on the market). Then, it will screen out images that humans find too difficult to orient (for example, abstract art, or overhead views, that don't have a readily identifiable top) by conducting a sort of opinion poll.

Google is relying not just on individual results but collective results.  The heuristic picture composed from millions of clicks is what will power the analytics so that Google can reliably detect bots instead of humans.

Friday, April 17, 2009

Live Earth Bird’s Eye View

One of the cooler features that sets Live Earth/Maps apart from Google Maps is the birds eye view. 

Take a look at this building in Google Maps:

ScreenHunter_02 Apr. 17 08.02

Now take a look at the Bird’s Eye view of the same building in Live Earth/Maps.

ScreenHunter_06 Apr. 17 08.03

 ScreenHunter_03 Apr. 17 08.02

 ScreenHunter_04 Apr. 17 08.02

 ScreenHunter_05 Apr. 17 08.02

The four views are available if you hit the rotate button in the interface – these are actual photographs taken from different angles.

The difference in understanding heights of buildings, features around buildings, etc. is significant – imagine if you’re doing some house hunting and you see a neighbourhood you like.  Wouldn’t you like to see the increased detail and vantage points that you get from this orthogonal view instead of just the top down view you get in Google maps?

Saturday, March 28, 2009

Adsense and Evil Java

Adsense in general does a good job of targeting ads based on the content of your site.  I have adsense running on my blog and I find that it does a reasonable job of putting ads that are somehow connected to my content.  If I’m writing about Microsoft Project, the reader gets ads on Microsoft Project.

Adsense seems to have one basic problem – it cannot distinguish between positive and negative content.  Here is some content that I found on a random site:

Java is EVIL, it's the work of the devil, made to collect your
souls and to turn you into brainless slaves of hell.
If you like Java, you will lose your soul to be damned
for eternal torment in hell.Demons and devils will feast on your soul
for all eternity.
So stop using it now to save your soul.
Or the holy inquisition will come for you and burn your flesh to save
your soul, because the devil must not collect more souls or nobody can
prevent Armageddon.
Java is evil, using it is BLASPHEMY , only heretics and
witches like Java.And heretics and witches shall BURN !
Java = programming language written by SATAN in Hell's Kitchen in 666 minutes ! ! !

I of course didn’t write this and for the record, I have used Java for many many years and I don’t think I’m going to Hell.  I posted this to prove a point – Adsense will now show ads that promote java products.  This is a sample of what Adsense delivered on this site:

ScreenHunter_13 Mar. 28 11.45

So the question is for advertisers – do you really want your company being linked to content such as this simply because it has a few key words in it?  Is there a way to heuristically analyze content to filter this out (or even better, target the negative content for example to anti-Java advertisers?)

How To Use Microsoft Project: Task Type

One of the more confusing aspects of Microsoft Project is Task Type.  Task Type can be set to "Fixed Units", "Fixed Work", or "Fixed Duration" for each task.

How to Set Task Type

You can set task type in a couple ways:

1. If you select a task or tasks and go to task information (under project in the menu or right click and its there as well) you will find task type in the advanced tab.

ScreenHunter_11 Mar. 28 10.462. If you go to window and click Split when in the GANTT chart view, you get a Task Form at the bottom where you can set the Task Type.

ScreenHunter_12 Mar. 28 10.47  If you select all your tasks, you can set the Task Information for every task to the same Task Type – this will lead to less confusion when you are adjusting your plan because all the task types will be consistently set.

Effort Driven

There is also a check box (which is checked by default) that says that tasks are “Effort Driven”.  When this is checked, it is assumed that work stays constant even if you adjust the other two measures.  So for example, if you change a 40 hour task from 1 week duration to 2 weeks duration, project will keep the 40 hours of work but decrease the number of resources required to compensate (only 50% of a resource in this case).

This may not be what you want and I find particularly with using Fixed Duration having this turned off is highly desirable because want to adjust the work, not the units.  For example, what I want is to tell project, “I want to schedule this task with 1 person for 2 weeks” and have it calculate work to be 80 hours.  If I adjust the schedule to be 3 weeks, I want the work to increase by 50%.  Similarly, if I am working in Fixed Duration and I double the resources, I want the duration to stay constant and for the work to double.  This will only happen if “Effort Driven” is turned off. 

How Task Type Works

Any task can be adjusted using three measures: Units, Duration or Work.  Because each measure is dependent on the other, at least one of the other two must be impacted.  By changing the task type, you are telling project which measure you are going to adjust and which measure should be automatically re-calculated.  Below is a chart that shows how Project reacts based on the task type:

 

Field that you change Field calculated if the task is Fixed Units Field calculated if the task is Fixed Work Field calculated if the task is Fixed Duration
Work Duration is recalculated Duration is recalculated Units are recalculated
Duration Work is recalculated Units are recalculated Work is recalculated
Units Duration is recalculated Duration is recalculated

Work is recalculated

Basic Tips for Using Task Type Efficiently

Here are some basic tips to using Task Type efficiently and to avoid confusion:

  • Pick the task type that makes sense for you and use it consistently.  I tend to think in Duration with Effort Driven turned off first and what I want is to calculate the number of hours (and therefore cost) required to do the work.  Other PMs like thinking in work instead and want to adjust the schedule instead.  Pick an approach before you start and be consistent with it.
  • You can switch the task type without impacting your plan.  Therefore, feel free to change the task type for the specific scenarios below.

Scenarios to use Specific Task Types

Fixed Duration

I used Fixed Duration when I have a good understanding of the schedule and the team and I want to calculate cost/effort.  A good example of this is doing a plan for requirements gathering interviews.  I know that I have 2 weeks of interviews, 1 week of documentation and 2 days of client review and I know that I need a Business Analyst and a Technical Architect in each one at 100%.  Fixed Duration works really well because I can adjust the schedule really easily and the work effort is calculated for me.

Another good use for Fixed Duration is % allocations for overhead resources.  Project Managers for example tend to be used on an overhead basis for the duration of the project on a fairly constant basis.  If the project takes longer you will need more project management.  It’s also easier to think of assigning a PM at 30% to a project for the entire duration than to say, “I need 85 hours of project management for this project).  With Fixed Duration, you can simply assign the PM for the entire duration and adjust the % allocation and the work effort is automatically calculated.

Fixed Work 

A good use of Fixed Work is when you want to try and fit a fixed amount of hours into a fixed schedule.  By fixing the work, you can adjust the number of resources you need to impact the duration.  For example, let’s assume you have 1280 hours of work and you want to try and jam that work into a fixed 8 week period.  With Fixed Work turned on, you can set the allocation of resources to 400% in order fit the fixed amount of work into a duration you wish.

Fixed Units

I generally find that using Fixed Units is my least desirable option simply because in most real world scenarios adjusting the number of resources required is the most flexible option.

One scenario where Fixed Units might be appropriate is for department planning.  In a department, the number of fixed units is constant (the number of full time employees) and as a Director you want to know how much work your team can produce.  What tends to happen in these scenarios is the queue of work is constant and the duration flexes – you end up telling the poor person at the end of the priority list that their project won’t get done until next year.

In this case, setting Fixed Units would allow you to lock in the resource pool based on the size of your department and then adjust the work to calculate the resulting schedule.  Based on the schedule, you would then be able to tell your stakeholders how many projects can be done in the coming year.

I hope that provides some guidance on how to use this key function in Microsoft Project – I have found even very senior Project Managers do not fundamentally understand how Duration, Effort and Units work together and how to model them in Microsoft Project.  If you understand the conceptual framework and the rules that Microsoft Project uses, you will find that there are less errors in your plan, less confusion and less tearing your hair out when you find Project adjusts your numbers in ways you didn’t intend.

Sunday, March 22, 2009

Check Out the New Live Writer

As part of the latest Microsoft Instant Messenger update, there is a Live Writer tool now included as part of the Windows live toolset. 

ScreenHunter_10 Mar. 22 22.09

It’s free and having now written a couple posts with it, I can attest that it’s quite good:

ScreenHunter_08 Mar. 22 22.07

  • It has a single interface for editing blog posts but can publish to multiple sources, e.g. Blogger, Wordpress, Typepad, etc.
  • Editing using a real client is much easier than the Blogger HTML content editor.  I always found it frustrating to use it because it created some odd HTML choices and formatting mistakes.
  • Spell check uses the word spell check and it highlights your spelling errors immediately.
  • You can save a local draft so if you editing offline you can save your post and publish later.
  • Images and videos are inserted locally and only published at the end.  This makes it faster to create your post, fiddle with the images, add or remove them, etc. because you don’t have to do the upload until your post is finalized.
  • The tool has the ability to insert a windows live map. 
  • There are a number of plugins available online for insert other types of objects such as flickr pictures, silverlight streaming applications, files, facebook photos, etc.  The plugins insert the appropriate HTML into your blog posts for each type.

This will definitely make my life easier as a blog writer…thanks Microsoft!

How to Use The Fill Handle in Excel

One of the key features in Microsoft Excel is its ability to fill data based on existing values.  Excel is smart enough to extrapolate and auto-fill values based on your existing ones.

Click on the black box in the corner of any cell and drag.  Excel will fill the cells automatically.  The fill handler works both horizontally and vertically.

ScreenHunter_01 Mar. 22 21.36

Here are some tips on how to use the fill handle for values:

  • Type in a month in either full form (e.g. January) or abbreviated form  (e.g. Jan) and drag and Excel will fill in the subsequent months.
  • Type in a day of the week in either full name (e.g. Monday) or abbreviated form (e.g. Mon) and fill.  The filled cells will contain the correct days of the week in sequence.
  • Type in any value into a cell (e.g. 1, 2, etc.) and when you fill in with the same value.
  • Type in a sequence of values in cells, e.g. 1 in B2, 2 in B3, etc.  and select multiple cells and then drag the fill handler.  The cells will be filled in with the sequence.  This works just as well with intervals such as 2, 4, 6 etc. as well as 1,2,3.
  • If you hold the control key when dragging the fill handle, you will see a plus (+) sign and the value selected will increment by 1 in each cell.
  • If you right click on the fill handle, it pops up a dialogue where you can explicitly instruct excel how to fill the data.

The Fill Handle can also be used to fill formulas.  Here is an example:

ScreenHunter_02 Mar. 22 21.51

The product in c2 is a formula =A2*b2 and the sum is a formula A2+b2.  Now let’s assume that you have a series of values and you want to have the same formula repeated:

ScreenHunter_03 Mar. 22 21.53

If you select the cell with the existing formula you can use the fill handle to automatically fill down the right formula for the other rows.  It automatically figures out that as you move down rows it should adjust the formula so that A2 * b2 becomes A3 * B3, C4 * B4 and so on.

There is also another way to fill in the cells.  If you select the cell you want to copy and then select a region and paste, it will fill the values in the same way.  It again automatically adjusts the formula so that it makes sense based on the new row that it now occupies.  This works both horizontally and vertically.

ScreenHunter_04 Mar. 22 21.57

One last tip on filling – there are cases where you will want the value in your formula to not change as it moves from row to row.  Take this example:

ScreenHunter_05 Mar. 22 22.00

In this case, if you simply do a standard fill in Excel this is the result:

ScreenHunter_06 Mar. 22 22.01Why did this not work properly?  The reason is that Excel assumed that B1 * B3 should be B2 * B4 in the second row and B3 * B5 in the third row.  However, what we wanted is for the first number to stay constant and only the second row to change. 

The solution to fixing constants is to name them.  Named values in Excel do not change when filling.  To name a cell, click on the cell and then in the left box type in a name for the cell. 

ScreenHunter_07 Mar. 22 22.04

Then when you create the formula, use the name instead of the cell address, e.g. instead of B1 * B3 we will now set the formula to InterestRate * B3.  By using a named cell, Excel assumes these values are constants in formulas and doesn’t adjust them automatically.