In this tutorial, you will learn some useful tips and tricks that will allow you to better plan and implement a project that is being built by multiple digital agencies at the same time. It is very common for large enterprise-level clients, to have relationships with multiple digital agencies. There are hundreds of different agencies dotted throughout the world, with each agency specialising in a certain niche. A lot of large organisations like to pick agencies based on their specialisation. For example, they may use an agency for brand creation, an agency to build their mobile presence, an agency for video editing, an agency to build their call centre software, an agency to build a website, and finally, an agency to design how the site will look. The types of challenges that you will encounter on these types of projects will be very different compared to the challenges that you encounter when building a project solo. As a website implementor, when you deliver a project that involves lots of different companies, you will need to cater your project delivery plan accordingly. Over the years I have worked on numerous projects that have been built by multiple companies at the same time. There is definitely an art form in making sure that these types of projects run successfully 🎨. Want to learn some of these secrets then read on 🔥🔥🔥
Below, I will detail my real-world experiences and recommendations. My aim is to give you enough knowledge to ensure your project runs as smooth as it can. When you work on projects that involve multiple companies that are all working to a single deadline, unfortunately, issues arise and crop up. A lot of these issues can be avoided by doing the correct upfront work. When building a house, you need to make sure you have strong foundations on which to build upon. This is especially true when it comes to projects that involve multiple agencies. This is why the first strategies I share are all on planning 📅📅📅
DEFINE AND AGREE ON THE SOFTWARE AND TOOLS UPFRONT
From my experience, when planning a project that involves multiple agencies, the best practice is for you to define a single source of truth for every aspect of the project up-front. I have found that defining and agreeing on a single place for cross-company communication, technical collaboration and documentation at the start of the project is an essential step to ensure the project does not come off the rails mid-journey. It will be much more efficient to have well-defined uniform approaches that all agencies work towards, rather than allowing each agency to go on different tangents.
Allowing each agency to pick and define its own tooling and methodologies will massively increase complexity. When a companies digital estate is comprised of hundreds of different disparate systems, it will be harder for anyone to understand. Again, from experience, when a companies digital estate is overly complicated, that company will not be able to make the best use of it. I have worked on a lot of projects, where people are too scared to make changes as they do not know what they might break. To avoid these issues, whenever you work on a project with multiple agencies define a common workflow. Define the languages, systems, tools and frameworks that the different agencies are allowed to use.
Technically, one of the most important things to agree upon upfront is version control. Making sure all agencies work within a common version control system that you control is very important. Use a service like GitHub or GitLab. Create standalone repositories per website and responsibility. Use roles and permissions to correctly manage which agencies and which developers can access which projects. Favour approaches like pipeline as code to have clear traceability and an audit log of what agency changed what setting and when. Only give access to the repositories, sections in the CMS or wiki that each agency needs. Restricting access will make it much easier to troubleshoot and diagnose issues when they occur. As a checklist makes sure you consider these key items before you start a joint venture project:
- Version control (Github, Gitlab, etc..)
- Wiki (Confluence, etc..)
- Sprint planning tools (JIRA, etc..)
- Ci/Cd (Github, Dev-ops, Jenkins, TeamCity, Octopus, etc..)
- Hosting (Azure, AWS, etc...)
- Package Management (create your own NPM repository, Nuget feed, etc..)
- Statistical code analysis tooling (SonarQube, Codacy, Embold, etc..)
- Reporting (Cypress dashboard, application insights, New Relic, etc..)
- Error/log handling
As someone who has worked for many digital agencies, whenever I have made a project proposal to a client I have always based it on that agencies current service model. An agencies service model will be based on the best practices and efficiencies that work for that company. For each agency defining a standard service model for all projects makes sense as it keeps the cost down for the clients and makes it more efficient for the team to build software. I am guessing that when an agency defines its preferred service model it was not based on working with other vendors. As a client, when you are working with multiple vendors, you will likely need to define a different service model in order to define an optimal way of working between all parties. If you simply allow all your partners to work using their own standards, things are going to get very confusing, very quickly 😕. Keep this point in mind when planning your project!
THINK ABOUT DATA SILOS AND BOUNDARIES
Data is king within most companies and when you start working on a joint venture project this is especially true. When working with different agencies, across different platforms you need to prevent data duplication. Having data silos will not allow you to get the best value from your data. When multiple vendors are working on a project, you need to make sure that you can access the data you need in a uniform view. Just because data is being added into the CMS, you need to make sure that your mobile application can access it as well.
This is where products like a CDP can be really beneficial for a company. A CDP is a tool to store all your companies current marketing data. A good CDP should be able to help a company to sell its offering. Another great way to share data between these different platforms is via an API layer. When working on a joint venture project, I recommend that you audit all your existing APIs as well as define all-new API end-points. It is important to add this information in a shared document that each agency can look at. The document should clearly show what API endpoints are available and who the owner is. You may want to consider a product like Microsoft API Management to help to clearly define the system boundaries.
I have worked on projects where there have been 4 or 5 different agencies involved in the same project. Having the documentation that defines the boundaries between every partner definitely helped to stop disagreements and companies treading on each other's toes.
As a developer, the most important aspect of a project is the build and delivery. If you have to work with different platforms, languages, websites, agencies, it can be hard and complicated to understand how a system works. In order to minimise the system complexity, it is important to standardise these areas:
Source control workflow: Ensure all agencies are writing code in the same version control solution. It can also be beneficial to define a standard way of working. Things I recommend defining include the commit message strategy , the GIT branching strategy (GitFlow, release branch pattern etc..), the linting tools and their rules and the code review guidelines.
Base Builds: If you need to have different agencies build websites for you, defining a starting point that is intuitive and well-structured will be time well spent. Investing some time and creating a base build that all projects should be built from can make it a lot easier for developers to jump between the different systems 🔓. Standardising the project and folder structure will make it easier for developers to find the files that they are looking for.
Remove All Manual Steps: When working with multiple companies, having a Ci/Cd pipeline is key. All aspects of the release process need to be automated. There should be no manual steps required to ship code into production. Being able to rely on fully automated pipelines that any partner can access, which is also all defined in code is key to smooth releases.
Static Sites: If one agency is doing the design and front end build and another one is doing the backend build, it might be easier to use a headless CMS, or even easier, create a static HTML site that the other agency can implement from. being able to define clear boundaries and separation of concerns will make your system easier to manage.
Just like defining a technical standard, you will also need to do the same for any project-related documentation. One thing that I found really helpful on a recent project was defining template for all the project outputs. These templates included:
- Test plan
- Test strategy
- Release notes
- Project plans
- Support Runbooks
CLEAR LINES OF COMMUNICATION
In order for multiple companies to work together, you will need to define shared communication channels. The quickest and easiest approach is to create a shared team or slack channel that every company can access and ask questions.
Asides from an instant messaging channel, I recommend putting in a weekly morning stand-up that includes representatives from all the vendors. This stand-up is important to ensure every vendor understands the status of the project. Without an all-party stand-up, I always find it harder to keep track of what is going on. A simple chat can make it a lot easier to understand exactly when the bits we have been working on need to be ready, or, to find out if the dependencies that we are reliant on are on track. To find success, you need to ensure that all the companies work together in a uniform way. Each agency will have its own agendas and making sure that everyone is working from the same hymn book can be a struggle at times, however, it is definitely possible 😃
I hope these tips help you to better manage your project. Working on a project with multiple digital agencies is definitely possible, however, it will come with some extra challenges, especially around communication. Having a well-defined plan of who is doing what and by when, clearly defining each agencies roles and responsibilities upfront, and making sure you have some technical standardisations can be the difference between working on a great project or working on a horror story. Happy Coding 🤘