Tools
How we do it really gets down to process (and coffee). By process we don’t mean a pretty diagram or Powerpoint presentation, but a way of doing something the right way. Think “do it right the first time”.
Some of the processes we automate – in particular the ones that are fiddly and involve getting lots of detail right. Like updating a website to a current version or migrating a database. Very easy to miss a step and some little but important thing won’t work. So we use a tool which automates this.
Other tasks involve explaining ideas and getting feedback, and we need to make sure everyone sees the designs and can post feedback or discussion. Again, we use tools and a clearly defined process to manage this.
Having all these processes doesn’t mean that we’re a bunch of faceless robots. It’s more that having good processes that work well mean projects run smoothly. Not only do they save time, they reduce the chance of human error on repetitive tasks.
Story Driven Development
- When we need to describe how a project should be built, we use a technique called Story Driven Development.
- Using stories involves describing the desired behaviour or goals of a project.
You can read about why and how we use story driven development here
Project dashboard
- For each of our projects, we create an online project dashboard. Everyone gets an account.
- You can get a live update of the project as we work on it – from meeting notes to design changes and feedback.
- We like to put everything there- from documents and ideas, to visual designs and interactive prototypes. This cuts down on emails, and makes it very easy to see what’s going on.
- The actual dashboard is a Wiki, which means that everyone is able to contribute information and collaborate in a very rapid (rabid?) fashion.
- We use some software called Active to run this
You can read more about our wiki ways here: How we Wiki
Keeping track of issues
- Most projects have a list of issues, things to be done, or problems to be fixed. People track these in a myriad of ways- from excel sheets to email to tracking software. We use a tool called Jira
- When anyone on the team spots a problem or identifies a new task (“oh – don’t forget to change that before we go live”) they send an email describing the issue. Jira then grabs this, makes an issue, and puts it into our workflow. The project manager checks and refines the issue, and assigns it to the right person.
- Depending on the issue, there will be different workflow steps. Something simple will have one or two, while a complex task might get subtasks and need to go through several steps of definition and then QA.
- Working this way means nothing gets lost in the ether- issues get a number and you can track them all the way through.
- It also means a high degree of transparency- you can see who was working on what, and when it was done. It’s also very useful to be able to jump back on and grab some information for a particular issue, rather than hunting through emails.
- Jira also listens to our Version Control, so you can see when a particular issue was sorted out
Version control
- In the same way Word’s “track changes” feature is useful when working in a group, version control tools are vital for our web projects.
- Our tools keep everything flowing smoothly; automatically storing versions of files as they get saved, and merging changes if two people work on the same thing.
- We use Subversion for version control
- Some of our projects involve working with other teams. By using version control, we can easily work together on the same code.
Deploying code
One of the challenges with modern sites is deploying them properly. With a simple site, you can get away with just copying up some files. The worst that can happen is that you might miss a page or image. As a web site becomes more complex, you get more moving parts. Miss something and you might lose a finger. Typical steps are:
- Grab the most recent version from version control. You might also need to check for updates to plugins
- make a snapshot of the current site, just in case things don’t work out. Snapshot the database too.
- Create a new folder, set up all the linked folders, and set up the right permissions. Copy the files in.
- Restart the web or application servers
Once we’re ready to publish, we press the magic button, the lights fade, the curtains part and the right bits are pulled together and delivered to the server. If there is a problem, Capistrano can roll back to an earlier version.
We use Capistrano to manage the deploy process, update our blog with awesome articles, fill out our timesheets and to make coffees for everyone.