6 Important Questions to Ask Before Hiring an Offshore Software Development Company
Are you thinking about hiring an offshore software development company to work on your startup idea? Let’s be honest – for many startups, this can be the difference between getting something built or not.
It sounds good, right? But before you go ahead and pull the trigger – there’s something important you need to know:
Not all projects can be outsourced effectively.
Luckily, such projects are rare, and even if your project has some elements that can’t be outsourced, chances are you can still outsource a major part of it. The key is to do the necessary prep work that will maximize your chances of success.
So, is outsourcing your development right for you and your startup? Here’s six critical questions to help you decide.
1) Do you have a technical friend or a mentor who can give you initial guidance?
In order to hire a good outsourced team or freelancer, you need to answer 2 important technical questions: “what technology should we use?” and “is your team good at that technology?” But how do you answer them if you’re not a technical person?
The solution is to find a technical mentor.
A technical mentor is a credible technology expert who can spend a couple of hours per week with you during the initial stage of your startup. It can be your friend, a co-worker or somebody you met at a meetup. As Ian Crosby of Bench.co points out, it is important to validate this person’s expertise. A recent CS grad or somebody who does coding as a hobby is probably not the best choice. On the other hand, somebody who recently built some software similar to yours, or someone who works at a top tech-based company (e.g. Facebook or Google) is a good candidate.
Your mentor will help you navigate this process, choose the right technology stack, do code reviews and potentially interview candidates. It doesn’t have to be a full-time CTO – meeting for a beer once a week during the initial stage should be enough. You can even offer to pay for their time if they are unable/unwilling to do it for free – believe me, it’s worth it.
Need some help on finding a solid technical mentor? Check out how these 3 tech CEOs found theirs.
2) Are you comfortable with documenting every major function of your app?
Outsourcing works best for well-defined projects. Writing specification is one of the most important steps before you hire developers and can save (or waste, if done poorly) thousands of dollars. Documenting each function helps you and your developers stay on the same page and reduces time-consuming (and potentially expensive) back and forth.
First, make sure you’re familiar with the Lean Startup principles, especially the MVP. Start by narrowing down high-level functions(features) that are absolutely required in the first version of your app. At this stage, think of your product simply as an excuse to start conversations with your future customers.
don’t overbuild, you can always improve things later.
Describe each feature in detail, as if you’re talking to somebody who has no idea about the problem your application solves. The level of detail required for your specifications to work well might not be something you are used to, so check this video for an example on how to write a good specification.
Once you have a good description of all major functions of your app it’s a good idea to create wireframes(mockups/sketches). They will help your designer and developers better understand your vision in terms of how the app should work. Think of how to break down all functions into screens. Use other popular apps for inspiration – don’t re-invent the wheel. Create a sketch of every screen. Describe what happens when a user clicks a button/link, makes a selection, etc. You can give examples: “Make the animation of this popup like on xyz.com or in ABC app”.
This can either be done on paper by hand, or using wireframing tools like balsamiq.com or moqups.com. You could also hire a UX designer or agency (don’t confuse this with Web design) to do this for you. However, I recommend doing at least high-level mockups yourself – it’s a valuable exercise to help you better define your vision of the product. Check these examples for inspiration.
3) Are you ready to provide designs for the developers?
A common mistake people make is assuming that developers should be able to do the visual design of their app. It’s like asking a plumber to do interior design. There are talented developers who also are talented designers, but they are extremely rare.
Don’t make developers design your app, unless you want it to look like this.
After you have wireframes created, a good option is to post a project on 99designs.com or designcrowd.com to have multiple designers compete for the design of your application. Another option is to browse dribbble.com or behance.net and contact great designers directly. In both cases, send them the wireframes so that they can understand the layout of the screens.
Alternatively, if your app is a web SaaS, buy an admin template on wrapbootstrap.com or bootstrapbay.com. An admin template is a collection of professionally designed common web app elements: menus, buttons, forms, tables, icons, etc. It allows you to not only skip the visual design phase, but also saves your developers time coding those individual elements. You can think of an admin template like a constructor for the front panel of a microwave: you still have to build the microwave and wire it to the panel, but at least you get nicely designed buttons and a shiny display.
4) Are you comfortable with using online chat and email to communicate with your developers during a limited time window each day?
Depending on where you live your developers’ time zone can range from 4 to 12 hours behind or ahead of yours. This requires some getting used to. Fortunately, there are many tools to help you with this.
Email is my number one tool of choice, because (a) it doesn’t require both parties to be online and (b) it retains all information in an easily searchable format. Approach emails the same way you approach specifications. Write detailed answers, use bullet points to separate items, use screenshots, avoid ambiguity as much as possible.
Develop a habit of answering your developers questions before the day’s end. That way they can work while you sleep.
Chat (slack, skype, hangouts) is good for real-time discussions. I recommend chatting during pre-arranged times so you don’t distract your developers with a constant stream of questions. Avoid lengthy explanations in chat – use email instead. This will allow you to better word your explanation and make it easier to find it later.
Video/voice calls are the least effective – the information is not retained anywhere. Also spoken English is much harder to master than written, so the conversation can be very frustrating for both sides. If you need to share your screen – Skype makes this easy. For screen sharing also consider recording a video of your screen – that way it can be retained and shared with other team members in the future. Jing is free software that allows to record your screen and share the video with anyone. Snagit is a more advanced paid version.
5) Are you prepared to do thorough testing of your application and document each bug?
Don’t rely on your developers to deliver a bug-free first version. There will be bugs. Almost every application you use has bugs. Companies like Facebook, Google and Apple invest millions in bug hunting programs. Your application will be no different, and it’s not necessarily because your developers are bad. There are several reasons for this. First is complexity – a typical application has many interconnected components and our brain has no way of predicting all possible scenarios that can happen. Second, many developers hate testing, because it is extremely boring compared to coding. Another reason is that developers are so “zoomed in” they stop seeing the forest for the trees and can no longer use the application as a regular user would.
So you’ll have to fill the gap and test every aspect of your application yourself. Keep in mind that, as a creator of your app, you likely will not be able to use it as a regular user.
Having a group of people who can use your early product and report all issues directly to you can make a big difference.
They will help you not only catch bugs, but discover parts that are hard to use or not clear.
When you find a bug, make sure to give your developers step-by-step instructions on how to reproduce a bug. Instead of writing “Form doesn’t work” write “1. Fill in First Name, 2. leave Last Name empty, 3. click Submit – witness error screen (screenshot attached)”. Include browser name and version or mobile device model you used.
Remember, bugs don’t automatically mean your developers are bad, so don’t get frustrated right away. However, if the same bugs appear again and again after your developers fix them – this is a red flag. This means they are having a hard time managing the complexity of the app.
Here’s a great read on why software testing is so important.
6) Is your product going to be built with cutting-edge or uncommon technology?
Lastly, if the core technology of your product is still in early stages of its development and requires a lot of research and/or experimentation, then your product is probably not a good candidate for outsourcing.
Check if your product belongs to categories of AI, machine learning, computer vision or related fields. Does it require deep academic knowledge? Is it based on a math-heavy research paper?
Remember that outsourcing is best for well-defined projects that don’t require special domain knowledge or extensive research.
However, the chances are you can still outsource a part of your project. Example: Pandora uses the Music Genome Project at it’s core, development of which requires a lot of research and can’t be outsourced. However, you can easily outsource the web interface: login/registration, playlist, music playback, payment processing, etc. This can be beneficial for your startup, allowing your in-house team to focus on stuff that is truly hard, while outsourcing the more defined, but time-consuming parts of your project.
Tying it all up…
As you can see, there are many things you need to think about before finally pulling the trigger and hiring developers. Founders that skip the necessary prep work often fail miserably and end up spending their valuable time and money on a product that doesn’t work.
Don’t be one of them.
Use the steps that smart entrepreneurs and agencies follow to consistently and cheaply achieve great results.
To put it in perspective, think about an offshore development team or freelancer not as a one-stop shop that magically solves all your problems (although many will want you to believe they are), but instead as an assembly line that you rent to build a part from your blueprint. With no blueprint how is the assembly line supposed to figure out what to build?
If you’ve had experience with outsourcing software development – please share your story of success or failure in the comments. If there is a smart trick that worked for you or a mistake others should avoid – share it. Who knows – some of these stories could provide a great starting point for a future article.