Development sprint workflows
During development sprints, you plan work that needs to be completed by the end of the sprint, and you try to leave some extra room for bugs that might occur and need to be fixed. When bugs occur, youâre expected to drop everything youâre working on to solve them, but this is a huge strain on developers and there are better ways to deal with this. This post describes how I plan to use time more efficiently and to keep developers focused on their task at hand during sprints.
Sprint duration (2â6 weeks)
A specified time frame to complete tasks is an excellent way to make sure tasks are being completed on time. The time pressure will promote focus rather than distractions during a workday. By time pressure I mean that there is a deadline, not an excuse to cram too much work in a given time frame. As a team, you will decide on a duration for the upcoming sprint. This is not a fixed amount of weeks, because sometimes there are events or other things that will block a full 6-week sprint. And uninterrupted sprints are exactly what weâre trying to avoid here.
The minimum amount of time for a sprint is 2 weeks and the maximum amount is 6 weeks. If you were to go longer than 6 weeks, productivity will go down, because âthere is plenty of time to do this later, Iâm making something cool right nowâ. The deadline forces you to make choices about what to make and which features have the highest priorities. This means that you can decide to take on a large and ambitious project for 6 weeks, but at the end of the 6 weeks it has to be done. This could mean that you have to decide to only build the absolute minimum viable product (MVP) and build on this later on. The results donât always have to be perfect. This is not an excuse to deploy sloppy work, but itâs to build the MVP and build that as well as possible.
The backlog
Every once in a while youâll think of a new feature to build during a sprint. You will work on this during the same sprint after all other work has been completed. This should be discouraged. This is not meant to be mean or kill creativity, but to protect the overall product. Any new features will be added to the backlog and considered for the next sprint. This way, youâre not wasting your time on features that may not be as useful as you first thought. The âcool-downâ time you give to the feature, by just adding it to the backlog, helps to prioritize it. If you, and others, still think itâs a great feature after 2â6 weeks, you can go ahead and build it. If not, simply remove it from the backlog and no harm was done.
With that said, anyone is allowed to add features to the backlog. But only the development team and product owner decide which tasks will actually be added to an upcoming sprint. The development team knows best how long something will take to build, and this is why they have the last say on whatâs being built. The product owner will simply help to prioritize work during this process.
Jobs to be done
To help your team prioritize features and tasks, it could be beneficial to use âJobs to be doneâ in your workflow. A quick explanation can be found on YouTube. This will help to filter any of the new features or changes to see if they are actually beneficial to the users of your product. All tasks that add benefit to your product should get the highest priority because you will actually make the product more useful. Any other tasks will get a lower or even no priority at all.
Bug sprints (1â2 weeks)
After a few weeks of working on features and tests, there could still be several bugs. To minimize interruptions caused by these bugs in the next sprint, take one or two weeks between two sprints to hunt for bugs and resolve them. Any minor details from the past sprint can be altered during this bug sprint, but only after you canât find any more bugs. Itâs not allowed to start new features during this bug sprint. Any new features will need to be added to the backlog and can be added to the next sprint. A note about critical bugs: they always have priority over every other task.
Assign a âbug leadâ
Of course, hunting for bugs only really applies to a team that has no dedicated testers or QA team. When these people are present, they will collect all issues during the sprint and list them to be fixed during the bug sprints. A note about critical bugs: they always have priority over every other task. Assign a person within the development team to make decisions on which bug is critical and which bug has a lower priority. It doesnât matter which member of the development team takes this job, but itâs important that only 1 person does this.
There should only be minimal room for discussion because you can discuss something endlessly without making a decision. Ideally, the most experienced member of the team would take this task upon him- or herself, because he or she usually has better judgment on the subject. However, it could also be a great idea to let everyone try to take on this role, but only one person per sprint. This way, other departments will know who to talk to when something goes wrong, instead of bothering multiple people with their problems and creating irritation within the team.
The bug lead will determine if the bug is critical enough to make someone drop everything theyâre doing to resolve the problem.
Continuous Integration / Continuous deployment
To achieve a system always evolving and improving, continuous integration and continuous deployment (CI/CD) is a method to implement in your teamâs workflow. This simply means that new features and bug fixes are published as soon as theyâre done and tested. This way you can provide users of your product with quick solutions and new features.
Publishing workflow in Git
Once youâve completed work and fully tested your implementations, you can make pull requests (or merge requests) to the appropriate branch your team has decided on. You can use any CI/CD service to help test the code in your pull request. Assign anyone from your team to look over your code, remember, youâre now preventing them from working on their own tasks, so keep these pull requests short and to the point. Once they approve your changes, you can wait for someone to merge your pull request or do it yourself if you have this ability.
Versioning releases
To keep these releases simple to track, youâll have to use versioning and refer to these versions when talking about problems and solutions. For an excellent reference about versioning, have a look at Semantic Versioning. In short, the meaning for versions for MAJOR.MINOR.PATCH (0.0.0, 1.0.0, etc), are:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backward-compatible manner, and
- PATCH version when you make backward-compatible bug fixes.
(Copied from https://semver.org/)
These versions can get tagged through Git and then pushed to any repository service.
This is a lot of information for a single post, but I think it will add benefit to the workflow within a development team. The goal is to reduce distractions, get more work done, and have a good feeling about what youâve worked on when you go home in the afternoon.
Thank you for reading this post and if you have anything that you want to see explained in a better way, let me know and Iâll do my best to facilitate this change!
Posted on: November 5th, 2018I help you achieve great SEO, higher conversions, and help you grow your business