I promised to write some tips about hiring a developer, and that’s exactly what I’m going to do now. I will focus on hiring a remote developer because that’s something I would do as a non-technical founder of a startup without a ton of cash who is just starting out. Let me know if you’re interested in knowing how to hire someone to work for you in the office full-time.
There are certain decisions you need to make before even starting to look for a developer, for example, her seniority level, her stack (backend / frontend / full-stack) and actual technology you want to use. I would highly recommend showing your high-level project requirements to an experienced consultant with a track record to help you choose the technology, and he will also advise you on the seniority level and stack.
Typically you would want middle-level dev with a full-stack skillset. That will allow you to save some money and get something done that won’t be a complete waste of time and budget. I wouldn’t recommend starting a project with junior devs — they typically are poor problem solvers and need guidance from more experienced colleagues.
A consultant might sound like something unnecessary, but he can save you a lot of headaches by setting your product development on the right track and keeping an eye on the process from time to time. He will also be a third-party who cares about reputation so you can expect only reliable guidance.
Unfortunately, you won’t know if the person you are going to hire is a good fit or not before you start working and get first deliverables so be prepared to spend some time and money on paid test tasks. I wouldn’t recommend asking devs to do something complex, maybe a simple but visible feature for your app that you can build on in the future, your consultant can help you with that too. Usually, after a week, you will see if the developer is capable of delivering, if he is persistent and communicates well.
Here are three must-have skills you would typically want your first remote developer to have, it all boils down to just being professional:
Skill #1: Communication
That is something you will get a feeling of early on even before starting to work with your new hire. Pay attention to how fast she replies to your messages and request. Does it take days to get a list of past projects? Probably your project is not that interesting to this person, or there’s something more important happening, feel free to move on. Does she disappear for a day without letting you know at all? That’s a good sign of a person not being able to communicate well. Even in rural India when lights go out, people have mobile internet to send short text explaining the situation. Shit happens sometimes, but you should expect even simplest notification.
That also applies to the work itself. Your developer should let you know when part of their work is done and ready for testing, not just upload it elsewhere and tick the checkbox in the project management tool. A good developer should chase you with questions about missing info or assets, not just silently sit there for you to discover nothing had been done for last X hours. It may sound like basic 101 but sometimes even people that others recommend you will act this way for personal reasons. I don’t know honestly why. I was working with a guy once who was always asking stupid questions just to keep himself idle. Given that I couldn’t reply immediately he usually was idle 50% of the time.
Skill #2: Being able to deliver
By that I mean not only writing code but showing you something that you can review, that works and passes common sense and sanity check. In an example of a login form, I used before you should be able to log in and see an error message if something went wrong. That is something junior developers often have a problem with. They tell you that feature is done, but when you are on to review it, you make some shocking discoveries.
For example, form submit button is above the form fields. Or, you can’t log in because your email contains @ sign and it does not pass validation. Or something else that makes you sure that person who created this page never used the internet before or just haven’t ever seen what he created. It's important because you don’t want to be a nanny and write tons of messages to fix common sense errors. You also don’t want your project manager to do that because it will quickly drive them crazy.
Skill #3: Presence and persistence
There are a lot of professional remote workers out there. They typically have a work schedule like ordinary office workers and try to stick to it. Don’t hesitate to ask about it and make sure it fits your own schedule. Define a time when you both will be online and available so that questions and issues can be worked out. Define time for an hour-long weekly call. If your dev refuses to work on a schedule that’s a red flag. A developer can’t be productive working in random chunks, and there are always questions and issues that will take forever if you don't have an expected overlap in work time.
By persistence, I mean being able to work for long periods of time without getting distracted. When working remotely you typically have a lot of opportunities to spend your time — you might want to travel or work for a month or two and then take some time off for your personal project. Then work part-time because the weather is so good. You don’t want your startup future to depend on a person like that because it will make your project planning a nightmare. You need to set clear expectations from the very beginning that you would need at least six months working 40 hours per week. I’d recommend agreeing on a bonus if this expectation is met, let’s say you pay 10% premium. I wouldn’t recommend promising a premium based on your ‘happiness level’ because you will always feel that more could be done and that something was underdelivered. And if dev won’t get his bonus, he will lose faith in you.
Skill #4: Expertise
After you decided on the technology, you want to use you have to look for someone specializing in it. It doesn’t mean that it should be the only thing a person has been working throughout his life, probably that is suspicious too because developers are naturally curious. Just pay attention to the skillset your potential hire has. If you see ten programming languages and five frameworks don’t think that you are lucky enough to find a genius. Most likely you stumbled on a generalist who knows a little about everything but isn’t an expert in something specific. It's an excellent way to weed out low-quality developers early on.
I hope this write-up will be helpful. Of course, there’s a lot of details, and it’s impossible to describe everything in a single post by I tried to cover basics. Let me know what I should write about next, I’m thinking about covering the differences between backend, frontend and full-stack and how they work together.
(Originally posted on Reddit)