A beginning is the time for taking the most delicate care that the balances are correct, and so it is also with the beginning of one’s stint on a software project. Here is a list of questions that, I have found, it is good to have answers too within the first week or so of starting on a software project. Sometimes the answers to one will make it obvious that a related question does not apply, and sometimes just by asking these questions you can begin to add value by uncovering things that need further consideration.
- What is the primary language used to develop the project
- Where is the code stored
- What is the process for checking in changes to the code (code reviews, running tests before check in etc.)
- What will happen once I check in changes? (automatically built? Automatically deployed?)
- What environments will the software be deployed to, and how will it be deployed?
- Who or what deploys the software to those environments?
- Who supports the software in those environments?
- How is the software built/packaged to be deployed?
- What (if any) is the approval process for adding 3rd party code to the code base?
- What code quality tools are used?
- What coding standards does the project follow?
- How do users of the system interact with it (user interfaces, via 3rd party systems, emails etc)?
- How are users authenticated?
- How will the code be verified once it has been deployed?
- How are bugs in the software tracked?
- Once a bug has been identified how is it prioritized?
- Where are changes to bugs applied?
- Once a bug has been fixed how is the fix tested?
- Once a bug has been fixed who will test the fix?
- Does the system persist data, and if so - how?
- If the system persists data, who makes data model decisions for the project?
- Who makes architectural decisions for the project?
- When architectural and design decisions are made how are they captured and communicated?
- What monitoring tools are used to support the project in production, and how should I instrument my code to work well with them?
- What other systems does the system communicate with, and how?
- What are the trust boundaries between this system and the others it integrates with?
- How do different parts of the system communicate with each other?
- What laws does the system have to follow with respect to data privacy, auditing, secure storage of data etc?
- What privacy and security concerns exist for data in non-production environments? (is it a backup of production? Is it synthetic?)
- How will we know when we're done on this phase of the system's development?
- If we're aiming for a particular date for delivery, what is driving that date?
- Where is the best place around here to get coffee?
Please chime in with any useful questions you’ve asked in the past. Image courtesy of Duncan Hull.
Apologies to those who’ve seen this before, it was lost as part of a server update.