Drupal is fantastic for all sorts of websites and applications. It excels especially at large, complex content projects. If you know what you are doing, you can often cut development time substantially compared to other tools made for the same purpose.
Drupal's versatility, however, is a 2-edged sword. With great flexibility, extensive API and an abundance of modules created by the community, it takes a long time to get up to speed. Often there is not enough time on a project to go through Drupal's steep learning curve.
The more experienced your team is, the more benefits of Drupal you will reap and the less technical debt you will acquire, and the more successful your project will be in the end.
Looking for a Drupal team
There are a few critical elements you should consider when you are looking for to outsource a Drupal project:
Experience of the team and its members
It takes time to master Drupal. If you are building a large application, it is good to have at least one really experienced developer/software architect (three or more years of working with Drupal), who delivered in that time a few sizable projects. This person will work as your architect and gatekeeper. Planning architecture, choosing contrib modules and code reviews and helping others would be his daily routine.
The rest of the team also should have had at least some experience in using Drupal, unless you have time to train them. Drupal 8 is a bit easier to pick up by a developer who previously worked with an MVC framework like Symfony or Laravel, but it is still quite far from allowing Drupal newbies to just joining in and coding. Six months for smaller to 1-2 years in larger applications would be a proper exposure.
Has the team worked together?
This one is not that critical, but having a team that uses similar tools and standards goes a long way towards ensuring that your application is built smoothly. Teams assembled "for one project" tend to do much poorlier than ones that had time to iron out their cooperation practices.
You can circumvent many of the issues stemming from a distributed by a well-established automation of the software development process. It is though, and so much easier to introduce it if all devs are already used to it.
How will you communicate with the team? Ensure there will be a clear and easy communication between you and all of the team members directly. There is nothing worse on a project than long communication channels that distort information and extend communication time.
Can you build trust? On a long project, it is essential to build a trustworthy relationship between you and the team. If you feel there are any issues or ambiguous situations, it is better to clear them all before the project begins.
Availability and scaling
Can the team scale if needed? Often projects start small but then grow larger and require more resources. Will the team be able to increase in size or will you have to look for additional people?
The other side of the coin is turnover. An average turnover rate in a software company is about 10-20%. If your team consists of 5 people for a project that lasts a year, it is almost certain that someone will leave. Is the team able to provide a replacement that can start quickly?
Access to specialist knowledge
If you hire a team of Drupal developers, it is also worth exploring if they will provide you easy access to other services or expertise that might come handy on the project now and then. On a typical Drupal assignment, you may have some tasks that might require:
- a DevOps specialist (e.g., setting up environments, servers or CI infrastructure)
- UX/design specialists
- Quality assurance (testers) who can perform manual or write automated tests of your application
Project setup and delivery
When you have chosen your team, it’s time to set the project up.
I wrote an extensive blog post about organizing work on a software project so that delivery can run smoothly, even if there are multiple independent teams involved. We are great proponents of automatization. It reduces the workload associated with getting everyone in sync about the current state of the code.
We also recommend using Agile methodologies, which are a fantastic approach to managing a software project. You can read more about how we manage software projects in our blog post about remote SCRUM teams.
Outsourcing software can bring about many benefits, including reduced cost, access to the specific experience or might just fill a void of specialists on your market.
Choosing the right team for the job is not an easy process. It makes sense to look for the right one, rather than to hire the cheapest or the first one you find. With the right team, you will be able to mitigate many risks that come from hiring external outsourcing provider, like cultural mismatch, communication issues or lack of motivation and deliver your project much quicker and at a reduced cost.