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?
Development
- · 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?)
Testing
- 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?
Reporting
- 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?