Blog

Why Adding Resources Doesn't Always Help

Apr 02, 2008 by:   Tim Stanley

Those who've read the book The Mythical Man-Month: Essays on Software Engineering know the mantra Adding manpower to a late software project makes it later.  But why does it make it later?  How many resources should you put on a project to optimize the delivery date?  How do you explain and justify to the customers and teams the optimal number of resources to be on a project?  How do you explain that adding more than the optimal resources won't make the delivery date sooner?  Resource saturation is my answer.

Optimal Delivery Date And Optimum Resources

I started with a simple premise for planning project.  Something that was a known size, I could add as many resources as possible, but the delivery date needed to be as soon as possible. I don't often get offered unlimited resources, so I was intrigued with the plan.  Some assumptions I noted for estimation.

  • The scope was 24 man months effort
  • The lowest granularity of the work is one month
  • There are no critical path dependencies between 24 work items
  • There is zero ramp up time for adding a resource to a project
  • There are no vacations, sick time, or holidays
  • 1-24 resources could be added
  • Optimize delivery calendar time
  • 10% communication time between team members (four hours per week)

Adding resources to a project helps initially.  Once the team reaches a certain size, the amount of time saved by adding an additional resource has very little impact on the delivery time.  I used a factor of 10% of the time per resource spent in just communications (e-mail, meetings, discussions or interactions with other members of the team).  That number is likely too low compared to an average organization and likely unrealistically low for large organizations which have a significantly higher communication overhead, but for the initial optimization of resources, it doesn't really affect the optimum number of resources by a significant amount of calendar time.  I built a simple spreadsheet to do the calculations.  My spreadsheet had more detail, but hopefully you get the idea.

  • 1 resource, 24 months
  • 4 resources, 6.4 months
  • 6 resources, 4.6 months
  • 8 resources, 3.4 months
  • 12 resources, 3.2 months
  • 16 resources, 3.1 months

We can see that four resources instead of one cuts the time to 25% of the original 2 calendar years.  Six resources, cuts it to about four months and two weeks.  Eight resources, cuts it down to three months and two weeks.  From there, it takes an additional four resources (for a total of twelve) just to bring the delivery date in one week earlier (3.2 months).  Doubling our eight resources to sixteen only saved two weeks on the calendar time delivery.  What happened?  We hit resource saturation.  I put together the image below to show what resource saturation looks like and how adding resources affects the project time it takes to complete the work.

Resource vs Time

Resource Vs Time

Resource vs Time showing resource saturation above eight resources.

If only 10% of developer time was spent in communication, by the time we hit 10 resources, we had the equivalent of one full time person doing nothing but communicating.  That causes and interesting thing to our costs.  As we add resources, we are adding communication to the team.  That adds costs, which goes up non linearly.

Resource vs Cost

 

Resource Vs Cost

Adding more than eight resources didn't affect our delivery date by more than two weeks, but adding more, certainly increases our costs.  Optimizing both resources and costs gives us a a good range for planning.  I've rounded the numbers up to the nearest week.  This is the type of information that we might need to present to a team or a customer.  This doesn't take into account vacations, sick time, or holidays, but it does give a rough number for resource planning and allocation.

  • 6 resources for 4 months and 3 weeks
  • 7 resources for 4 months and 1 week
  • 8 resources for 4 months

We now have enough data to logically explain planning questions.

  • How long do we anticipate the project to take?  Approximately 4 months with 8 resources or 5 months with 6 resources.
  • Can the project be completed in two calendar months? No, regardless of the number of resources, the full scope can not be complete in two months.
  • Can the project be completed in three calendar months? It may be possible, but it's unlikely it can be completed in three months.

The most significant thing that can be done to improve the delivery time is to prioritize the features and delivery less feature and function in a shorter time and then follow with a subsequent release with the remaining function.  The next most significant thing that will affect the delivery date is the injection of overtime.  While I'm not a fan of using overtime for planning, once resource saturation occurs a 10% increase in time can shorten the delivery date because it doesn't typically add an increase in ramp up time or an increase in communications to the team.  Planning more than 10% overtime over any extended period of time is unsustainable and unrealistic planning.

Adding Resources Makes a Project Later

We found an optimal number of resources, and an optimal time and delivery date, but I still haven't answered the question, why does adding resources make a late project later?  Once resource saturation is achieved, adding resources to a project underway does two things.

  1. It Increases the amount of time that an existing team member must spend in explaining what has been done already and what is planned.  This increases the overall communication time spent by the team.
  2. It increases the amount of ramp up time that a resource must spend on learning what has been completed already.

I was reminded of this both by prompting from a customer and by an article Jeff Atwood wrote on Revisiting The Facts and Fallacies of Software Engineering.

The model I show doesn't exactly simulate adding resources to a late project, but it does show what happens when communications is increased.  Instead of having 10% communication, what if we increase the model to 33% communication overhead, what happens?

Resource Vs Time With 33% Communication

Instead of decreasing the time to delivery, it actually takes more time.  24 resources take the same amount of time as 3 resources.  After resource saturation, adding resources makes projects later.

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

Help Generation Tools

Apr 01, 2008 by:   Tim Stanley

Help authoring tools like RoboHelp and Doc To Help provide the ability to generate PDF, Word .DOC, and compiled html help (.CHM) from a single HTML source.

Some time ago, I needed the ability to generate other forms of documentation for help files other than HTML.  The original content was authored as a standalone simple HTML (h1, h2, ul, ol, dd, dt, p, etc.) with images and used a common style sheet.  I needed the ability to generate other forms of documentation that could be printed and transmitted over the Internet to clients (Word documents, PDF, etc.). 

Requirements

The general requirement was for end user help for administration screens, not for programmer internal object or API help.  There are further tools that are more suited for generation of programmer API documentation (like Microsoft Sand Castle on the Codeplex Sand Castle site)

  1. Help documentation was originally written in HTML pages (standalone read from files, no ASP.NET or IIS Server)
  2. Generation and distribution of standalone PDF’s
  3. Generation and distribution of standalone .CHM (Microsoft Compiled Help)
  4. Generation and distribution of standalone HTML files viewable in Internet Explorer
  5. Generation and distribution of standalone Microsoft Word.doc files.
  6. HTML Used as primary Help and displayed in IE.
  7. Table of Contents written in HTML Pages
  8. Include HTML Images in all output (PDF, DOC, CHM) without requiring re-work.

Help Authoring Tools Evaluated

In evaluating the tools, I already had existing HTML documentation with images present.  If I were creating a new documentation solution from scratch, I might have chosen a different tool or approach.

The Microsoft HTML help compiler generates .CHM files from HTML, but it does not generate Word .DOC, or PDF formats so this didn't meet the requirements.  Both RoboHelp and Doc To Help utilize the help compiler to generate the .CHM files.

Doc To Help generated CHM files, PDF files and Word Documents, but generation of documents took a very long time (i.e. 20 minutes or more).  The output of the images in the PDF and Word Document was problematic.  I never could figure out how to generate the "contents" of those documents correctly.

RoboHelp generated the CHM files, PDF files and Word documents fairly quickly (less than 5 minutes).  The images were placed correctly, and with only minimal work I was able to generate the table of contents for all documents correctly.

Both tools provided the ability to edit HTML content, but this wasn't really utilized since all content was already in HTML format.   Both tools also provided the ability to utilize the existing CSS style information when it generated the documentation.

Robohelp was selected because it was significantly faster and had fewer errors in generating the required output than the Doc To Help product. Doc To Help would have required further investigation and “manipulation” of the original HTML source in order to generate .CHM or .DOC files without errors.   It's been used for several revisions of the documentation and it still works fine.

RoboHelp has also been a consistent Award Winning help generation product and has won the Best .NET Products of 2007 for Help Authoring.

Differences In Output

Why generate different output formats?  Each format has unique features that the other formats don't offer.  Some clients reviewing our documentation prefer one format over the other.  In particular, many clients prefer the ability to print the full set of documentation for review when evaluating the product.  Each format helps support the sales cycle as the circumstances dictate.  Printing in HTML and CHM formats is listed as poor because these formats only allow printing one page at a time.

Format Size in bytes View Search Print
HTML 15,398,787 Excellent Poor Poor
CHM 4,431,489 Good Excellent Poor
DOC 6,974,976 Excellent Average Excellent
PDF 3,538,957 Excellent Average Excellent

Sample Output

HTML Help sample viewed in Internet Explorer

Help HTML Employee Maint

PDF Help Sample Output from RoboHelp

Help PDF Employee Maint

Microsoft Word Sample output from RoboHelp

Help DOC Employee Maint

Compiled Help Sample output from RoboHelp

Help CHM Employee Maint

API Documentation Tools and Links

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

Best Company Ever Award For LOD Checklist

Mar 19, 2008 by:   Tim Stanley

We strive for good quality, a job well done, making the client happy. Having a customer or client that is so enthusiastic about a solution my team and I delivered that they use dramatic phrases like “improved the way we do business and increased our competitive advantage” from Bob Ulrich the chairman and CEO and “Life just got simpler in our stores” from Craig Lindner Senior Manager, Store operations both from one of the largest retail organizations in North America can only be described as an honor and a privilege.

Last week I was at Target Corporation in Minneapolis for the formal presentation of the “Best Company Ever” team recognition award to the Target TTS team for the LOD Checklist project.  Junction Solutions provided the front end graphical solution, and approximately half of the numerous back end services for the LOD Checklist solution.  I've been working as the project manager for this project at Junction Solutions for the last two and a half years.

Thanks Junction Solutions!

Bob Ulrich

Bob Ulrich Chairman and CEO Target Corporation

BCE Presentation

BCE Red

Target Managers Anand Sing and Pat Connolly

Target Managers Anand Sing and Pat Connolly

LOD Checklist

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

Best Company Ever Award Invitation

Mar 17, 2008 by:   Tim Stanley

For the last two and a half years, I've been working on helping Target corporation with a project to bring a dashboard reporting application to work on a mobile device.  The project has been well received and so popular among store managers, that it's won an award within Target. Not just any award, but the Best Company Ever Award. It feels like winning an Oscar.

Why did it win?  First and foremost for the vision the business leaders had in providing the software tools that make the day to day life of the store managers easier.  The bottom line, it saves time, not just a little bit of time mind you, but a big chunk of time that managers had to spend getting data from multiple systems and from multiple printouts now combined into a real time display of events as they unfold in the store.  Everything from unloading of stock on trucks to stocking of shelves and price changes. The vision didn't come easy.  Numerous releases were put through the paces before the team hit on the award winning combination with a graphical interface that worked on a touch screen without requiring a stylus.

The second reason I believe it won was an extremely high quality deliverable. The last release provided for testing only had one issue reported against over 100,000 source lines.  The high quality made for quick pilot and rapid deployment throughout the 1600 stores.   The high quality allowed the team to focus on developing new features, and not become encumbered with extensive support issues.

The solution was developed by Junction solutions, and the development was completed by the development team at ISS India PLC.  I was fortunate to participate as the project manager for Junction Solutions on this project.

Quick Application Stats

The application is a true service oriented application gathering data from numerous enterprise and store specific systems to present them in a seamless interface to the store managers.

  • ASP.NET 2005 application
  • SQL 2005 database for main response information
  • Oracle database for news information
  • Over 100,000 source lines
  • 24 client screens (full IE and mobile device touch screen based layouts)
  • 6 ISP .Net Services
  • 1 POS .Net Service (Real time sales)
  • 6 Headquarters Java based Services (Sales, Payroll, REDcard, Guest Survey, Birthdays and Anniversaries, Transitions)
  • 15 admin screens
  • 2 admin reports

Award Information

The Best Company Ever award at Target is presented twice a year to the project that is the “Best” overall project within the entire Target Corporation.  The award is selected from all projects (not just IT) within the company and was awarded to the October 2007 release of iLeader (Automated Leader).

The award invitation reads:

You deserve our highest recognition

Your team delivered more than major results on a major initiative. Your Energy, Enthusiasm, Execution and Excellence demonstrate what it means to be the Best Company Ever.

You did it!

Thanks to your work in creating a new tool that delivers real-time actionable information through an easy-to-use, easy-to-understand interface, leaders on duty now get an instant big-picture view of store performance in the palm of their hands.  This ultimately helps them operate their stores more efficiently and deliver on our “Expect More. Pay Less.” Brand promise for our guests.

The formal presentation of the award will be Wednesday, March 19, 2008 by the president and CEO, Bob Ulrich.

Best Company Ever Team Recognition

IMG_0588

IMG_0589

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

Sites For CSS Design Themes

Mar 11, 2008 by:   Tim Stanley

Don't pick a web site engine (blog, CMS, or other), unless you have the ability to customize the style. A web site should have the ability to change designs over time as personal preferences, and desired style and color preferences change.  Sites using a site builder tool require a lot of hand coding or a complete re-generation of the site.  This can add additional cost or time to customize.  Sites that use a theme engine can be modified or changed quickly with minimal cost or time.

For a better example of what theme switching can do, see Themes Galore.

Engines that use a theme engine to allow quick styling and deployment include the following.

For a more extensive list of Content Management Systems (CMS), refer to the post on 50 Content Management Systems.

Some of the more interesting CSS templates, or themes I've seen are listed below. These themes include the CSS and the templates uses for posts, pages, headers, footers, etc.

Tags: Free themes, CSS templates, Wordpress themes, XHTML templates

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

BlogEngine.Net Secret Links

Mar 10, 2008 by:   Tim Stanley

BlogEngine.Net provides quite a lot of very rich functionality, but the rich functionality is not documented as extensively.  I've tried to put together a list of all the types of links that BlogEngine.Net supports. 

Posts

Pages

Categories

RSS Feeds

Special Links

AXD Handlers

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList

How to Remove Projects in the Visual Studio Project MRU List

Mar 08, 2008 by:   Tim Stanley

Visual Studio.Net (2003, 2005 and 2008) keeps a list of recent projects shown on the Start Page in the IDE. Sometimes when moving projects around on the disk, one can end up with duplicate names and this can be confusing. To resolve this, the list in the registry must be updated.

Visual Studio Recent Projects

Visual Studio .Net keeps it's list of projects in the registry. Depending on which version depends on which location the list is stored.

  • Visual Studio 2002 - 7.0
  • Visual Studio 2003 - 7.1
  • Visual Studio 2005 - 8.0
  • Visual Studio 2008 - 9.0
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.0\ProjectMRUList]
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\ProjectMRUList]
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList]
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\ProjectMRUList]

There is also a FileMRUList that is maintained for individual files as well.

Warning: All the normal cautions to editing the registry apply. Editing the registry can corrupt your system. If you don't know what your doing and don't know how to fix it, don't even think about doing it.

 

The registry entry contains a list of files as REG_EXPAND_SZ values similar to what is shown below.

   1: File1 - C:\Projects\Test\Test1.sln 
   2: File2 - %USERPROFILE%\My Documents\Temp\ReportTest.sln 
   3: File3 - %USERPROFILE%\My Documents\Projects\ReportTest.sln 

All you have to do is find the entry that you want removed, and delete the registry entry.

Update: If you remove an entry in the middle of the list, then Visual Studio does not show any entries after the entry that is removed. For example, consider a list that contains the following registry entries before editing.

   1: File1 - C:\Projects\Test\Test1.sln 
   2: File2 - %USERPROFILE%\My Documents\Temp\ReportTest.sln 
   3: File3 - %USERPROFILE%\My Documents\Projects\ReportTest.sln 
   4: File4 - %USERPROFILE%\My Documents\Projects\Solution4.sln 
   5: File5 - %USERPROFILE%\My Documents\Projects\Solution5.sln 
   6: File6 - %USERPROFILE%\My Documents\Projects\Solution6.sln

If you remove the entry for File4 then you would be left with the following.

   1: File1 - C:\Projects\Test\Test1.sln 
   2: File2 - %USERPROFILE%\My Documents\Temp\ReportTest.sln 
   3: File3 - %USERPROFILE%\My Documents\Projects\ReportTest.sln 
   4: File5 - %USERPROFILE%\My Documents\Projects\Solution5.sln 
   5: File6 - %USERPROFILE%\My Documents\Projects\Solution6.sln 

Visual Studio however, will show only the entries for 1 through 3. If you want entries after 3 to show, then you must renumber the subsequent entries to have the following.

   1: File1 - C:\Projects\Test\Test1.sln 
   2: File2 - %USERPROFILE%\My Documents\Temp\ReportTest.sln 
   3: File3 - %USERPROFILE%\My Documents\Projects\ReportTest.sln 
   4: File4 - %USERPROFILE%\My Documents\Projects\Solution5.sln 
   5: File5 - %USERPROFILE%\My Documents\Projects\Solution6.sln 

Josh Beach wrote a tool Visual Studio Project MRU List Editor that appears quite useful if you have to do this on a recurring basis. [1]

Updates

  • May 22, 2007 - original post.
  • Mar 8, 2008 - update with Visual Studio 2008 notes.

References

Add to favorites Send to a friend Digg It! DZone It! StumbleUpon Technorati Reddit Del.icio.us NewsVine Furl BlinkList