One of the interesting developments in recent years has been the potential to find freelance contractors and hire them for your needs – whether it is using an Uber driver for a taxi, TaskRabbit for small odd jobs you might need help with, or Handy to help find a cleaner. The so-called on-demand economy (or “uberization of work”) is credited with providing much needed services, while at the same time helping individuals earn additional income, and having the freedom to do other jobs or prioritize other parts of their lives.
In software development we are seeing a similar dynamic play out. A quick search brings up a number of emerging companies which offer organizations the possibility to hire freelance software developers.
At first glance this appears to be an attractive offer. In an environment where organizations are struggling to find the talented individuals they so desperately need, why not look to freelancers who you can hire from any corner of the globe? In this blog I want to examine some of the challenges organizations will face if they decide to take this approach.
Am I writing from a biased perspective? Clearly as the President of Belatrix, the answer is yes. But I believe the following is a clear, rational analysis and argument for why the on-demand economy is not the solution for the challenges in software development. It is also a perspective borne out of conversations with the CTOs and CIOs that I speak to everyday. Here goes:
- Teams, not individuals, ship high quality code quickly. To ship code quickly, means you need an experienced team that is used to working together. In order to keep up with the pace of innovation and new product launches, you need a team working closely together. It’s a brave executive who plans to bring together a mix of contractors with no cultural alignment, no consistent processes, and no long-term interest in you, your company, or your product.
- Software products are becoming more complex, not less. How you deal with this increased complexity, will determine how you meet the digital challenges of 2016. The knowledge and experience that your team develops when creating your software is critical – it´s why one of the biggest concerns when working with a service provider is the rate of attrition some companies experience. Which leads onto my next point…
- …Attrition is a fact of life – knowledge transfer will be your lifeline. Yes, there are steps you can take to lower attrition, but people do leave. Do you have the processes in place to mitigate the impact of attrition? Do you have individuals waiting in the wings who can be brought rapidly up to speed on the state of your product? Do you have the processes in place to foster this knowledge transfer between individuals on your team?
- And remember, software engineering is not the IT outsourcing of yesteryear. It is not about implementing a package software solution to take care of an internal company need. This is about creating the software product, or the mobile application, that your customers will use to engage with your company. A poor customer experience with your software, translates to one less customer. And for good measure, they’ll also skin your app alive in the app stores, and tell their Facebook friends what a useless company you are.
Hiring top individuals is what all companies want. But it is organizations that create the structure to ensure your best individuals work well together in a team (or distributed team). In the context of software development, hiring the best loose programmers is no guarantee that they will be able to work effectively with others on a large code base. There is a fundamental difference between solving a coding challenge for a freelancing portal, and building a real product which will have market success.
Just to give an example of this, one of our insurance customers came to us looking for help to bring new technologies to their organization. The team was distributed with people based in the USA, Argentina, and India. Distributed teams need processes (such as for planning and tracking), communication, and organization to ensure effectiveness. For example, we made sure the individuals had the right personality traits for working in a distributed Agile development team – strong communicators, empathetic, and action-orientated. Meanwhile, having a consistent team in place means we can measure the productivity of the team (or the team’s velocity). With Agile development, we can then look for example to sprint reviews and code reviews to consistently review and improve team performance.
But I’m interested in the perspective of others. Have you had success or challenges using freelancers in your software development activities?
Note: Credit needs to go to Caroline Fairchild (@CFair1), who provided the inspiration for this post with her article about the #NewEconomy, as well as a powerful argument against the broader uberization of work.
Find out more about software development and what makes Belatrix different, at www.belatrixsf.com