Questions to ask as a developer
Door FlorisVedder op zo, 07/23/2017 - 18:06

Probably you know the saying: "Assumption is the mother of all fuck-ups"
As a developer there is a good change that not everything is crisp and clear. Or you think it is (partly) clear and then there can be unexpected functionality, code or client expectations. To have a better insight in a project there are several questions that you can ask. Below are some questions and steps that I use when I work on a project. I hope you can use them so it prevents you from unexpected problems. I'm working in web development so some question may be less useful for other fields but feel free to pick those that are useful to you and forget the rest.
Assignment
- What is the goal, what should be the benefit for the customer and/or his customer?
- Is the assignment clear or are there for example differences between drawings and the written parts of the assignment.
- Is there anything in the assignment that implicit means that there is extra functionality? Like for example a search field without information about the search page.
- Is there a chance that the assignment or parts of it will change?
- Are there parts in the assignment where you should advice alternative solutions?
- Are there parts in the assignment where you should advice extra functionality? Like for example a pager to the next item or a thank you message.
- Are there third parties involved and do you need information from them?
- What is the expected planning? Is the planning reasonable and are there other parties that are involved in the planning
Estimation
- Is the assignment clear? see questions about the assignment
- Is the technical situation clear? see questions about technic
- Are there parts the you can or should reuse from the existing project
- Are there parts that should not be estimated by you but by a colleague or where you need knowledge of a colleague
- Do you need extra time related work? For example: setup a work evironment, setup a test environment, testing, cleaning up technical debt.....
- If it is an existing project, look in the code at the places where you want to make the changes
- When you make the estimation make notes of the stuff you come across, like the files or the steps you have in mind for solving the problem.
- Did the client made assumptions in the Assignment that don't match the current state of the project? Discuss this.
Technical
- Is the project technical indeed setup as you expected, have a look at the code?
- What are the different technical directions you can use for a solution and which way fits best in this case?
- Is the project up to date or should there (security) updates be done?
- Is there a workflow for (security) updates
- Are there libraries in use? Should a library be updated and does this have influences for the code?
- Are there API's in use? Are they changed and should therefore code and/or libraries be updated?
Documentation
- Where is the documentation of the project? Wiki, Readme?
- Is the documentation up to date?
- Where can you find passwords? Is there a password manager for this?
Servers and deployment
- Are all servers/environments setup? Development, Testing, Acceptance, Production?
- Do you know what deployment technics are used for these environments?
- Is the setup thoroughly tested and used or are they new or recent modified?
- Are your environments up to date with your production environment?
- Is there any change that code or configurations are changed on the production server an will be overwritten by a deploy?
- Is the current feature or set of features the only one or are there more (maybe in other teams)?
- When there are more how should they be tested and deployed, separate or together? Realize the consequences of one of both choices.
Version control (Git)
- Is the project under version control?
- Is your code up to date?
- Is there any risk of code or configuration being on production that is not in Git or not merged into the master branch
- What git workflow should be used?
- When working in one general development branch is there a risk that other people work also on this? Which may result in unintentionally deploying other code
- Or should it be a better approach to create a new development branch straight from master specific for this (set of) changes?
- What is the naming convention for your git branches? Like the use of ticket numbers.
- Is there a workflow for merge requests?
- Should merged branches be thrown away to keep things clean or should they be kept for easy reverting?
Testing
- Is the test environment up to date with the production environment? Of course except for the modifications that ment to be new
- Are the developers that made the modifications sure that the test environment is tested and setup as ment? So the final tester can do a good clean test
- Have you tested the functionality sufficient yourself before deploying it to the test environment
- Is the expected functionality and are the steps for testing clear for the tester? You can also walk through it together.
- Is there a test plan? What is important functionality of the project that always should be tested?
- What was deployed last time? Do also test this to make sure it's not overwritten or changed by accident
- Are there any API's in use that should be tested?
- Are there any libraries or modules updated that should be tested?