Sunday, June 14, 2009

Checklist before starting an IT project

Hi, here is an excellent post from
in order to ask yourself relevant questions before starting up an IT project.

Thank you Ian Nelson,

Project Management

  • What project management approach is used (e.g. PRINCE2)?
  • Are any formal development processes used (e.g. Agile, Cleanroom, Iterative, RAD, RUP, Spiral, Waterfall, XP, Scrum)?
  • How are projects separated and organised? (Identify potential mapping to TFS Team Projects).
  • Where are documents related to the project stored?
  • Identify the structure of a typical project development team. Does the team include Project Manager, Business Analysts, Developers, Testers, Customer Representative?
  • Team Continuity?

Requirements Gathering

  • Identify how the requirements gathering process works. Who gathers the requirements, from whom, what do they do with these requirements?
  • Are user stories captured?
  • How are requirements prioritised into iterations? By who?
  • How long is a typical iteration?
  • How is feedback solicited and gathered from users of an existing release?

Analysis & Design

  • How are requirements turned into a technical solution design? By whom?
  • Are functional and/or technical specifications written? What format do these take?
  • Are UML or other formal methods used?
  • What techniques do the technical team members use to produce estimates and schedules?

Work Item Tracking

  • What system is used to track work items?
  • What types of work item are tracked? (Bug, Task, Change Request, Quality of Service, etc)
  • How are work items triaged, prioritised and assigned to an iteration?
  • Who assigns work items to individuals?
  • Which stakeholders have the ability to create, update, resolve and close work items?
  • What techniques are used to break down large tasks to fit into an iteration?
  • Are work items pertaining to refactoring and non-functional improvements created?
  • Are user stories broken down into work items?

Source Control

  • Which source control system is used (VSS, TFS, Vault, SVN, CVS, etc)?
  • Is the source control repository backed up appropriately?
  • Is exclusive checkout used?
  • What branching and merging model is used?
  • Do developers check-in frequently?
  • Are database schema objects stored in source control? How?
  • What artifacts other than source are stored in source control? (Build scripts, documentation, etc)
  • What check-in policies exist?
  • Is it possible to identify relationships between changesets and work items?


  • · How is Documentation produced for the solution?
  • How do the development team share information? (Wiki, email, shared folders, Sharepoint?)
  • How many developers work on a typical project simultaneously?
  • Is Pair Programming practiced?
  • Do the team practice Collective Code Ownership?
  • Is time set aside for Refactoring?
  • Which IDEs are used? (VS2005, 2008, Expression Studio?) Which SKUs? Which licenses are held, or could be purchased?
  • Is VS DB Edition (Data Dude) used? Or other tools which perform a similar function?
  • Which databases are used? SQL 2000/5/8, Oracle?
  • What are the core outputs of the development process? (Windows apps, web apps, web services, WCF, SharePoint sites, BizTalk solutions, InfoPath documents, etc)
  • Do the developers integrate their work with that of Designers? How? (Expression?)
  • Do any coding standards or guidelines exist?
  • Do the team use any static code analysis software (FxCop, StyleCop, NDepend)?
  • What code metrics are gathered? To what use are these put?
  • Do the team regularly make use of any internally-developed shared resources?
  • Do the team regularly make use of any third-party components (Telerik controls, Enterprise Library, etc)?
  • What is the physical setup of the project office? Are developers working in a bull pen? Is a customer representative close at hand?

Builds and Integration

  • How are builds performed? MSBuild, NANT, etc?
  • Are build scripts source controlled?
  • How often are builds performed? (CI, Rolling, Daily, Ad-hoc?)
  • Does the build process increment the version number? Of which components?
  • Are database upgraded / recreated as part of the build process?
  • What “optional” steps are performed as part o f the build process (e.g. static analysis, unit testing, labelling?)


  • Do the developers write unit tests? Which framework is used? (NUnit, XUnit.NET, etc).
  • Is Test-Driven Development practiced?
  • Are mocking frameworks used (e.g Rhino Mocks, MOQ)?
  • Are database objects unit tested? How?
  • Are build verification tests run?
  • Are dedicated testers employed?
  • How is system testing performed? By who?
  • Is UAT performed? By who?
  • Is the FIT framework or similar used to define customer tests?
  • Is Load/Performance testing performed? Using which tools?
  • Are test scripts used to plan manual testing? Where are they located?
  • Are automated web tests used?
  • Are tests performed on a range of browsers / hardware?
  • Are Code Coverage metrics obtained? Use of NCover? Integration with NDepend?

Release Management

  • What environments exist (Dev, Stage, Test, Train, Live, etc)?
  • How are promotions authorised?
  • How are users notified of the release?
  • Who performs the promotions? Involvement from Systems team, DBAs?
  • How are web app promotions performed? Use of app_offline? Replacement of web.config?
  • How are database promotions performed? Data Dude? Scripts?
  • When are releases deployed? Out of hours?
  • Are release notes produced? How, and with what content?


  • How are reports and metrics on the development team’s progress created?
  • Are reports created to detail the work items included in each build?
  • Reports on code-churn, bug clearance rates?
  • Reports on estimated vs actual schedules?