Build your own Scrum tool
Have you ever considered that the tools which you are using may determine the way how do you work? Especially the Scrum tool which you use might determine how good your Scrum really is.
Most of the Scrum tools are the way too complex
I hate complexity. I hate unnecessary complexity. I hate unnecessary complexity, especially in Agile. This is why in my opinion most of the available “agile” and Scrum tools are not so Agile. For example tools like Jira have been created for top managers who like to watch charts and numbers which usually are far away from reality and to be honest, are not helpful at all. Of course, we use Jira if needed but we are trying to do this in the simplest way possible.
There are also a few good agile tools for example Trello. Trello is great as a task board but sometimes you may need something more. This is why I decided to try to use a simple google spreadsheet where we could keep our Sprint Backlog and track the progress. We have done a few tests with our teams and I would like to share with you the effect of two hours of playing with google scripts which might be helpful for you.
The spreadsheet you may find here. Please note that you have to be logged in to use this tool. If you want to play with it, it would be great if you could make a copy first and play with the copy.
You may notice that in the menu I’ve added two more options: Sprint -> Start Sprint and Sprint -> Archive Sprint this is what makes this spreadsheet a Scrum tool.
How does this Scrum tool work?
We are starting by creating Sprint Backlog. Sprint Backlog is a plan for the next iteration. From my experience, the best way to do that plan is to prepare a set of user stories and then split each of them into small tasks which you can estimate in hours [Hours Estimated]. Then copy the Hours Estimated column into the Hours Remaining column and you are ready to start Sprint by choosing from the menu Sprint->Start Sprint. It will create the starting point for your Sprint Burndown Chart. Every day your team should update the remaining hours for each task. Remember that in Scrum we are not tracking how many work hours were spent on each task but are rather focused on how much work still remains to be done. The spreadsheet which I have created will update the burndown chart every night. At the end of Sprint, you may archive it by clicking Sprint -> Archive Sprint – it will create a new tab with archived Sprint details and clean up the current Sprint.
How to build your own Scrum tool?
The spreadsheet which I’ve shared with you is just a demo – the starting point for you is to build your own tool which will be dedicated exactly to your team’s needs.
Below you can find the (ugly) code which I’ve used in this spreadsheet. You can copy it and paste it into Tools->Script Editor in your own spreadsheet. Then you can play with it as you want.
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var backlog = ss.getSheetByName("Sprint Backlog");
var burndown = ss.getSheetByName("Burndown Chart");
var source = backlog.getRange("E1:F1");
var values = source.getValues();
var startingValue = values[0][1];
values[0][0] = new Date();
var lastValue = burndown.getRange("B1").getValue();
if (!lastValue) {
lastValue = values[0][1];
}
var expectedValue;
var lastRowNumber = burndown.getLastRow();
if (lastRowNumber == 0) {
expectedValue = lastValue;
} else {
expectedValue = startingValue - startingValue/9*(lastRowNumber-1);
}
values[0][2] = expectedValue;
values[0];
burndown.appendRow(values[0]);
}
function archiveSprint() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var backlog = ss.getSheetByName("Sprint Backlog");
var burndown = ss.getSheetByName("Burndown Chart");
var today = new Date();
var archivedSprint = ss.insertSheet();
var oldBacklogValues = backlog.getRange("A1:H99").getValues();
for (i=0; i< oldBacklogValues.length; i++) {
archivedSprint.appendRow(oldBacklogValues[i]);
<code>};
var oldBurndownChart = burndown.getRange("A1:H20").getValues();
for (i=0; i < oldBurndownChart.length; i++) {
archivedSprint.appendRow(oldBurndownChart[i]);
<code>};
backlog.getRange("A2:H99").clear();
burndown.getRange("A2:H20").clear();
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Sprint')
.addItem('Start Sprint', 'recordHistory')
.addItem('Archive Sprint', 'archiveSprint')
.addToUi();
}
And then you need to set up triggers for automatic update of the Spreadsheet every day. In the script’s editor go to Resources->Current project’s triggers and add new. For example, I have added 5 separate triggers for each weekday just before midnight.
And basically, that is all. Enjoy!
PS: The code and the tool might be done much better, especially those hard-coded values etc. This is just the very first proof of concept. I would ask you to tell me if it is helpful at all and if there is a point to developing it more. I would also love to see your implementation of such a Scrum tool.