Andy Crouch - Code, Technology & Obfuscation ...

Always Have A Development Process

Man Standing Looking At A Board

Photo: Unsplash

“The battlefield is a scene of constant chaos. The winner will be the one who controls that chaos, both his own and the enemies.” - Napoleon Bonaparte

When you start a company you have one basic aim, to build a product that your customers love which makes you money. There are many theories and methodologies to guide you toward this goal. The fact remains that the pressure is on to deliver features and profit. In the rush to deliver it is sometimes easy for new, inexperienced teams to work in a chaotic manner. If there is one piece of advice I would offer to any small, early-stage team it would be to create a development process.

I have used a slightly adapted development process in each of my three early stage company’s. It has evolved over the last 10 years due to new applications and forms of communications. I will present it here in rough form and you are welcome to discuss it with me on twitter.

The Tools For Supporting The Process

The process use’s two existing items. The Kanban workflow process and Atlassian’s Jira hosted web application.

Kanban is a method for visualizing the flow of work. It aims to balance demand with available capacity and spot bottlenecks. This product can be software, a sandwich or cars which is where Kanban originated at Toyota. The process aims to provide a clear way to visualise and organise where a task is within a defined workflow. The workflow comprises many states such as In Development or Completed. Kanban limits the amount of work in a given state so that bottlenecks can be identified and resolved. There are some good Kanban articles here and here.

Atlassian builds applications that provide various supporting functions for software development teams. Jira is a tool it provides to log and manage the flow of work through a development team. It provides a way to create a project and set up an agile based workflow to support the work of your team. Kanban is one of the workflows that it supports. At the time of writing Jira costs $10 per month for up to 10 users. An advantage of Jira is that it interacts well with other Atlassian software such as Bitbucket.

(I should disclose that I am no way affiliated with Atlassian. There are many project management and issue tracking applications available. I have found Jira to be an excellent tool but that is my opinion and you can build your process using any tool.)

The Process

The aim of the process I use is to provide enough guidance and support without getting in the way. So, I usually start with the following states:

  • Backlog - All items start here. They should get added and prioritised in the backlog until they are ready to be worked on by the developers.
  • Todo - Items in the Todo state are ready to be worked on. That means the requirements and acceptance criteria are confirmed. If given to a developer they can complete the task with little issue.
  • In Progress - Items In Progress are currently being worked on by the development team. Items may be in a testing phase.
  • Done - Items in the Done column are completed, tested and ready for release to Production.

It is really easy for everyone to understand these states. Especially if you are working with less technical business stakeholders. I find that these states work well before launching a product.

The key to getting this working is to visualise the process. Create a simple graphic and display it in the office and communicate it to everyone. Get a screen displaying the Jira workflow board in the office. Integrate Jira with Slack so that as work is moved through the process the whole team can see it.

A sprint is a period of time within which an agreed amount of work is completed. Agree on a sprint length and stick to it. Pre-launch, weekly sprints usually work really well. I have never agreed to sprints that last more than 2 weeks. Whatever you agree, stick to it and communicate it so that people in the business know when to expect things. Stick it on their calendars and mark the end of a sprint with a demo to the business team.

Include business team members in prioritisation and planning of the backlog. I’ve never had a Product Owner when working pre-launch. If you have one then you may find this approach too simplistic.

If you do have a Product/Project manager and once you have gone live things become more complicated. Especially when you have to start fixing and improving features. I tend to extend the number of states in the process as follows:

  • Backlog - All items start here. They should get added and prioritised in the backlog until they are ready to be worked on by the developers.
  • Accepted - This is the development teams Backlog. Items in this state have been reviewed and broken down appropriately and estimated by the development team. Any item in the Accepted state can be pulled into a sprint when capacity becomes available with no outside involvement of the development team.
  • Todo - Items in the Todo state are ready to be worked on. That means the requirements and acceptance criteria are confirmed. If given to a developer they can complete the task with little issue.
  • In Progress - Items In Progress are currently being worked on by the development team. Items may be in a testing phase.
  • In Review - This state allows for code reviews. Everything your team is completing should be reviewed before it is released for testing.
  • In Test - Items in the Test state have been deployed to an environment that the QA team and/or Business can review the feature and test it.
  • Done - Items in the Done column are completed, tested and ready for release to Production.

I can not overstate the importance on the success of your early stage team by having a process. I have gone through many investment discussion at each of the small company’s I have worked. Each time, the fact that we have a documented process in place is flagged as a major positive. Not only will it improve your ability to deliver under pressure but it will only help your growth.

If you’d like to discuss my thoughts on this topic then message me via twitter or email.