Mobile is changing the world but many organizations lack the in-house expertise to develop their own mobile apps. Fortunately, the market is full of agencies, freelancers, outsourcing centers and other companies potentially capable of building your killer app.
In this post I’ll give you some hints and thoughts on how to choose the partner to realize your vision. There are some questions you should ask yourself before starting the search (we’ll get to those) and some things you should demand from any developer you’re going to work with.
First and most important point is to focus on looking for a partner, not a contractor. What’s the difference, you ask? The contractor will do what he’s paid for (hopefully) and then move on to another project/client. But you should expect more. Whether you’re a big company or a small startup (with aim to grow) you need a partner to help and participate in growing your business. Someone experienced who can deliver not only the requested code, but also the consulting, innovativeness, support and many other qualities that I’ll touch on later.
Maybe you don’t realize it at the beginning, but you’re potentially building a long term relationship here. If everythings goes well you’ll be building next versions of your product, you’ll target new markets and platforms and you need someone who’ll be there with you and who can grow together with you.
The quality of the cooperation with your partner depends on the communication. Hence, the quality of your business depends on it – it’s so simple.
The communication is most effective if both sides speak the same language – the business language in this case. I may assure you that best developers will be eager to learn your business and at the same time they will introduce you to some technical details of their work, just enough that you know where are the current boundaries of the technologies you build on, what’s feasible and in which directions you can innovate.
Good, proactive communication also gives you one really important advantage – a peace of mind. If your partner is reliable, responds precisely and promptly to your questions, communicates problems early then you don’t have to worry if you don’t hear back from him every few hours. It just means that everything is running smoothly 🙂
You don’t want to be bothered with every small project detail, problem or decision to be made. You already agreed with your partner on what’s your business goal. Your partner is committed to the project and you have a good communication channel, so it’s natural that he will take some responsibility from your shoulders and let you focus on your business. The best development companies out there will not only deliver the technical but also project management skills. They’ll solve the easy problems by themselves and come back to you only with the harder, strategic ones. And even then, they will present you a bunch of options and a recommended solution.
Technical and operational versatility
If you have a choice to cooperate with a few companies (for example one doing the wireframes and design, the other the mobile client development and another doing the server side) or to cooperate with only one, providing all the services, you should prefer the latter. This way you have a single point of responsibility, so you avoid the situations when the contractors blame each other for potential problems. The communication is obviously easier in this case. From my experience, I saw many cases when client side developers were blocked by the server side development. Of course, it’s all about the deadlines and schedules. It’s always easier for one company to organize work efficiently and avoid the bottlenecks.
Having said that, it may be hard to find a developer that has capabilities to do a usability analysis, graphics design, client and server development and whatever you imagine. But for sure there are companies that manage their ecosystem of linked partners with diversified skills and that can organise the whole project. So even if they don’t do the server or mobile development by themselves they’ll organize everything for you and provide a single point of responsibility. By the way, there is a growing business for helping smaller companies do more – you may want to check the Backend As A Service post published earlier on our blog.
There are basically two pricing models to choose from: ‘fixed price’ and ‘time and material’. Which one you choose depends on your situation, but basically you should choose fixed price when you know exactly what you want to build and you don’t envision any changes throughout the project. You just want to get a price from the developer, maybe to compare it with other prices and choose the lower one. I must however warn you that this is probably the bad approach as the IT industry and it’s clients has already learned the hard way many times. The key reason is that the requirements almost always change, so why would you like to put yourself in a position, where you already have signed a contract with fixed content and fixed price? The changes can be really expensive in this situation.
Ok, so let’s talk about ‘time and material’ – it just means that you pay as you go. You agree on some iterations, for example one or two weeks long and pay for them. You may change your mind after any iteration, as the content is fixed only for the current iteration. I will not go into details here, you will find more information by searching for ‘agile software development’. But what does it really mean for you? You may start with something small, develop an MVP and then decide where you want to go further. You may do some experiments and prototypes along the way, you may speed up, slow down after each iteration. This flexibility is really important in today’s world. If you don’t want (or can’t) plan upfront for next few months or years, or you would like to be able to quickly adapt your business to changing conditions then this is the way to go.
The choice really depends on your needs, just make sure that your partner supports the required pricing model and operational mode.
So should I hire a freelancer or an agency?
If you are from a software company then a freelancer may be a good fit for you, as you probably have many of the agency capabilities inside your company and you just need some additional manpower for a limited period of time or some missing technical skills. However if you lack expertise in software development you probably would like to go with the agency.
Good agency will give you more stability in case of long term cooperation. It can find substitutes for absent developers, something that you would need to deal by yourself if working with individuals. Partnering with an organization gives you also more time and schedule flexibility. What I mean by that, is: you should demand availability from your partner, but as already mentioned, there are times when you want to go faster and times when you want to slow down. It’s hard to require such an availability from an individual developer. If you don’t provide enough work for him, he’ll be forced to look for another project and may not be available when needed. On the other hand, an organization providing development services for many clients can deal with it pretty easy, as it is able to switch people between projects if needed. It can also easily add new developers to the project if you want to accelerate.
You should also note that a company has probably greater knowledge than any individual working alone. This relates to my previous remark about technical versatility, but it also goes further than that – it can provide you with technical knowledge in the fields that you don’t require when the project commences, but which will turn out to be indispensable after releasing first version, pivoting your business, etc.
In my career I’ve also met clients who were left by their developers with the application in the app store and no source code or possibilities to continue the project whatsoever. This is of course no argument in freelancer vs company discussion, just keep in mind that the project does not end when the app is released in the app store. Even if you don’t plan to release new versions, you should always be able to get some support from your developer when you need it.
This post by no means exhausts the topic. I’d be really happy to see and discuss your comments.