Software Development Company Vs Employing Developers

There are pros and cons both to employing computer staff and in using a software development company such as Hazardous Frog. Many people believe that the DIY approach of employing your own staff, be they permanent staff or computer contractors / consultants, is always cheaper than having your project developed and delivered by a software company. This, however, is far from the truth. There are, of course, many extremely expensive companies, but there are also plenty of reasonably priced ones to choose from who can be far more cost effective than employing your own computer staff for most small companies.

The first question you should probably be asking yourself is "Can I afford to employ sufficient staff to cover all the skills needed and keep them sufficiently busy to justify their salary?". Bearing in mind that you'll need people with the following skills if you want the best possible result from your project:


Requirements Analysis

You know what you need (or at least you THINK you do!), but how do you articulate that to a developer so that they understand exactly what you need? Does your developer have the skills to "read between the lines" or probe deeper where things may be far less obvious than they might seem?

There is a definite skill in the ability to talk through a potential project, identify simple ways to implement what may appear to be quite complex requirements. Done properly you will find that this stage of the project will save both time and money because your developer will know exactly what needs to be done and won't end up implementing something else because the requirements were not sufficiently clear.


System Design

Having prepared your detailed requirements, the next stage is to architect how the application will be built. Many experienced and skilled developers who are more than capable of writing complex code efficiently do not have the experience to architect a whole system. Think about houses...would you expect a skilled bricklayer to be able to design the house? Building computer applications is just the same! Whilst a very small application might need very little design and you might be able to muddle through without any real architecture, anything more than the most basic application will do.

You also need to think about the future. How will your application grow? Is it better to do the minimum now and replace it later if the initial application is a success, or should be wake a little more time now to ensure that the application can be extended without requiring any rewrite?


Project Management

How long will your project take? What happens if your developer is ill? How does his schedule fit in with that of your own or your client's? How long does it take to write 1000 lines of code or test the User Interface or document it so that another developer can extend it later on?

If your project is large enough to need more than one developer how are you going to plan so that you make the most efficient use of your employees / contract staff? Even a short time not working will quickly push the costs of your project up.

Do you have someone who is experienced at project management or will you need to employ someone? Make no mistake, for a reasonably complex project, this is a full-time role!


Development

Your project will almost certainly have several parts to it. Probably a nice pretty User Interface. Do you have someone who is experienced at designing such things, so that not only will they look pretty, but will easy and intuitive to use as well as accessible to less abled users? Do you have a Graphic Designer or will you need someone with those skills too?

A User Interface is not all about graphics though, there is the interaction with the user. That means code, probably JavaScript, these days, almost certainly some common JS libraries such as jQuery,  Google Maps, Moo Tools, AJAX, JS Charts. The list is endless!

There will probably be a "back end" or "server side" application. Maybe written in .Net, Java, PHP, ColdFusion, Ruby or some other language. What about database design? A well designed and optimised database can make or break a web application. Most developers can create a database, add a few tables and indexes and write queries. But very few know how to get the very best performance. With factors such as which database, which table encoding type, what indexing, the order of criteria in a query all having significant impact upon performance it's no wonder the big boys employ dedicated database developers!

So, are you going to choose a "Jack of all trades" developer or an expert UI developer who's not so great at the server side work, or visa versa? Or can you afford enough developers to cover all the skills you will need?
 

Testing

Testing is a completely different skill to development. And then there is the one golden rule, the developer must never be the person who tests the code! Not so easy to get around if you can only afford one person...

You need to ask yourself, can you afford to deploy buggy code and let your customer find the faults? And when they do, will you still have the developer to fix them if they are only employed on a temporary basis? Of course, it's impossible to eradicate EVERY bug in an application, but good testing, with a detailed test plan, automated test tools etc. can drastically reduce the number of bugs that might make it to production and be seen by your customers.

Perhaps the real question should be, can you afford NOT to employ a dedicated tester?
 

Documentation

This is the stage that nearly always gets missed out and ends up costing you dearly. One day, your developer will leave. Even if they are a permanent employee it'll happen. So you need to ensure your projects are sufficiently documented (and that documentation kept up-to-date) so that a new developer can use it to understand the system before making changes. Again, good documentation is a skill that not all developers have. You need to ensure you have someone who can do a good job of this if your developer is not so capable in this area.
 

Support, Maintenance & Bug Fixing

If you employ a temporary developer will they be available for ongoing support and bug fixes? If there is enough to keep them busy full-time (and you're happy with that!) then, of course, they will be. But what if you're looking at only a few hours a week spread over several months? Is your developer going to sit around waiting for that work, or quickly take another full-time role and be unavailable for those updates?

 

So what should you do?

Unless your company will be doing regular software development and can afford to build a team with skilled staff covering all the aspects of software development you have a few choices:
 

  1. Compromise and pick a contractor with a range of skills who can hopefully do a decent job. Bear in mind that if your developer really is skilled in many areas then they will be expensive and you'll be paying more than necessary for some of the stages of development. Most contractors are paid by the hour, so ask yourself whether it's in their interest to complete your project on time, or let it over run a few weeks so that they earn more?
     
  2. Employ several staff. The problem you will have is managing their time so that they are employed only for the time needed. You'll also have to manage handover between, for example, the system architect and the developer, or the developer and tester. You need to consider what will happen if you tester turns up to start work on a fixed contract and your development is not ready because your developer is taking longer than planned, or has just had a week off with flu. You might end up with them being paid to do nothing for a week, then not being finished when their contract expires and not being available to carry on.
     
  3. Employ the services of a software development company. Since they will be working on many projects, they can afford to maintain staff skilled in all the necessary areas for your project. So you can be certain you have people with the right skills working on your project at each stage of the process.


Usually, a software company will work on a fixed prices basis (after the requirements analysis stage - you can only fix a price when you know what you will be developing...), maybe even with penalties if they deliver late. At very least, if your project over runs, it does not cost you more like it would if you're employing people yourself. You'll pay for proven results, not simply by the hour. In the event your contractor fails to complete your project they still walk away with everything they have earned up to that point. If your software development company can't complete then you don't pay anything.

After the project is completed, that company will still be there. If you have a problem that needs fixing, or you want an enhancement, the team that built your application will still be available to do that.

tune in

Sign up to the Hazardous Frog newsletter (use the form on the right), follow our BLOG or subscribe to our Blog RSS feed to keep up on all our latest developments and receive hints and tips that we come across in our work.

gearbox

This website is powered by gearbox CMS

Newsletter signup

Sign up to the Hazardous Frog newsletter and get all the latest on what's going on at hazardous Frog.