I have heard this question a number of times now - "Should our team/unit/company use Team Foundation Server or Project Server for managing our IT projects?".
My answer is that it is usually not an Either-Or proposition. The two solutions are complementary.
Project Server, or more accurately the Enterprise Project Management (EPM) solution, addresses the following business imperatives:
- Portfolio Management: Portfolio management is all about managing a group of projects. Portfolios facilitate managing budgets, resources, timelines, dependencies, business alignment, governance etc for a group of projects in a meaningful way. Portfolios also server as a useful tool for modeling the impact of incoming work; "How does this new project affect my other projects? Do I have capacity to take on this new work? What other project can I put on hold/divert resources from etc?". Project Server integrates with Portfolio Server for advanced portfolio management.
- Project Management: And here I really mean two levels of project management. The first level is managing the entire project lifecycle: managing the project through the various phases - inception, planning, execution and closing/transitioning. Some of the major activities that happen at this level of project management are building the project charter/vision, budgeting and funding, staffing, identifying measurement metrics (metrics that will quantify the project performance in each phase, across the entire lifecycle), planning the phases of the projects, identifying the work packages/deliverables, identifying the key milestones and communications. In my observation, this type of project management doesn't require very detailed project plans (with tasks, assignments fleshed out to a very granular level - say at the 8 hour, FTE unit level) - it is really all about establishing the framework for the detailed planning, execution and delivery management. This level of project management is all about developing the project plan for the business decision makers - the CxOs, the VPs, the GMs etc. Too much detail at this level is usually noise and can be counter productive. This type of project management is best carried out in the EPM world. As far as methodologies go - IMO, they are pretty similar in principle - MSF-CMMI, Traditional Waterfall, PMBOK, Prince2 etc. The second level of project management is the more tactical, on-the-ground type of project management. This is part where the work is fleshed out to a very granular level - to the level where the folks who do the work have a very clear idea of what they need to work on. when it needs to be worked on, what the dependencies are, what the constraints are etc. Project Managers have to take a frequent stock of the status and make frequent minor adjustments and occasionally major adjustments to ensure that progress is made. Now, in most IT organizations, the two types of project management activities are carried out by different people - the former by project managers from the PMO and the latter by project managers that are embedded with the development team - sometimes, rather most of times, this is the development manager/lead; but, it is not unusual to have the same project manager wear the two hats - that of a PMO or an Enterprise Project Manager and that of a Team Project Manager/Development Manager.
- Resource Management: Project Server has the knowledge of all the work going on the organization and all the resources who do that work. Project Server has the authoritative resource capacity/demand information. So, Project Server is a great project staffing, cross project resource loading tool. A cool new feature in Project Server 2007 is the ability to allocate a resource's time to a project without having to do actual assignments. This feature is called "Resource Plans" - IMO, this is a pretty powerful and a long sought after feature. This makes is very easy for PMOs/resource managers to allocate resources to a project without have to work through all the resource assignment details or creating dummy assignments to decrement the resource's availability.
- Time Management: Project Server has a pretty good time-sheet solution. Team members can record time against planned work, unplanned work, project work, non project work at varying levels of granularity - from the individual task level to the project level.
- Tracking all the work in the organization. Project Server allows organizations to track ALL work in the organization. Not just development project, but on-going maintenance work, non development projects, non IT projects etc.
The net is that Project Server is a great work management solution for managing all the work in an organization. It is a great decision support system for the project stakeholders, the business decision makers, the PMO, the resource managers etc.
Now TFS. TFS is the development team's hub. This where the team lives day in and day out. TFS is a very flexible and a powerful change management system where the development team can track work, issues, risks, requirements. The change management system has deep integration with the test and the source code controls system as well and is hosted in the integrated development environment. This is great because it makes the developers very productive. All the tools they need are integrated and available in one place. TFS is where the day to day working of the team is managed.
So, the core TFS modules are
- Work item tracking system (change management system): Users can manage their work artifacts (requirements, tasks, bugs, issues, any custom artifact that they choose to define) in the work item tracking system. Work items can be associated with test results and check-ins providing greater traceability. In addition, TFS has a policy feature that allows organizations to define working policies such as "every check in must be associated with a work item". This is pretty powerful. The WIT system UI is seamlessly integrated with the development environment. The work items can also be worked on with other tools such as Excel and Project (the WIT system has a public OM - so third party apps can easily integrate with the WIT system and provide a new management surface for the work items)
- Source Code Control System: An industrial strength source code control system. The central code repository and code management system for the entire team. Again, the source code control UI is seamlessly integrated with the development tools.
- Build Management - Team Foundation Server has a great build management feature set that allows teams to define build configurations, define build schedules, manage build assets (machines where the build will be performed) etc. The build systems uses the MS Build platform. Again, the build system UI is integrated with the development environment.
- Test Automation- VSTS has test automation capabilities. Test results are stored in TFS. Test results can be associated with a build ("test X ran successfully for build 184.108.40.206") or a specific run. Test results can also be associated with work items ("test X ran successfully for bug # 123").
- Reporting system - and finally the reporting system. All the data generated and used by the development team is in TFS. TFS provides a sophisticated data warehouse for analyzing this data. The warehouse stores not just current data, but also historical data. This enables teams to view trend information, do forecasting etc. The reports enable teams to identify areas of concern, issues in a timely fashion and react appropriately. The reporting system is a TFS cornerstone feature.
Now, the WIT system can be used for doing tactical project management, but it doesn't provide support resource management, schedule management for a portfolio of projects. TFS has no notion of a resource's overall capacity. If a resource, who is already working on tasks in a different project, is allocated work in a project, no red flags are raised. Project Server has strong resource management capabilities. Resource utilization can be managed across multiple projects. There are checks and bounds in place to prevent resource over allocations. Schedules can be managed across multiple projects - CP links (cross project links) and Deliverables/Dependencies provide a great way to manage cross project scheduling and other dependencies.
TFS doesn't really manage the fiscal aspects of the project; Project Server on the other hand has strong support for fiscal data management (resource cost rate tables, budget resources, cost resource).
One more difference that I'd like to highlight is the fact that development projects are typically executed in TFS; ongoing maintenance work is executed in other system. Anecdotally, development work accounts for less than half of the IT budget. Project Server can track all the work across the organization; app dev projects as well as maintenance work.
It makes great sense for both of these systems to work together in a complementary fashion. TFS is the execution platform and PS is the enterprise planning platform. TFS is well suited for a dev team's needs; PS is a great decision support system for the business decision makers, the PMO etc.
I drew this diagram a couple of years ago - when I was trying out the early smart art feature in PowerPoint 07 when it was still in Beta - and I think it still makes sense:
While we work on providing this functionality out of the box, there are a couple of options available currently for connecting the two systems . The PS-TFS connector solution has been mentioned on this and other blogs before. The source code and documentation is available right now. The other one is the ProjectParty solution from OranTech.