In this blog post I’ll try to objectively present the pros and cons of commissioning agencies against those of commissioning freelancers in the development of mobile or web solutions.
Today’s post has been inspired by a conversation I had this evening with a potential client/partner who had been referred to us by a freelancer colleague. The reason he referred us is because he could only do ROR+JS and this particular client needed native mobile Android and iOS development, which we specialise in (we’ve built and submitted over 130 apps in the last 5 years alone).
A client lost
As I started talking to this potential client, right off the bat the conversation focused on money (which felt a bit awkward, since I was expecting to talk about our expertise and our portfolio), so after mentioning our minimum per hour rate the person said “You’re very expensive Viktor…” What followed next was a strange reference to some minimum hourly rates of freelance programmers in our area. Suffice it to say, three minutes later I heard the last words from this good potential client, “Be in touch soon amigo, thanks for the info”.
Understanding the difference
All this made me realise that many clients who are looking to find a programmer/designer/qa on the basis of “biggest bang for their buck”, do not fully understand the pros and cons of working with a digital agency like eKreative vs individual freelancers.
Little caveat before we dig in into specifics: I strongly believe our pricing model is very competitive and attractive. We have not changed our main hourly rate in 6 years despite rising taxes, fluctuating economies, etc! Our commitment to price consistency and the affordability of our services is what has allowed us to attract more and more clients over the years and thus grow from two employees in 2010 to almost sixty in our team now!
Who should you work with?
In the following paragraphs I will attempt to objectively present both sides of the argument and show that still after one weighs up the pros and cons, you incur less risk and get better value for money working with a digital agency rather than a freelancer.
Although not always the case, there is a sizable risk when working with a freelancer that he or she is working on your project as a side gig or in the evenings when they are done with their “real” job (and you may not even find out). This of course means that you get second best – your freelance vendor works on your project when tired, after a full 8 hours of other work. He can not be fully productive working nights and weekends. If your assignment is very basic, requiring just man power and minimum thinking, then a midnight programmer like this might be OK for you. If however, your project needs a creative approach and out of the box thinking, with complicated problem solving, well, just think of your own level of mental capacity every day between 8pm and 4am…
Alternatively, if the freelancer does not have any other work except your project (which can also be the case), what happens to your timings, milestones and deadlines if he gets sick, if he has family problems, his girlfriend dumps him and he is an emotional mess, or if anything else happens? Your eggs are pretty much in a single basket here. Taking a project off of one freelancer and passing it to another would involve enormous amounts of patience, time and of course money to transfer knowledge and get the new guy up and running.
The biggest advantage of working with a freelancer when it comes to time is that often they can be easily persuaded to work beyond 8-to-5 and on weekends. This is good if you have a short task that’s hot and needs to be handled asap, but practice shows that on projects spanning over weeks or months it is unreasonable to expect a freelancer to continuously work beyond normal working hours.
In contrast to freelancers, an agency has the resources and the manpower to schedule and substitute its workforce with minimum risk to the project and its deadline. At eKreative we are quite strict about working only 8 hours a day. Some may consider this a minus, especially since we openly declare that if our clients wants us to work after normal working hours, our rates goes up 1.5 times.
When you work with an experienced agency like eKreative, you get a project manager as well as the programmers, designers and QA engineers. The project manager creates, maintains and makes sure the team stays on track with weekly sprints and monthly milestones. We provide our clients with a detailed road map of the project before we start and know that we will get to the finish line regardless of any unforeseen circumstances that might come along.
If the programmer gets sick, we quickly substitute him with another one from the same agency. The knowledge transfer happens smoothly and quickly as inside of the company we have standardised and pre-agreed approaches to writing, commenting and committing code. We use libraries and frameworks that are known to all internal developers so adding or replacing team members is a breeze. In fact in 99% of cases the client would not even know (or care for that matter) when that happens, because at the end of the day the project proceeds on schedule and finishes on time.
I have not yet met a freelancer that works in partnership with their own testing or quality assurance staff. If you work with a freelancer, be prepared to do a lot of the testing yourself. Of course good coders write good code and test it well, but I have observed time and time again, that when a programmer sees the same project for many days, at some point they stop noticing obvious errors, bugs or UI inconveniences. Programmers are also not trained to test for fringe, or edge cases, or to assume unlikely use cases and scenarios or to try and break their own code, which they think is a masterpiece. If you have ever worked with a freelancer you know that his main goal is to finish and get paid as soon as possible.
I submit to you that a freelancer is not even close to being in a good position to test his code properly, especially when it comes to mobile application development and the necessity of testing the app on a wide range of different devices. If I had a nickle for every time I’ve heard a freelancer say “Hey, it works well on my computer/phone”. The main question they ought to be answering though, is “will it work well (as expected) with the potential user base?” Most of whom of course do not have the same type of computer or browser setup as the developer. All mainstream devices and browsers need to be taken into consideration.
The big advantages of working with an agency when it comes to quality are: code review, dedicated testing by a professionally trained QA department, the closeness of designers and UI experts who can point out navigational problems and of course the access to a large amount of testing devices. When it comes to the latter, ekreative boasts at least 20 different android devices (phones and tablets), around 10 various iOS devices (phones and tablets) and whole range of things in between, including windows phones, blackberries, fire phones, firefox phones, google glasses, google cardboards, various wearables (android and apple watches) – you name it. We are committed to and budget for, purchasing anything worthy that comes out and that we think our potential clients would want to build for and test on.
Testing and quality assurance of the project in the context of a digital agency is not a mere afterthought but a deliberate and fundamental part of the project initiation. At the time the project manager drafts the scope of work and project milestones, the QA starts drafting possible test cases and test scenarios. The project team decides which unit tests the programmer will code into the application and the testers start thinking of automated testing scenarios that are created along side project development and used heavily in the final “clean-up” and release stages. It helps our clients and partners to work with us when we set the acceptance criteria and the testing parameters at that start of a project. All this work with QA obviously adds extra time and cost to the overall budget but greatly minimises the quantity and the risks posed by post-launch bugs.
Finally, when it comes to the quality of the code, at eKreative (and I assume it’s common practice in most agencies), the code and database architecture of all our projects are approved by our CTO. This ensures the overall consistency of each project and makes sure that fundamentally erroneous decisions don’t get made at the start of a project which could later on become major bottlenecks for the client (eg. regarding volume of users or the extendability of the system).
Regarding experience and expertise
A single developer can rely only on himself. We are nothing but the sum of our experiences, so when you hire a freelancer you hire his knowledge and his past experiences, but only his. You might think that in this day and age, with google and stackoverflow the fact that the developer is flying solo should not matter. All I can say to that is, wait and see what it will cost you when a developer gets stuck on a problem! Then what? Googling can carry you only to a certain point. Such a developer would inevitably wish he had other coders working alongside him who could validate his code and decisions and who could offer fresh brains when needed.
Suppose you come to a freelancer for a site and then you decide to expand into a mobile app. That programmer can’t help you any more and you find yourself looking for a second freelancer who will do Objective C for iOS and then a third one who will do Java for Android and the list can go on. You end up with a disjointed team, whose members don’t know how to talk to each other (or can not talk to each other because of language or time barriers). Wouldn’t it be easier and less risky to come to one place and get it all?
At eKreative (and I would assume at most agencies) we develop our skill sets in teams. These teams are like little clubs, which meet every week and learn from each other. Each team (be it a Symfony PHP team, Android Team, iOS team or QA team) has a team leader whose role is to always stay sharp and be on top of everything important happening in his technology in the world and it is his duty to share it with the team. We have seen time and time again that when a problem strikes one team member, others huddle in and brainstorm a solution together. The role of the CTO is in part to build up company wide expertise, set the tone for the entire development process and make sure everyone adopts and keeps using best practises of code writing and maintenance.
It is also a simple numbers game. One freelancer can do, lets say 5-8 projects per year. Our agency does roughly 50 projects per month! With every new project we almost always learn something and share internally, thus at the end of the year we have accumulated an exponentially larger skill set of things we can do, than we would have if every programmer worked in isolation. I am yet to see a serious client with a large scale project awarding it to a freelancer rather than agency. As that doesn’t happen, how can freelancers up their level? They can only pick up the small jobs that people are not afraid to give to them. This circle can only be broken when freelancers join an agency and begin to tap into a larger pool of knowledge and know-how.
And the money?
Here everything is simple. You just pay for the time of the freelancer at the rate that he evaluates himself. There is little to no overhead to be covered as he works alone, from home, can choose to avoid taxation and so on.
Here’s the dilemma though. Most likely (as in the overwhelming majority of cases) you agree with a freelancer on a per project payment. The first 80% of the work is done in 20% of the time and then comes the never ending 20% of the work which the developer (and for some reason they always think that way) thinks he will finish any day now. He hands you a build and there are a lot of bugs there, so you say: “fix the bugs and we will pay you”. The programmer is at the end of his finances, he has a family, he wants to eat, so he pushes hard to finish faster, but because he’s in a rush, more bugs come out or old ones suddenly re-appear! This keeps happening again and again because the freelancer is already in “lets-get-the-money-fast” mode and not in “lets-finish-this-project-as-best-as-i-can-for-my-client” mode, so this becomes a vicious cycle where with every spin he gets more and more and frustrated and you feel that this project is getting more and more unnecessarily emotional.
When it comes to an agency, obviously you will pay more. Significantly more. As well as offering better reliability and higher quality, agencies have a lot more overhead to be cleared when compared with freelancers. Hopefully my arguments above have shown that you also get significantly more and in the end you save money by having your project done on time, according to the specification and to your quality standards with no hassle and no stress.
What will you get?
Ultimately, you get what you pay for. We all want to pay close to nothing and receive the whole world in return. That rarely works. Many years of experience show that working with agencies highly minimises the many risks connected to offsite mobile and web development and for the large majority of projects is absolutely the right choice to make.