What tools are required for teams that are developing software for the cloud? Verify this checklist to find out if your team has the basics for productive software development in place.
Contents
Versioning system
You know that you
(1) have one, (2) it is set up correctly and (3) and your team is using it
… if you can answer the following questions with YES (in case you’re not sure if you need a versioning system read here)
- Each team member is able to revert source code to a former version at any time.
- You are 100% sure that this works because you have tried and tested it
- You are able to quickly find out what has changed between versions
- You are treating configuration files, documentation and any other artifacts like your source code – everything is under version control
- Team members check in modified source code at a regular basis
- Your team has agreed on a common branching strategy
- If your versioning system would fail completely today there would be no panic. You would just set it up again from scratch and reload yesterdays backup. You know that this would work because you have tested it at least once.
- If yesterdays backup was not created there is a notification in your team mailbox
Issue tracking
You know that you
(1) have one, (2) it is set up correctly and (3) and your team is using it
… if you can answer the following questions with YES (in case you’re not sure if you need an issue tracking system read here)
- The team has a complete list of all currently known bugs and issues
- The list is accessible to each team member and everybody is be able to work on issues (e.g. add comments)
- Each team member can see “his/her” issues with one single click, and ideally get automatically notified about status changes for “his/her” issues
- The team has a clear policy on issue status management: what issue status values exist and who is allowed to change issue states? An example: many teams follow the principle that an issue should be verified and closed by the person who initially opened it. Your team may want to handle that differently – just ensure that everybody agrees on the same standard.
- Each issue in the list has at least:
- a clear title and a description that each team member can understand without need to ask whoever has written the issue
- a status and an owner within the team
- additional information required to tackle the issue (screenshots, steps to reproduce, logs etc.) and meta information that helps to manage the issue and understand its history (time created, component or service concerned, version, …)
- Daily backups are created and stored on a separate system. The backup / restore procedure has been tested at least once. This is not required if you use the cloud service of some provider (see article)
Build and Deployment System
You know that you
(1) have one, (2) it is set up correctly and (3) and your team is using it
… if you can answer the following questions with YES (in case you’re not sure if you need a build / deployment system read here)
- Each developer can create a new build with a single command or click
- Build status is visualized and team members get notified about build problems
- New builds can be deployed to the desired environment with a single command or click (at least for the productive environment most teams will set up rules regarding who and when this is is allowed)
- You can always tell which version is installed on what environment
- You have a track record of builds and deployments
Team Collaboration and Knowledge Base
You know that you have what you need if you can answer the following questions with YES (in case you’re not sure if you need tooling for team collaboration read here)
- Each team member can access a common system and find the most relevant 5 documents via direct short link
- Each team member can add or modify content
- Each team member can search for information or documents via keywords
Check out these related articles:
- Tools? These are the must-haves for every dev team
- Should we use SCRUM ? How to organize a dev teams work
- Cloud Native ? What it means to develop software for the cloud