As consultants, we have to develop estimates and the number one tool we use is Microsoft Project. Over the years, I have developed a set of best practices for using Microsoft Project that will make building estimates in particular more efficient.
De-clutter Your Workspace
When Project 2013 creates a new project, the default view includes a timeline and a Gantt chart. Remove both of these views because for estimation, these aren’t particularly helpful and clutter the screen.
In addition, I would recommend removing the Indicators and Task Mode columns.
If you’re working with budgets, I would add in the Cost column for sure so you can see your costs changing as you plan. I would also add in the Work column so you can see the hours.
Here is the de-cluttered version of the default project view.
Much simpler, easier to see the tasks and much faster for data entry purposes.
Split Your Window
Now that you have removed the timeline and Gantt chart, you can split your window to have the Task Form on the bottom pane and your task list on the top. To split your window, just drag up the window from the scroll bar on the right. If you right click on the Task Form you can change the view – I always use the Resources and Predecessors view.
This view makes allocations of resources and predecessors much easier than typing them directly into the cell. You can adjust each allocation and instead of typing predecessors as numbers you can pick them from a drop down list.
Configure Your Project from the Start
There are a number of settings that govern your project plan as a whole. While you can change these at any time, if you set these up from the start you will find Microsoft Project is a lot faster and easier to use.
Project Start Date
By default, Project sets the project start date to today’s date. It seems obvious, but setting the project start date to an appropriate date will ensure that your project plan flows appropriately.
Setting the Working Time is important for two key reasons – it allows you to add in vacation days, holidays, etc. and it sets how long the day is for your plan. By default, a day in Project is 8 hours per day. Many organizations work on a 7.5 or 7 hour day instead – I recommend changing this before you start plotting out tasks.
Switch to Auto Scheduling
By default, Project sets all new tasks to be manually scheduled. However, in most cases you want tasks to be automatically scheduled so that Project manages your schedule for you instead of you plotting out dates manually. For estimates, don’t use manually scheduled tasks if you can avoid it – always use automatically scheduled tasks.
You can change the settings for newly created tasks by going to File –> Options –> Schedule and setting the New Tasks Created to “Auto Scheduled”.
You can also switch to auto scheduling by clicking on the New Tasks: Manually Scheduled button in the bottom left hand corner.
Change this to auto schedule.
Pick a Task Type and Stick With It
Microsoft Project has three types of tasks that you can use.
- Fixed Units: units are fixed. If you change the work value, the duration is recalculated but units stay the same.
- Fixed Duration: duration is fixed. If you change the work, the units are recalculated. If you change the duration, the work is recalculated.
- Fixed Work: work is fixed. If you change the work, the duration is recalculated. If you change the units, duration is recalculated.
By default, any new tasks are created as “Fixed Units”, which in my experience is the least intuitive of the three options.
You can change this by going to File –> Options –> Schedule.
My recommendation is actually to use “Fixed Duration” and to check off the box “New Tasks are Effort Driven”. Here is why I personally find it easier.
When I plan out a project, I don’t think to myself – I need 83 hours of work and I have 1.5 developers to do the work. This is what the approach for “Fixed Work” assumes – it assumes you know the raw number of effort hours to plot out. Instead, when I estimate out a project, I think to myself, “I need 2 developers for 2 weeks” or “I’m going to allocate a project manager for 30% of his/her time for duration of the project”. Fixed Duration works MUCH better for these types of scenarios because it is inherently schedule driven and not work effort driven. Work is calculated as an output – e.g. if you allocate 2 people x 2 weeks x 50% with 8 hour days the work is automatically calculated to be 80 hours.
If you’re the type of person who thinks in effort hours, then use Fixed Work as your task type.
The worst practice in my experience is having a project plan that uses multiple tasks types – this can cause errors in your plan and makes it hard to follow. Set the default task type and stick to it consistently.
Highlight Your Critical Path
One of the key challenges with large and complex project plans is tracing through the critical path and ensuring that all your dependencies are included so that the path flows from the beginning to the very end of your project plan.
One easy usability enhancement you can do is to highlight critical path tasks. You can change the text style of the critical path tasks – for example, you could change them to red and bold. To do this, you click on Format –> Text Styles and then select Critical Tasks from the Item to Change dropdown. You can then change the color, font, size, etc. for those critical tasks.
You can also highlight critical tasks in the Gantt chart as well by clicking on Format and then clicking the Critical Tasks checkbox.
Keep Your Dependencies Simple and Modular
A project plan is a set of tasks organized as blocks. For example, the out of the box Software Development plan in Project is a series of modular blocks of tasks.
In general, I always start with the summary tasks first and create dependencies between them instead of creating relationships between tasks. By using this approach, you can abstract what is inside each module and change it around without breaking the dependency.
This helps with moving around sprints, re-organizing complex plans, etc. If I can keep the dependencies limited to the modules and not individual tasks, I can re-organize them as a set of blocks instead of having to re-organize each task and check every dependency.
Every project has specific tasks (building something, testing something, etc.) and then an amount of work to manage the project. “Management” in this case could include project management, architecture, operational support, etc. as pools of hours allocated to the project and not to a specific task.
In theory, you could add these overhead tasks to every single task as a resource allocation but this becomes impractical quickly. Instead, what we do is create a specific task for overhead tasks such as Project Management, Technical Architecture, etc. – any role that isn’t tied to a specific task.
This is where the Fixed Duration task helps a lot – in most cases, it’s conceptually easier to think of allocating a project manager or architect across the duration of a project or phase at % allocation. For example, for a large project, it might require a full time architect or even multiple architects for the duration of the project to supervise the development team. When you estimate this, do you think “I need 542 hours of architecture time” or is it more practical to estimate with a model like “I need 50% of an architect for 6 weeks”? I find the later is much easier to model. We can create a task that encompasses the duration of the project or phase and then just allocate the resources appropriately.
Adding contingency is unfortunately not easy in Project and there are multiple types of contingency – hours, time, resources, cost, etc. There are a few ways we add contingency to our projects:
- You can use a custom formula to add a % to your cost. For example, you could create a Cost with Contingency column and make it equal to Cost * 1.10. This works well for cost calculations but doesn’t impact hours or time.
- For schedule contingency, you can create tasks with no resources and just have them as artificial delays in the project plan – these don’t increase your cost but allow for schedule slippage.
- Another schedule contingency approach I have seen used is to use a 7 hour calendar when you have an 8 hour day. This effectively provides an additional hour per day in schedule slippage. However, again this will increase time while not increasing cost or hours.
- To add hours and then impact the schedule and cost accordingly, the only way to do this is to add hours to your plan, either as a separate task or baked into the existing tasks.
For macro estimates, I like the first approach the best because it keeps the project plan lean while allowing you to change contingency globally to increase the cost. This is particularly useful for fixed cost projects. However, this also means that you may have an unrealistic schedule or need additional resources if the contingency is actually needed because the hours are not in the plan.