The traditional one-size-fits-all software agency is dead. Here are the most common problems you may experience with a software agency and how to avoid them.
Traditional Software Development Company Traps
The average salary for a web developer in Phoenix, Arizona, is approximately $65,000 per year. But, this doesn’t tell the whole story. A quick job search will reveal many open engineering positions at $100k+. Agencies drive down the average by paying the lowest wages possible. It’s more difficult to raise rates and remain competitive than it is to source inexpensive entry-level engineers excited for an opportunity to learn.
The truth is, most top-tier developers work freelance at $75+/hour, at product companies earning six-figures, or at startups where they receive equity and other fancy perks.
Interview the proposed team before signing a contract, just like you would with full-time employees. Don’t accept an assignee unless you are aware of their background (education, previous employment, previous projects, and even references). If the agency doesn’t provide this information, or if you wouldn’t hire this person yourself, pass.
Learning on the Job
Agencies typically work on multiple various technologies. They will sell this as the benefit of having experts across all disciplines ready, willing, and able to staff your project immediately. I’ve seen developers transition from PHP to Objective-C to .NET within a year. I’ve seen developers shift from complex microservice projects to a simple WordPress database conversion project.
While developers can switch technologies, it is inevitable that they will be reading documentation, following tutorials, and copy/pasting sample code never intended for production. Even when a developer has previous experience in a particular technology, the time between projects will still require that they refresh their knowledge with the latest updates.
Clients end up paying more short-term due to inefficiency, and they’ll pay more long-term due to the technical debt incurred by first-attempt quality.
Choose an agency that specializes in a single technology stack. The developers assigned to your project will work quicker and deliver higher quality code. Even if their rates are higher, you’ll often pay less and will reduce the risk of project failure. If they don’t specialize, pass.
One-size Fits All Process
All projects are not created equal. For example, a startup is not a smaller version of a large company. Most agencies impose a cookie-cutter process on each client. This might come in the form of requiring the assignment of a project manager even when the client provides one. Or, having internal meetings in addition to the meetings that the client organizes. I’ve even seen highly structured and formal processes imposed on a team of two co-located engineers that sat next to each other. I promise, when these engineers needed to communicate, they didn’t reference the communication matrix. All of that required effort was an expensive waste.
If an agency works with government, enterprise, and startups, then you should be concerned about their process overhead and efficiency. If an agency builds new products, extends existing products, and offers maintenance services, then you should also be concerned that generic processes that are bloated.
Choose an agency that specializes in your project type. If you’re a startup, find an agency that specializes in startups. Or, at the very least, ask them about how they cater their process to different types of projects. If they don’t, pass.
Starting From Scratch
Every project that I have been a part of (as a contributor or client) begins from scratch. Someone is always building authentication, integrating payment gateway, writing deployment scripts, etc. It’s not uncommon to spend hundreds of person-hours to reach a point common to most projects. A client can spend tens of thousands of dollars before they begin to see project-specific functionality.
The primary reason that agencies start from scratch is that they are working on various technologies. Investing in the construction of a starter project doesn’t pay off when every client has different requirements.
Choose an agency that has a foundation from which they build. It is easier to find these types of agencies if they specialize in a single technology stack. Some agencies start with a few scripts while others have robust, customizable CICD pipelines. Save yourself weeks/months and tens of thousands of dollars by understanding where they begin on day one.
Many agencies require terms of 30, 60, and even 90 days. The last agency that I was a client of required a 60-day notice before terminating a contract. And, they had the right to reassign any resource during that time. These terms were designed to reduce the risk of having unassigned resources (overhead) at the expense of the client. These terms are a relatively common practice.
For some organizations, this is acceptable. For a startup that may need to pivot quickly, this can be devastating.
If you’ve made it this far, you should be able to guess the solution: choose an agency that specializes in your type of project. For example, if you’re a startup then they should have terms that work well with a startup. Also, actually read the terms. Understand that you don’t know what the future holds. Flexibility favors the client while rigidity favors the agency. “Hire slow and fire quickly” also applies to agencies and contractors.
Building software is hard. Finding talent is even harder. I’ve worked at agencies and with agencies as a client. I’ve been a freelancer, and I’ve hired freelancers. I’ve been an employee, and I’ve hired employees. Each approach has pros and cons. Employees can retain hard-earned product knowledge but represent an expensive commitment for startups. Agencies can augment staff quickly but often deliver sub-optimal results. Freelancers can retain hard-earned product knowledge as well as augment staff quickly, but are more expensive and often require additional oversight.
There is not a one-size-fits-all approach. Understanding your needs and how each solution fills these needs is critical in finding the right match.
If this article helped to prepare you better to find an agency, please give it a clap. Find more articles and resources to aid in agency selection.