When you work with a client on a big project, you need to organize your coding well to achieve all your goals and plan your work in a proper manner. But in the same time you don’t want to lose too much time on unnecessary activities. Here’s how we try to balance it at Cloud Nine and how to optimize our workflow.
Before we actually start writing code, we try to roughly estimate how much time the whole process will take. We start by dividing the project into smaller pieces, that we call epics. Each epic has one big goal, like creating a subpage on a website. Eg. if we create an e-commerce site, the goal would be to build a cart page.
After creating an epic, we split them into smaller tasks. For the mentioned example of a cart page, we would try to distinguish more precise functionalities like retrieving data about products or adding new products to a cart. Having these tasks separated, we are ready to estimate them. There are many ways to do the estimation but the most popular one would be using a planning poker, where each developer can have a say about how much time a given task may take.
In the end we sum it all up and can more or less predict when our product will be ready.
Ok, so we have our tasks and estimates but how do we track them? At Cloud Nine we use Jira. The tool helps us to keep a hold of our progress in a project. There we can see not only what our tasks are about but also what’s the status of tasks, who takes care of them, a history of activity, estimates and many other helpful things. On everyday basis we also visualize our work progress better by using a real life board in an office so it’s easy to have a quick look and know what’s going on in the project and what the plan for other team members is.
Sometimes it might get hard to get a grip of a big project so we take advantage of agile techniques and split our work into sprints. Every sprint has a small set of goals which makes it much easier to concentrate on achieving them. Getting back into our e-commerce example, a good sprint goal would be to make it possible to go through a user scenario like finding a product on a webpage, adding it to a cart and finishing up the order. With a goal in mind, it’s easier to prioritize tasks and focus on giving a proper value to a product. So the priorities may change but when can this happen?
Each day in the morning a team gathers to do a standup and discuss briefly what is a status and a goal for the next day of work. We try to synchronize and get a grip of what other team members are up to so we can share potential problems and be able to help each other with them.
As we work in teams, we have to share code between each other so a natural solution is to use a version control system. At Cloud Nine we use Git, the most popular tool of that kind. It also allows us to separate code which may not be ready yet from code which could potentially be released.
From a developer point of view it’s important to keep code as clean and as bugless as possible. But nobody is perfect, this is why we do code reviews so other team members can make sure that others didn’t forget about something important while doing a given task and didn’t make any major mistakes. So every time a developer creates a piece of code for a certain task, it might get checked and verified by someone else.
Putting it all together
Using all the tools and processes makes life of a developer here much easier. With all of them he or she can concentrate on giving more value to a product. Besides that it also makes our collaboration much better and helps our teamwork reach a high level of synergy so we can cooperate and in the end achieve all our goals!
My name is Piotr and I’m a web developer. I moved to Stockholm from Poland last summer and I started working at the Cloud Nine office directly after it. Here I develop backend solutions in C#, currently focusing on an e-commerce project.