15 min read
We know that as we are a software house, you might think that we can't be objective, and with this article we want to sell you our services. But this time we just want to show you the pros and cons of each solution based on our experience and the experience of our clients who have used both types of services.
Why would we force someone to pick us, when later things would go bad because of a faulty qualification? If you are looking for someone who will build your software, revamp it or continuously iterate and improve it, you've come to the right place. Before you make any decisions, read carefully. Off we go!
Synopsis: The choice is not obvious and you have to always consider carefully which option to follow. If you have a small project, a couple of tasks, maintenance jobs think about a freelancer. If you want to build or iterate a bigger app (from 20k USD), your app has a complex logic and you require research and project management think about a software house. It is harder to find a good freelancer as it is harder to find verified reviews. In case of a software house, there are many professional portals that gather only verified reviews (Clutch.co). If you have a small budget and you need a prototype it will most likely cheaper to hire a freelancer. Freelancer is more likely to accept fixed price projects. If you have a bigger budget and less limitations, learn more about software houses' offers. For more details, read the whole article!
1. Let's define the concepts
Who is a freelance developer?
A freelancer is basically an individual that is capable of writing software, testing it, maintaining it, improving it etc. It can be either a programmer with higher education, a tech school graduate/coding school trainee or a self-educated developer. It's a very diverse and colorful group of professionals with many different sets of skills, backgrounds, and approaches. It is of course not every case, but sometimes you can find a freelancer that quit their jobs in software companies or software houses because they were not able to follow established rules and be a member of a team. In CV we all can be top notch specialists, but verification of the skills takes time and money. Product owners sometimes hire consultants that search freelancers and are able to verify their knowledge.
Who is a developer from a software house?
Such developer is, in the majority of the cases, a tech school graduate, less often coding school trainee and rarely a self-taught developer, but that of course happens and Visuality never underestimates such candidates. In our case, it’s a developer that managed to get hired after a very thorough recruitment process and has been assessed by software house’s CTO who thanks to numerous tests and conversations can determine the skills, strong and weak points of the developer. Developers in software houses constantly evolve, learn new things (soft and hard skills) from each other, check each others code etc. Teamwork is essential in software houses so the developers also learn how to communicate with other members of the crew and how to talk with clients.
The developers that are hired by a software house are top quality, they were picked from dozens of candidates. Software houses like Visuality invest in their employees. We send them to conferences, we organize lightning talks, workshops, investment days etc. Finally a client benefits from such actions as well as the developer himself. Developers in software houses tend to care more about the quality of the product and service as they risk the reputation of their company.
2. Is it easy to define who you need?
Definitely not the easiest job in the world. At Visuality, we’ve completed more than 100 projects and we can say the magical two words in that case „it depends”. And it depends on many factors like:
Size of the project
And many more…
Of course, if you are an experienced product owner, or you’ve worked with IT projects previously it will be easier for you to define those critical areas. If you don’t or you’d prefer to consult first, it’s easier to speak to a software house and present them your doubts and concerns.
Each professional software house hires business developers and product designers who can decide whether your project requires a freelancer or a development team. Such an assessment is done through specially crafted complex surveys first. The business development team works closely with the company’s CTO, therefore they are able to give all the feasibility checks in a short time. This assessment can be trustworthy given the company experience. Part of such services is price included in hourly software development service.
You can consult with a freelancer too, actually I recommend to do both, to see the whole picture and to get to know your options. Freelancers with big experience are usually capable of delivering the estimations and assessing the technical side of the deal, however, keep in mind that sometimes they won’t help you make good business decisions. It is simply not their job and you can’t ask them to make false promises or to guess.
Let’s talk more about some of the critical areas:
- size of the project
Many product owners do not have technical skills therefore they often make assumptions regarding the size of the project. Even a heavy app user sometimes underestimates the complexity of the software he uses. If you are not a developer or CTO yourself better leave the estimation of the scope to a professional. Please mind only the fact that freelancers run their estimations less often and they tend to follow their intuition. CTO’s in software houses use the whole company’s know-how and follow specific frameworks for estimations like three-point estimation technique. They also tend to compare work to be done to their past executed tasks which gives you real data you can trust.
- budget and scope estimation
This is one of the first questions a freelance developer and a software house ask when they discover the opportunities with the client. When the budget is fixed and there are no options to scale up or down, then it is usually easier to talk with a freelancer who often is more eager to accept your conditions. He is simply more flexible with the budget. However with a freelancer, there is a higher risk of under estimating the scope of the project. Software house (given the experience and know how) is able to estimate more precisely and has the know-how that speeds up the process and helps to avoid problems and predict different scenarios.
When a product owner creates the concept of his product it is often not yet verified from both business and technological perspectives. I recommend my other article From idea to concept which talks about preparations of the brief for software house or freelancers (http://www.visuality.pl/posts/from-idea-to-concept)
When there are still uncertainties whether the product will monetize or is it possible to create it from a technological point of view, you need someone that will help you run simulations and suggest alternatives. In that case, I strongly advise contacting a software house as among their staff you will find experienced biz devs and product designers who dealt with many different products and markets.
- deadlines, security and legal side of the business
Deadlines everywhere…it’s how our world is built. A freelancer can be honest and responsible but what if he disappears or he does not deliver on time which will compromise the whole operation? You will have your hands tied. With a software house you will minimize the risk. For a software house it is easier to find a new dev if needed. Software houses like Visuality have certain procedures that ensure the continuity of the project no matter what happens (I recommend research about bus factor). If things go bad, you will be able to actually fight for your cause with a software house. If you have an investor breathing down your neck, even if it’s more expensive to go with a software house, you can be sure it’s a safer option to deal with a mature company on the other side in case of crisis. On the other hand it will be easier to work on a smaller apps with a freelance devs, as they usually have shorter notice periods than software houses.
3. Project management
Visuality hires experienced project managers for a reason. These guys know how to talk with developers and understand their feedback and needs. Do you? Imagine the project manager is an interpreter. He listens to you and converts your needs and ideas to a language that developers understand. It makes the workflow more efficient and helps in avoiding problems. Of course many freelancers, given their experience, know how to talk with the product owner directly, but when you have a dedicated person that helps you in organizing the sprints and the backlog, you can focus more on running your business. If you work with a freelancer you can always hire a project manager, but you would already hire two people that initially wouldn’t know each other at all. Maybe because of different working styles, they wouldn’t get along? In software houses these guys not only work together but also often share a cold one after a hardcore sprint :)
Most importantly, when you hire a software house the whole organizational activities are on their shoulders, not yours. If you leave a freelance developer unattended, things can go south, so do that only when you have plenty of time, patience and no deadlines.
A freelancer can be a total badass, can know plenty of programming languages, tricks and hacks but usually, such a guy is not as cheap as you thought and his availability is far beyond your expectations as he has already 3 projects scheduled upfront. Majority of the clients choosing a freelancer chooses the mid-level one. It is really difficult to assess his knowledge and skill set.
Despite what I wrote above, consider this - a freelancer has limited access to knowledge base. He usually uses his own experience only. So when he finds an obstacle on his way, it could take longer for him to find a solution. Github and programming forums are packed with questions from the freelancer, some of them without the answer. In software house like ours there are approximately 20 developers and the master developer - CTO. Knowledge of all the devs together + CTO’s + the overall experience and finished projects = know-how. If one dev is stuck, his team colleague might find the answer in couple of minutes, all happening in the same office.
I don’t want to sound obvious, but when you do something for yourself you usually cut corners. You know how to fix it if it breaks, right? Cutting corners, pasting ready solutions from stack overflow - these are the things for which developers in a software house would get bashed on their heads. This ensured by company policy, CTO overlooking the development, team leaders and the project manager. Can you be so sure that a freelancer does the same as our devs?
Comments, documentation, procedures? For what? This job is done by freelancer and he is working in this way. So what happens if somebody comes after you and he tries to figure out what do to? It takes time to learn and improve. Usually freelancers want to show you the outcome fast, it’s the result that counts. It works? So it works, just leave it alone.
Software houses share the experiences. They are looking more mid and long term. They think about scalability, security, maintenance aspect of the software. To do this they need to have and follow procedures and coding standards. Of course, you will find bad software houses, but it is less likely that the code will be a mess. Software houses write tests to ensure the quality or the developers at least ask their colleagues to check their code.
Here you can find the summary of the knowledge from this post in a form of a table:
As you can see if you are looking for a person/people to start the development from scratch or seriously improve and iterate your current product, software house would be the best option. Given the whole know-how, experience, project management skills you minimize the risk that way, especially if there are deadlines involved and/or investors waiting for results. If you need to run feasibility checks, estimate the scope, consult the business model also ask a software house, they will have all the answers for you.
On the other hand, if you are looking for small improvements, you are self-funded and there is no deadline on the horizon go for a freelancer. Especially if you are technical or at least you understand the almighty programming jargon and processes, you will be able to work closely with a freelancer. A freelancer can begin the project a bit faster, while the software house needs to analyze the whole deal, brief the team etc.
If you have any doubts or questions please feel free to contact me at firstname.lastname@example.org