This post originally appeared on Medium here.
Technology is eating the world more and more every year. So, it should come as no surprise that as companies seek expert guidance and capacity for their software engineering teams, Agile software consulting companies are on the rise. With so many choices, choosing the best Agile software consulting company to partner with your team can seem daunting. To help you navigate the lay of the land here, we’ve compiled this guide on the various types of Agile engineering expertise you’ll find in the top agile software consulting companies today.
While every good Agile consultancy will practice some flavor of modern Agile engineering (Extreme programming) best practices, it’s important to know that each consultancy will approach engineering best practices with their own slant when it comes to the details. The important variables are:
Most Agile consulting companies today are wise enough to understand that there’s no one ‘best’ way to write code. Regardless of which Agile consulting company you choose, expect that you will be encouraged to use some combination of Test-Driven Development (TDD), Pair Programming, Continuous Integration, Collective Code Ownership and Refactoring.
Beyond this core set of practices, here’s where dogmatic and adaptive consultancies start to differ.
Dogmatic Agile consultancies have a set of best practices that they believe in. They will want you to adopt these practices, or at the very least be on board with the fact that any code they write will be written using these practices.
Adaptive Agile consultancies like Stride pull from a playbook of best practices and adapt their consulting and software development practices to your needs.
For example, let’s take pair programming. A dogmatic company might insist on pair programming as the default, whenever possible. An adaptive company might be flexible with regards to the percentage of time the team spends pairing.
Which is best for me? The dogmatic approach can be comforting and reassuring for teams just starting out, whereas the adaptive approach is often better suited to more established development teams that need a boost in capacity and some gentle tweaking or guidance on best practices.
Agile consultancies either prefer to colocate with your team, or prefer to work out of their office:
1. Colocation at your office – There are a handful of Agile consultancies that prefer to colocate with your team at your office. Most of these consultancies will prefer to colocate with you full time, so that they can mirror your work hours, your culture and your work flow rhythms. Some colocation consultancies will prefer to do so only 2-4 days per week, instead of full time.
2. Colocation at the consultancy’s office – There are a slew of Agile consultancies that prefer that your tech team (or a subset of your tech team) colocate with them at their office. These consultancies are often dogmatic in their approach and host as a way to help you absorb their culture and their best practices so that they can teach you their philosophy for building software.
3. Remote – There are many flavors of remote Agile consultancies. This includes consultancies who are themselves remote, where each team member works from their home or from various global locations. It also includes consultancies that have all employees come into their office, yet their office happens to be offsite. Remote consultancies can be in your state, they can be nearshore, and they can be offshore.
Which is best for me? If you can afford to have the Agile consultancy team at your office, it is highly recommended to colocate at your office. Colocation is ideal for collaboration. Colocation is also ideal for working through complex problems as a team. In addition, the Agile consultancy that colocates at your office gets to experience your company culture first-hand. And, they get to know your entire company, not just the tech team.
On the other hand, if you need a team that’s cost effective to bang out some code when you have a relatively defined product backlog, then working with a remote team is doable.
If your team is relatively new to software development, if you don’t have an existing tech team process, or if you feel your existing process and culture are toxic and you want to send a small SWAT team away from your office to explore different ways of working and bring those best practices back to the larger group, then having your team colocate at the Agile consultancy is the best option.
Either an Agile consultancy is going to build software with your team, or they are going to build software for you.
Which is best for me? If you have engineers on your team that will be part of the project team, then ‘build it with you’ is the way to go. If you don’t have engineers, then you’ll need to go with ‘build it for you’. You’ll likely have either a product manager, project manager, scrum master and/or product owner who owns prioritizing features you need built. The Agile consultancy can also supply product folks too, but ultimately you’ll want someone who works for you to be the final decision-maker on product decisions.
Any Agile consultancy worth its salt has engineers that can work in both greenfield and legacy applications. Beyond that, it’s important for you to understand whether the consultancy believes in specialists or generalists.
Specialists are developers that are deeply versed in one particular technology or set of technologies. For example, consultancies that employ specialists may say they have front end developers and back end developers.
Generalists are developers who can truly run the gamut, from front end to back end. Generalists can often also do a variety of other things well like mobile development, data engineering, DevOps, and product management. Consultancies that employ generalists often say they have full stack developers.
Pro Tip: Please believe me when I tell you that there is no single developer in existence who can do everything. Also please believe me that if you are seeking expert help in a technology that just came out 6 months ago, you don’t need an ‘expert’ in this particular technology. What you do have to know is which technologies are adjacent enough to other technologies for existing expertise to be relevant. For example, Angular 4 came out March 2017. You do not need to hunt the corners of the earth to find an Angular 4 expert. A seasoned Agile full stack engineer that’s been using React or Angular 2 can hit the ground running quite quickly. On the other hand, a full stack engineer who’s not up to speed on modern front end frameworks and who has been coding in Java exclusively for the past 2 years might have a longer learning curve.
Which is best for me? In my opinion, generalists are better than specialists for one big reason: new platforms and frameworks and languages are coming out at a faster pace than ever before. In order to ensure you are using the most valuable tool set for your needs, you’re best set up for success if you work with developers that can learn quickly. This way, when Angular 4 loses out to the next shiny thing, your Agile developer consultants can give you their well-informed opinions on which technology to use, vs having a specialist who will tend to recommend the tool set they currently use, which is not always the best answer for your business.
The type of employee/employer relationship that Agile consulting companies have with their developers is a key component to choosing the right consultancy for you. Some Agile consulting companies have full time employees, some use freelancers, and some are staffing agencies that only seek to find someone for a project after the project is signed.
Agile consulting companies with full time employees are the top tier of pricing, because you are getting a stable team that brings you years of collective expertise. Agile consulting companies who are staffing agencies have very low overhead and very low risk, so while pricing is lower, you should not expect to get the same caliber of consulting with a staffing agency model as you’ll get from partnering with an Agile consultancy that employees full time developers.
And then there are freelancers. Some freelancers are ‘one-man shops’. Other freelancers work as part of a larger consultancy. Freelancers that work as part of a larger consultancy are rolled into whatever model the consultancy uses for their other projects. Freelancers who work solo find one project at a time, charge the highest rate they can get, and then when that gig winds down, they find their next project. Solo freelancers are, in my experience, really smart and great to work with if you only need one person.
Which is best for me? If you’re looking for ‘butts in seats’ to pump out code, the staffing agency model is a great choice. If you only need one person, as I mentioned above, hiring a freelancer is an option. However, the minute you need a second person, you’ll have to reinvest your time into finding another company to partner with. Some freelancers have a strong network of other freelancers they can pull in, but most don’t. If you are seeking true consulting that will help leverage the skill set of your entire team and add business value beyond the lines of code written, then the cost of the higher end consulting companies who carry full time employees is a wiser choice.
Now that you have a sense of the variables you’ll find in each Agile software consultancy, the best way to vet and pick a partner is:
1. Speak with 3 different Agile software consultancies. Tell them about your team, your culture, your needs. Get a sense of their approach, their style.
2. If none of the 3 consultancies feel like a fit, go back to the drawing board and ask yourself if you really are seeking an Agile software consultancy. Perhaps you are seeking a digital agency or some other type of firm.
3. If at least 2 of the 3 companies feel like a potential fit, meet in person with any of the 3 that you feel could be a strong partner if at all possible. Or, at least do a Google Hangout.
4. Speak with 1-2 references from each company you meet with in person. Ask to speak with a client that’s as similar to you as possible. By this I mean facing similar issues. It doesn’t have to be someone in your industry or even with your tech stack. Rather, it’s important for you to hear first hand how the consultancy helped someone facing similar roadblocks.
5. Ask to meet the people you’ll actually be working with. This can be socially over lunch or in a team meeting. It’s important that there’s a culture fit not only among you and the sales team, but also between you and the Agile engineers you’ll be working with. Again, Google Hangouts is an alternative if the developers aren’t local.
At this point, if you’ve got a company that you feel excited about, go for it! Be sure to get an early termination or a trial period so that you can change your mind if you start the engagement and learn something that gives you pause.