Culture

Everyone please stand up!

“Everyone please stand up!”

That’s what at least one of us shouts at 11am every day. This is the time all engineers, project and product managers gather around the usual pairing station; a randomly nominated engineer fires up the shutl Google hangout session, makes sure the video and sound are working fine and any remote engineers also dial into the hangout and join.

The engineer then opens up our Engineering board on Trello and starts walking through the cards one by one in each column from right to left (I’ve added details of how and why we organise our board below). It gives you the opportunity to talk briefly about what you’re working on and any help you may need. The team is welcome to fire up quick questions if they wish know more about a card. If a discussion starts to drag someone will shout out “take it offline!”and it will be picked up in a dedicated chat outside of the stand-up.

Once all cards on the board are discussed, the engineer asks if there’s anything anyone would like to add. Now is the time to talk about any exciting news or interesting pager duty alerts or anything miscellaneous. That concludes a stand-up and it usually doesn’t take more than 10-15 minutes.

What is a stand-up?

What is a stand-up? Why do we need it? I am not going to bore you with any jargon or talk about methodologies. We believe the best methodology is whatever works best for us, and don’t like to label it. Let’s get down to how we define stand-ups at Shutl: A Stand-up is a very important daily routine for our engineering team to share what they are working on, what worked and/or what didn’t work for them and understand the current active tasks for the team and their current state. It’s also the best time to find a pair if you want one.

As the team has grown, we have more people working on different stuff and it’s hard to keep track of what everyone is on. By spending a couple of minutes in stand-ups, we can discuss any ideas or obstacles we have so others can share advice and experience. It’s also crucial to know what you are working on is not conflicting with any other tasks. The stand-up gives us opportunity to resolve any potential conflicts. It also lets us know when we’re about to deploy (which we do multiple times a day) so we can keep an eye on our alerts and monitor accordingly.

How has the format of stand-up evolved?

As you may already know, Shutl started out as a small start up company and when I joined over 3 years ago, there were only 4 engineers, 1 designer and 1 CTO in the engineering team. At about 11am, we gathered and stood up in a circular shape in a quiet corner of the office. Everyone talked about what they had been working on the previous day and gave updates. We didn’t have any cards or tools to keep track of all the current tasks. Our stand-ups could became a meeting and drag on for longer than we anticipated.  We knew that a change in our process was due.

Then came the sticky notes on a wall. We put colour-coded sticky notes on a wall to show what everyone is working on. It was messy and, you know, sticky notes can be not that sticky and we’d often lose some notes. It was also not practical for people working remotely.

Then we thought an online tool might help and we started using Pivotal Tracker to keep track of our work. Our stand-up moved to around the monitor and we’d talk about the tasks. However, the tracker is used by both product and engineering team and it became cumbersome to use it to show the current tasks. We had to differentiate a feature or a goal that is in the current sprint and the detailed tasks that someone is working on towards that goal. One user story often involved work across multiple services/code-bases, and there was no user-friendly way to show this distinction in pivotal. Eventually we discovered Trello to manage more granular tasks. Which is where we are now, with a team of around 15-20.

How we categorize the current state of the tasks

It’s imperative that we know what state everyone’s work is at. Here are the 6 columns we have on our Trello board:

  1. In progress – Features, bug fixes, chores and anything else that you are currently working on
  2. Code Review – Once the work is done (on a branch), you’d send a Pull Request on Github for a code review from peers.
  3. Deploy on staging – Once a pull request is merged and tagged, it is automatically deployed to staging, and the card move to this state
  4. Delivered in Tracker – After the deploy on staging, the author does a sanity check on the work and then ‘delivers’ the story in Tracker for a Product Owner to verify
  5. Ready – If the product owner is happy, it’s now ready to deploy to Production.
  6. Deployed recently-ish – The cards deployed to production in the current iteration

As you can see the columns are in chronological order and we’ve put them left to right so the cards follow in the same direction. We talk about each card and ‘walk the wall’ as opposed to going around the circle and having everyone talk, which gets confusing as it detracts from a structured view of the current state of work and also leads to redundant comments.

Summary

To sum up, I think we all are now comfortable and proud of the current state of our stand-ups,  who wouldn’t appreciate a daily overview on what goes on in the team? Of course there is always room for improvement and we are always open to tweaking and adapting our process to tackle any issues we find. If you have any exciting ideas you’d like to share, we’ll be happy to read those in the comments.

Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *