Software Development: Hiring Freelancers or a Team?

Whether your enterprise is going through a digital transformation or you want to create a cutting-edge app that sends your e-commerce store to the next level, at some stage you are going to need to hire software development professionals.

Over the last 20 years or so there’s only one certain thing — software creation has become ever more complicated, relying on highly skilled and experienced individuals to deliver new products and upgrades to existing software.

Anything above a mid-size software development project can rarely be done by one person. It usually needs a team, working together, tackling challenges and bringing your new software in on time.

The Challenges of Software Development

Few software projects are small nowadays. The amount of coding, design, planning and specialist input even for a moderate development can seem daunting.

We are pushing the boundaries increasingly and taking great leaps forward, whether it’s in areas such as virtual reality, business development software or AI.

Some of the challenges developers face include:

  • Rapid changes in technology.
  • Increasing customer demands.
  • Conflicts between different types of software.
  • Reduced time to market and tight deadlines.
  • Growing costs of building an in-house team.

Hiring Freelancers Vs a Development Team: The Pros and Cons

There are talented freelancers out there and they usually work out less expensive than a company software development team. For small projects, they can be quite useful, especially if you are working on a tight budget. Having said that, their scope is limited.

You could bring several freelancers together if the project is bigger and you require the input of different specialities. The trouble is that those relationships may not entirely gel. Communication can be difficult, particularly if the freelancers are in different locations. If they are not used to working as part of a team, it can be doubly difficult.

An experienced software design team that has worked on several projects together understand each other. They will probably have had additional training in aspects such as scrum methodology which can greatly improve productivity and they will understand how to ensure you get a fully operational product to market on time and within your budget as a collective.

A freelancer may not be around forever, either. One of the key factors in software development is who handles updates after the initial product goes to market. A company with a dedicated development team will normally have a comprehensive service level agreement which includes updates to the software on an ongoing basis.

The different specialities required even for a moderately sized software development project can mean recruitment is extremely challenging. A ready-made team working for a software company should already have the project leader, the experienced developers and designers, the quality assurance engineer and the UX specialist that give you the best chance of success.

A software team will already have their communication strategy nailed down, will trust each other’s ability and know that they can work together well. Freelance software specialists may find it difficult to get on with one another especially if there is that sense that someone is lacking in skills or knowledge.

They have brought into the culture and the focus of their company and its structure and requirements. More importantly, they are conditioned to delivering to tight deadlines.

Summarizing:

Look for a freelancer if you need to create a simple product, you have a very limited budget or you know that you can base your software product on out-of-box solutions (think of Wordpress as a blogging platform or Shopify for a small sized e-commerce platform).

If your product needs to be done with outstanding quality or for more than one platform or it’s a SaaS (Software as a Service) product, you should definitely look to a dedicated software development team.

Scrum Methodology and Team Performance

Key to the success of most software development projects nowadays is an agile approach. There are different ways to achieve this in any business setting but the most popular for software projects is scrum methodology.

Building a team that uses this approach or something similar has enormous benefits but is something you don’t often get with freelancers, as we will see a little later.

1. Front End vs Back End Development

When putting together a team for software development, there are generally two types of engineer to consider.

Front end or client-side developers are focused on what the user will see. The most important and popular coding languages related to the front end are HTML, CSS and JavaScript. Developers make sure the elements users see when they open an app or program render in a coherent and usable way. The team members who handle this are working closely with the UX/UI designers and web designers.

Back end is all the stuff that we don’t see in a piece of software. It enables any data or systems ensuring they are efficiently and quickly delivered through web servers such as Apache and Database Management Systems. Developers use languages including Java, Ruby, Python, PHP, and .Net.

2. The Importance of Team Size

Just like Goldilocks, finding the perfect balance when it comes to team size is essential. Too small and your developers will be stressed out and overworked. Too large and effective communication and sharing will become an issue.

Certain aspects will influence this: The size of the project, the complexity and budget, the deadline and the number of resources you have available to you.

If you are an advocate of scrum methodology, the number of people in your team should be no less than 3 and no more than 9. The sweet spot seems to be 7 but this does depend on the circumstances above.

3. Team Composition

This is also going to depend on the type of project, the expertise you require and its scope. If you are setting up your team or hiring from another company, the makeup may have the following assets:

  • Business analyst: This is someone without a technical software background but who can translate the project into actual value. That includes whether you are developing something like a stand-alone app or creating an in-house software program to improve efficiency.
  • Product owner: This is the person who makes all the final decisions and signs off on the software. They will understand all aspects of the project, hopefully, a flexible and creative person who is used to complex undertakings such as this.
  • Software architect: This is someone who can bring all the technical work together to successful completion and takes responsibility for the design while it is in progress. They normally have hybrid skills and are great communicators.
  • Software developer: These are the person or persons with the technical skills to build the software from scratch or create useful and meaningful updates for existing projects. They can be specialists in particular areas such as web or mobile development as desktop and custom development.
  • UX/UI design specialist: For any software product nowadays, user experience is a critical aspect of success. The UX/UI specialist makes the changes that ensure your product is fit for purpose and doesn’t lead to user frustration or low engagement when launched. They also create the look and feel of your software, from branding and graphic design through to the choice of menus, buttons and even typeface.
  • The quality assurance (QA engineer) specialist: The perfectionists of the project, their job is ensuring that your software meets all the requirements expected of it. This is especially important if you operate in an industry where there are key legal specifications that need to be met.

Adopting Scrum Methodology

The makeup of a successful software development team is one thing. The methodology they use (and know how to use) is also essential. Scrum is by far the most popular approach. It breaks down a large undertaking into smaller chunks or ‘sprints’.

Here, the development team is overseen by a scrum master who is tasked with keeping everything on track but does not make design decisions. That’s left up to the development team who operate openly and transparently, working on specific areas of the software creation in sprints that are no more than a month long.

Project Manager vs Scrum Master

There is a difference here and it’s important when it comes to developing a really good software team. A project manager will generally have an overview of the work that needs to be done and will assign tasks to individuals. It’s their job to bring it all together.

A scrum master is more of a guide or facilitator. Their job is to ensure that the scrum methodology is followed but the actual decision making and development work is controlled by the development team themselves who take full responsibility.

Successful Teams Communicate Well

Software teams depend on constant and effective communication and getting this right is an essential aspect of development.

That’s why scrum methodology is so important. It breaks down the process of developing key software increments while maintaining openness — developers provide daily updates to their co-workers and plans are regularly updated so everyone is kept in the loop.

This avoids confusion and improves productivity. It also means that each project has more chance of coming in on time and within budget.

Creating the Right Environment

This is another area where freelancers can be found wanting when it comes to software development. Businesses will sometimes select individuals that work on different parts of the project but remotely. We have better online collaboration tools nowadays and they do make a difference, but they are no substitute for a team that is working closely together in a good environment.

The environment includes selecting the best operational methodology. It also means having the tools readily available to do the task and a location and culture that encourages, nurtures and improves communication and productivity.

Buy-in From Your Team

Finally, software development is challenging at the best of times and you need to have buy-in and a sense of ownership for the work that is being undertaken. You don’t always get that with freelancers, however good they are.

There must be a clear direction, a strong structure and a drive towards a common goal. Teams, even the best of them, can be fragile entities. Successful buy-in and a sense of ownership help to forge responsibility and drive individuals to meet their goals.

You get more with dedicated teams that are used to working with each other and have agile methodology in place.

Photo by Canva Studio from Pexels

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store