DevTeam Blog

Archdaily's Dev Team Workflow Manifest

07 Feb 2017

By Diego Acuña Rozas

The organization and management of a software development team is one of the key factors to create quality software, so it’s crucial for software teams to have clear definitions and apply good practices to make the management of the team a strength more than a weakness. In this article, We’re going to explain how ArchDaily’s Development Team handle its day to day job and why We use the methodology that We use.

Handling and manage a software development team can be a daunting task due to several factors, such as:

Teams not necessarily need to follow one of the standard software methodologies, but it can be a big mistake to not follow any methodology at all. Just make sure your team is being managed in a clear and structured way and that every member of the team is committed (and in agreement) with the used methodology.

Here at ArchDaily, We follow an agile approach and our framework of choice is Scrum. This framework gives some useful guidelines (which can be adapted to every team’s needs) and the support of online management tools for this methodology is huge. Before going into the details of our version of Scrum, let’s talk about our team’s architecture.

Team Infraestructure

The general picture is:

Team Architecture

The above graph shows the general infrastructure of AD’s dev team. In general:

Next roles are very self-explanatory:

The main reason to decouple the standard dev role into more specific roles is to improve communication workflow inside the team. In general, every Lead Backend Developer forms a sub-team with his/her Backend Developers. The frontend and DevOps are sub-teams by themselves.

With a well defined infrastructure, the next step is to define how the chosen methodology is going to be used.

Scrum through AD’s eyes

Scrum is a well known framework for software management which became highly popular when agile software methodologies made their appearance. The workflow in Scrum is based on different stages and elements. The following ones are the key elements for our own workflow:

Summarizing:

Stage or Activity Main characteristics
Backlog Planning
  • CTO meets every sub-team
  • Every sub-team defines stories for the current backlog
  • Favor atomic stories!
Iterations Size 2 weeks
Daily Meetings
  • Team shares their work on the past and current day
  • Team shares problems and findings
  • For detailed help on a specific problem, members should meet on private
  • No more than 15-20 minutes
Constant Backlog Revision It is allowed to add/modify stories in the backlog (to favor for example atomicity)

Implementation

The online tool that we use for our software development workflow is PivotalTracker. Basically, We have one project for every sub-team inside our main team:

To have entire visibility of team’s tasks, PivotalTracker has the concept of Workspaces:

PT Workspaces

which gives the ability to have in one board, access to selected (or all) the boards on different projects.

In PivotalTracker, there are four different types of stories:

Backlog Planning In Practice

For the backlog planning, developers should use the Icebox board in the current working project. Every new feature should be added to the icebox as a feature/chore story (or several stories) and it should be as atomic as possible. If in the backlog planning meeting, devs note that is going to take to much time to split a general feature into atomic stories, then after the meeting (in no more than 2 days) the owner or requester of that feature should do that job.

After adding all the stories for the current iteration into the icebox, the corresponding owner together with the CTO should move every story into the backlog and estimate the points for that story (in our case, every point corresponds to 1 working hour). As a general rule, there can’t be unestimated stories in the backlog.

As the final result of this stage, the icebox should be empty and the backlog should have all estimated features (as atomic as possible) to do during the current iteration.

Organization of Cards in the Backlog Planning Stage

A general PivotalTracker card looks like:

PivotalTracker card

The estimation points are only available for features and every card should have a requester and an owner. The requester should take special care to give a comprehensive description of the card and to use labels to recognize the card in relation with other cards in the same project. Labels could be anything. The only rule is that they need to be useful. Also, whatever interaction between requester and owners (or related devs) should be registered into the card’s activity for future reference.

If a feature involves more than one story, the requester (or owner) should create an Epic. In simple terms, epics are cards that group a set of other cards which represent an entire feature as a whole. For example, if in the current iteration the team needs to do a big feature which is splitted into several atomic features, then the atomic set of features compose an epic. In PivotalTracker, for every epic exists a label (with a purple color) associated with that epic. Then, for every story that belongs to the epic, the dev should add that label, PivotalTracker will do the rest:

Epics

In the image above, PivotalTracker allows to click on “Add/View Stories” to have a full panel dedicated to the selected Epic. If you need to add relevant information to the epic, you should use the “Activity” section on the Epic.

It’s important to note that for every epic you should add a Release Card to the current Backlog. This card represents a marker that indicates when this epic should be launched, so it’s also important to set a release date to the release card:

Release Card related with an epic

If you have an atomic story that is not related with other stories in the current backlog, then is not necessary to create an epic and a release card. The story by itself has the information of the release date for the specific feature.

Velocity and Volatility

PivotalTracker has the ability to calculate in an automatic fashion the velocity for the current iteration of every sub-team. We recommend to follow their recommendation mainly because it’s based on the actual velocity of the previous iterations of the sub-team. Devs tend to be too optimistic in their estimations so a more ‘scientific’ approach is always welcome. For the initial iterations, it is highly probable that your are going to struggle to adapt to the suggested velocity of PivotalTracker but on next iterations the velocity will reach a more stable and representative value.

Another interesting concept in PivotalTracker is the volatility of the velocity in the team. This value represents the variation of the velocity through the iterations in the project. For example:

The volatility for the project is:

Volatility = (Standard Deviation of Velocity * 100) / Mean of Velocity = 50.5%

This is a extremely high value. As a rule of thumbs, teams should try to have a low volatility because in general terms the work of team should be as stable as possible (in terms of productivity). A high volatility could reveal an unstable and unproductive team. PivotalTracker, gives all these metrics in a nice chart and as simple as possible:

Volatility

Summary

In short:

Conclusion

Organization of a development team can be hard if you don’t follow a structured methodology. Here at AD, We favor agile practices because they give us enough flexibility in our day to day work but with enough structure to keep things organized. In practice, We use PivotalTracker as the online tool to apply our methodology and in this post our general guidelines on how to use PivotalTracker were given. If you want to keep your team organized, We recommend:

comments powered by Disqus