In the my course of work at Tinkerbox Studios, I have had many discussions about how working with external development agencies usually pan out, including my own experiences working with our clients. Here are my thoughts on what you could do on your part as a client to select the best partner for yourself. Choosing a partner agency is more about fit than anything, so there are no hard and fast rules for selecting one.
This article assumes that you have already decided to adopt Agile methods of building your product. This is not an article about whether you should be using Agile when developing your project or whether you should engage an agency with a local or overseas development team.
Be clear about what you need
Define your project
If you are reading this article, then you are not likely to have a fully written technical specifications for the software you are building. However, if you are building a new technology product for a new startup, you should have a rough idea of how it works and looks like.
So your first step to do is to put ink to paper, and provide a firmer basis for further discussion. This also helps you to clarify your idea, which is more difficult than it seems. Plus, you might gain further insights when things are drawn up in front of you.
A good start would be to jot down the main features of your project like in a simple User Story format,
- As a user can, I can post photos to my wall
- As a user can view photos of my friends in my feed
The idea is to go broad with this exercise, and scope out the entirety of your product, including the value it brings to the various stakeholders. If you are familiar with tools like diagramming and wireframing, use them to define your project further. Visual specifications help to reduce amibuity and hence risk, so this is something that you really need to tie down before you start.
If you start working with an agency without this, you will spend a lot of time (and hence money) adding definition to your project requirements, your budget estimates will be all wrong, and this will completely derail things.
So now that you are armed with this list of user stories, you can start talking to a number of development agencies.
Whether you are building software to improve your existing business, or for a new startup, it would be helpful to align with your agency on the high-level motivations of your product. When your agency better understands the why behind the product, they will be able to better prioritize and execute. Also, they may surprise you with suggestions or other ways to approach the project given their experience working with other clients, and even other industries.
Have an idea of how much you want to spend, how well you want it to be built and how soon do you want it completed. It could be a quick prototype to test your idea, a Minimal-Viable-Product to go to market or a quality product to scale up your startup or to implement in an existing business.
Evaluate their understanding of your project
When you share your list of user stories when you first speak with the development agencies, it will be good to drill down into the details for some aspects of your project to understand your project better. However, a good agency will strive to balance between defining everything upfront, where the work is at risk when there are changes further down the road, and getting clarity on the direction of the project.
Many clients struggle with this aspect, as it is often lamented that the agency doesn't understand their needs. A part of that is always true, since you should be an expert at your own domain, and your business. However, it is part and parcel of the process for the agency to understand your requirements, and to explore the problem space around it. As a knee-jerk reaction, many clients resort to more traditional methods, such as halting work to define a specification before continuing.
However, that doesn't really solve the problem since specifications never capture 100% of the hidden complexity and nuance in building software.
Instead, my advice would be for clients to evaluate the agency's ability to facilitate understanding within the team. As they start asking their questions, this is the time for you to evaluate if they ask the right questions, and show a genuine interest in understanding your domain, and the problems you want solved. It would be good to consider the following points:
- how interested they are in the idea and solution that you want to build
- if they are able to give you any insights into your problem
- if they have done similar projects before
Conversely, an agency will also demonstrate understanding of your project by suggesting alternatives, and even playing the devil's advocate and telling you when something can't or shouldn't be done. Even if their ideas don't make sense to you, consider this as part of the cost of establishing the baseline of understanding around your business domain.
What you don't want is a yes-man agency, because that is going to cost you big time.
Understanding your partner
Understand their methodology
Almost every development agency will profess to some sort of agile development methodology, some even claim that having no structure or process is the best way to get things done. The simple truth is that some methodologies and working cultures work well for some clients, but not others.
You have to be willing to understand that some agencies might not be that good of a fit for you, and that trying to change them will not work. One example of this happening is when clients that are familiar with the traditional methods of building software projects, take on an agile agency, and then heaps on a lot of the management overhead that they are used to having. This is a recipe for disaster.
To understand how rigorous the development agencies are, ask for the type of documentation they use in managing projects. Some agencies can be flexible in the amount of agile they need to practice, and this makes great sense because some projects will require more documentation than others. So, although the Agile Manifesto states to prioritise “working software over comprehensive documentation”, some level of documentation is needed especially when working with multiple developers, and for the sake of maintainability.
Additionally, common documentation that are needed for the project are the kick-off documents, including high-level diagrams to flesh out the broad picture of what a piece of software is going be, a more-or-less-confirmed user story list and burn down charts. As before, you should balance between extensive documentation that becomes a hindrance to maintain (which usually gets abandoned halfway), and low-effort but high-value documentation artifacts that can be easily maintained.
Ensure good communication
Choose a partner that speaks your language, or be prepared to do a lot of hand-waving to get people on the same page. This may seem like common sense, but you'd be surprised how much and how often projects are undermined by language barriers. If you can avoid it, just work with teams that speak the same language.
You would also want to identify the channels that are available to you for contacting them, and how ready they are to get on a call. Some points to consider include:
- What project management software they use, and spending
- Ask how often would they provide updates, or meet face to face (online or not)
- How available they would be for ad hoc calls
We were suprised when we heard of clients with stories of agencies or sometimes freelancers that don't want to get on the phone. Although, as practitioners ourselves, we can emphatize with needing to juggle between being in the zone and working on software and handling clients, there were instances where any request to get on the phone was steadfastedly refused.
Most agencies recognize that chugging along on projects is not enough, and good communication with clients is essential to a successful delivery.
Verifying their credentials
Check for proven track records
Besides what you understand from the meeting with your partner, do some due diligence on your own. Learn more about their experience by looking at the different types of customers that they have worked with and the number of projects they have delivered. If they have worked with clients that are similar to your business or industry, that is a huge plus because they've already been educated by the previous client.
You can also ask for the qualifications and experience level of the team. However, most agencies cannot reserve talent for you until you sign on the dotted line, so do recognize that you may not be getting the exact person that was showcased to you. However, as long as the chargeout rates are reflective of the level of talent that you are getting when you've started the project proper, it should be fine. Sometimes, it is unavoidable that agencies have to hire new talent to meet the resourcing demands of your project.
As an agency ourselves, we understand having to optimize talent and resources for different projects and clients, which is no simple feat. As they say, you are hiring the agency, not the individual project team members. It is the agency's responsibility to deliver to the quality and standards that they are known for based on the processes they have in place, regardless of who they put on the project.
Ask for references
For Tinkerbox, we typically meet with clients that aren't willing to take a chance on a new team, which works fine with us of course, since we've been around since 2007 and have no problem providing references. Some clients may be willing to take a chance with a new team, which I think is really fine, since it is all about fit, and there's bound to be weaker agencies that's been around forever.
Find out more about the quality and efficiency of their services by talking to their references. Do consider the similarities between the reference company, and your own situation. Sometimes, having glowing recommendations from large companies will not translate to the same satisfication for you if you are coming from a startup, or SME.
If you are looking to build something that is niche or new in the market, you need to go for smaller specialised providers who are already experienced in building products with the technologies you require, and are thus able to innovate at a faster pace. They may be more pricey, especially if their skillset is niche, but either way, you will be paying for another agency to skill up in your field if you choose for a more generalist agency.
Start small and reduce risks
In Agile, the idea is to move fast and in small steps. If your agency is not pushing you to do so, then they might not be as agile as you think. Ask if the agency will be willing to start with a small project, which then gives you the chance to assess their processes and delivery before continuing with the rest of the project.
After all, we know the least about the project at the start of the project, so getting your feet wet with a small engagement is only prudent.