10 things any digital agency must do to work effectively

I just started working part time at a new small digital agency the other day and I noticed there were several things that I would normally take for granted that simply were not set up in this agency so I thought today I would share my thoughts on the things every leading agency needs to have set up in order to work effectively. Some of these many may consider basic but I find it surprising how many basic things in business often get overlooked by people rushing to get jobs finished without considering how their process could be improved.

Use a Development Process and have Deliverables

Using a development process is a biggie as many design shops switch from print to multimedia may not necessarily understand the nature of developing software so as a web developer it is your job to educate them.

Are you working in an agile fashion? That means customers must have the resources to directly engages with the team through constant testing every project iteration and customers pay for each iteration as it comes.

Are you working with a more traditional Waterfall model? That means the steps are going to be roughly:

  • Requirements Gathering
  • Analysis & Design
  • Implementation
  • Testing
  • Deployment

and there should always be client deliverables at the end of each process that will need to be signed off or paid for. This could be given as the following:

  • Requirements Gathering- Requirements Specification
  • Anaysis & Design - Technical Specification & Functional Specification
  • Implementation - Software Delivery
  • Testing - A complete set of Observation Reports
  • Deployment - Final Acceptance Document

Which ever process model you are using, clients must know what the process is and the ramifications for changing designs after sign off. There also needs to be documentation and deliverables milestones that accurately reflect the process you are using.

Use A File Server

This may seem obvious but it is a basic necessity when working with a team. Your server should have a file system that reflects your organisation's process. ie. a 'Work in Progress' folder (WIP) and an 'Archive' folder to hold current and past projects. In any digital business your data is your livelihood so it is vital to have a reliable backup script rotationally backing up your data to a separate medium (preferably off site) daily. You also should test that your backup script is functioning correctly.

Version Control

Every development house where more than one person deals with code at all really must use version control. Even should you have a data backup script on the file system maintaining a version control repository allows you to document your code versions so you know exactly when and what is checked in to the repository at any point allowing you to roll back, branch and merge code streams. Even if there is only one person who touches the code having version control VC effectively means there are always at least two copies of code at any given point in time and is like having an extra backup as you never know when a hard disk fails or when you need a deployment of old code yesterday. It is easy to set up SVN or GIT on a server somewhere and manage your repository. Examples of version control include SVN, GIT and CVS.

Use a Wiki

Use a wiki to document things you want to share with the team as you create them. This makes those little things that only john the web dev knows public and openly accessible when john isnt around.

Use a Dev Web Server

Working with web projects? You probably wouldn't be reading this if you weren't. Maintain a dev server that is running a web server such as Apache and you can use it to host your organisation's intranet, wiki, dev database and internal sites for development.

Use a Live Web Server

Ideally a VPS (Virtual Private Server) but not necessarily as you then require the server admin expertise to manage it and security is incredibly important. This server should mirror the environment found on the dev server as much as possible. From my perspective as I often find myself dealing with LAMP stack technology both my dev and live environments would be Linux boxes with the same version of Linux PHP Apache and MySQL.

If using a VPS it is very important your dev server mirrors your live server technologywise as you can rehearse updates to your dev server before running them on your live server.

Automate deployment

Agency work requires the development of many small jobs in rapid succession and often requires a lot of server admin which includes setting up domain names and assigning them to newly deployed sites. Create a script that will ssh into your live site and setup your web management automatically based on your naming conventions you have determined.

Knowledge Management System

No database to keep track of client information? Worst case scenario start a wiki but much better would be to build one yourself using RoR. Why get expensive data management software when you can develop a knowledge management app in 30 minutes using free technology. Use Ruby on Rails to create a simple app that can maintain client information and host it on your dev server. You could then later extend it to create db's and site points on the fly through a web interface on your dev and live servers as you grow.

Have Products & Templates

At your agency you may have interactive jobs you have completed successfully where the technical and functional design elements can be reused. Keep a repository of these elements and tailor them for reuse. It should be possible to develop an automated system for them to be pumped out from design format at the touch of a button thus cutting costs.

Define the product not only in terms of the technical components but create documentation for designers, sales staff and project managers to be able to sell the system.

Example products may include

  • Email Newsletters
  • Flash Microsites
  • CMS Deployments
  • Shopping Cart Software
  • Blog Themes
  • Email list management suites

Use a Bug Tracking System

A system for both internal staff and clients to create observation reports to developers. Examples include:

  • Mantis
  • Bugzilla
  • Jira

Use Convention over Configuration

Maintain a convention for all your internal site urls as well as your external site urls. It doesnt matter what the convention is, just that it is consistent across your sites and that everyone knows it. eg.

Lets say your client was accenture, your job was to build the www.accenture.com.au website and your agency was rudestar.net

internal development URL: http://dev.accenture.com.au
external client preview URL: http://accenture.rudestar.net
live client site: http://www.accenture.com.au
Unix user name: accenture
FTP user name: accenture_ftp
Database user name: accenture_dbu
Database name: accenture_com_au

This can extend to the way you develop your web applications and data structures.

Running your own systems on your own servers with streamlined naming conventions means you can setup quicker deployment and requires less unnecessary communication with customers through project managers. Having said this, once you have automated systems in place and use your own naming conventions I don't see why it is not fair to charge a fee for dealing with external systems outside your support model.

Conclusion

Whilst this is not an exhaustive list there things are in my opinion the bare minimum that a digital agency need to set up in order to effectively deliver on interactive projects.

This entry was posted in Efficiency, Process. Bookmark the permalink. Both comments and trackbacks are currently closed.

One Comment

  1. Posted December 26, 2009 at 6:31 pm | Permalink

    I want to quote your post in my blog. It can?
    And you et an account on Twitter?

One Trackback

  1. [...] original here: 10 things any digital agency must do to work effectively This entry was posted on Monday, December 14th, 2009 at 5:59 am and is filed under news. You can [...]