Some people think coders are like the programs they write; input a set of instructions and functional code comes out. But in reality, that couldn’t be further from the truth.
As someone who has hired multiple developers over the years — first for my agency and now for my SaaS company, Proposify — I can say I’ve been extremely lucky to have hired some incredibly talented coders. Admittedly, I’ve also hired mediocre developers and a few absolutely abysmal ones. Thankfully, all the devs at Proposify right now are amazing.
Non-technical founders and agency owners often struggle with hiring the right developers because on paper virtually every developer's resume looks the same, mostly filled with acronyms and gobbledygook that sounds smart but who knows? I’ve already laid out our startup hiring process in a past blog post, so I won’t rehash it here.
Outside of a seemingly good personality, solid references, recognizable past employers, and the typical stuff HR professionals look for, how do you know when you’ve found the right kind of developer for your company?
The fact is, you could find a developer who performs incredibly at an agency, but is a disappointment at your product startup. And that’s simply because these two types of companies benefit from two different breeds of developers.
Here are three things to consider when hiring an agency vs startup developer:
1. Speed vs quality
Let me preface this by clarifying that I am not suggesting that agency developers don’t need to write quality code. What they build for clients should be sound under the hood and work properly. What I am saying is that code quality is less important at an agency than it is at a startup.
Think about what it would be like to be a builder on a movie set compared to a home builder.
A set needs to serve its purpose, which is to look great on film, and be built quickly. It doesn’t need anything else because it’ll likely be torn down within a few weeks.
For a person building a house, it’s a completely different story (pun absolutely intended). The house will still be standing a hundred years from now so care needs to be put into the things you can’t immediately see, like the foundation.
Most clients who hire agencies have immediate needs. They need a website to promote their business, or they need to put out version one of an app to see if they can get traction before raising money and hiring a team.
During this process, strategists and designers may take longer than expected and suddenly developers have even less time than expected to build out the project by a certain date. As a result, they may have to take shortcuts to meet the deadline.
Developers at agencies need to be scrappy and flexible, able to get a working product out the door on time.
On the other hand, product developers at startups aren’t at the mercy of clients, so other than worrying about their financial runway or critical bugs, they can take the time to plan their coding decisions for the long term.
For product developers, long-term coding involves documenting and commenting their code using easily understood naming conventions so that any new developer coming on board can get working with the code faster.
Startup developers also need to take technical debt seriously. Technical debt is the result of taking shortcuts that can, over time, make the entire product unstable, like a house of cards.
Developers at startups should be constantly refactoring their code, which means optimizing code so it’s simpler, more elegant, and has fewer dependencies. Doing this avoids technical debt over the long term, and startup developers have the time to do this.
Questions to ask when interviewing:
For an agency developer:
“Imagine the client calls and has a tight deadline for getting their project built. What are some strategies you’d employ to make sure you ship the release in time?”
For a product developer:
“Have you supported a website or app long term?”
“What are some of the challenges you faced?”
“Tell me about a solution you implemented that worked well at the time and you outgrew it. How did you fix it?”
“How often do you refactor your code?” (looking for any answer BUT ‘never, my code is perfect!’)
“If you were tasked with fixing a bug in a way you know will cause issues down the road, how would you explain that to your manager?”
2. Attention span
Due to the nature of agency work, an agency developer rarely maintains one project spanning over years.
A developer at an agency should enjoy the challenge of starting a new project every few weeks or months. They’re like a surrogate who doesn’t need to raise the baby over the long term.
The agency developer takes advantage of the opportunity to try out new languages and frameworks when starting a new project because they can. They have shiny ball syndrome, and they aren’t ashamed of it.
On the other hand, startup developers are stuck with what the product is built in and need to make the best of it, even if a newer, hotter framework all the cool kids are using just came out.
Software is never ‘done’ so startup developers need to be all about the journey, not the destination. They relish the challenge of building one thing and constantly iterating and improving it over time so it’s the best it can be.
Questions to ask when interviewing:
“How do you feel about working on just one product instead of multiple ones?”
“Tell me about a project you worked on that you’re particularly proud of. What made it awesome?” (looking for an emotional connection to their work)
“Tell me about a challenge you weren’t sure if you could solve and what your solution was.” (looking for creativity in problem solving)
“Tell me about a project that fell apart. Why did it fail? What could have prevented it?”
(looking to see if they place blame, own the mistake, or provide concrete examples of what could have been done differently to prevent it)
3. Specialization vs generalization
Specialists aren’t very useful at agencies. I knew a developer who worked at a large agency and only wrote Actionscript (Adobe Flash’s programming language). There was a time when there was enough Flash work to keep him busy, but as Flash quickly fell by the wayside there wasn’t much work in it for him.
An agency developer should know the full stack, and be able to pick up a wide variety of languages, frameworks, content management systems, databases, etc. When a client comes along who needs changes to their iOS app, or their Drupal website, the jack-of-all trades developer is infinitely more handy to have around at an agency.
As mentioned earlier, products tend to stay in the platform they were originally built in. Even parts of Facebook are still written in PHP — the original language Zuckerburg coded it in.
Therefore, startup developers can be more specialized. If a product requires a heavy duty data mining engine written in Python, or a multiplayer game using node.js, you can have dedicated developers who know pretty much just that and they’ll be busy for years.
Questions to ask when interviewing:
“How many languages have you worked with? Which is your favourite and why do you like it?”
“Are you interested in learning any other technologies? Which ones? Why those?”
“Do you do any work in your spare time?” (for your own development, not paid)
There are a lot of things to watch for when hiring agency or startup developers, depending on the particulars of your business but the above three should give you a good indication of whether or not the candidate you’re looking at is a good fit for your company.
Thanks to Jonathan Down who contributed ideas and hiring questions to this article.