There is a business rule that says:
“If you can do something cheaper and equally well, then do it cheaper. And if you can do something better… then you should do it better.”
And what if you can have both – a lower price and higher quality?
What is better: in-house or outsourcing software development?
Hiring in-house developers most often involves the need to incur additional costs – including recruitment, onboarding, equipment, tools, benefits, etc. There are also costs of verifying the competences of newly hired employees and losses resulting from turnover.
No wonder that more and more companies decide to use the services of external development companies. The services of software houses remove the responsibility of conducting the time-consuming process of recruitment, implementation and loyalization; as a consequence – they effectively reduce project costs and shorten the time needed for its implementation.
Saving time and money is not the only advantage of outsourcing. Below we will examine other aspects related to hiring an external team, both those that bring benefits and those that pose challenges.
5 advantages of outsourcing development services
Focusing on a key area of activity
If your company does not operate on the development services market, building an IT department from scratch may hinder or delay the development of the key area of your operations. We’re not talking about just financial resources – these can always be used in a better or worse way, but about your work and time. The necessity of parallel development of several aspects of the operations rarely works in favour of any of them. Sending programming work outside will allow you to maintain greater control over the key area of your business and better manage the strategic aspects of your business development.
By dividing the time between the key area of y our operations and building a new department from scratch, you will risk a situation in which neither one will be managed correctly. Recruiting and then organising the work of a team made up of a few or a dozen people is associated with considerable effort on the management’s part. However, employing additional managers is always associated with costs and a long-term recruitment process.
Management of outsourcing to an external company is simpler because the entire project implementation process is the responsibility of the contractor, and on the client’s side the project is coordinated by one (or several) designated person.
What’s more, such companies, operating in a very competitive market, strive to maximise the project implementation process. Their employees have great skills and experience in the implementation of such tasks. This allows them to solve current problems and anticipate future ones, which affects not only the duration of the project, but also its quality.
Greater flexibility than in-house development
Employing contractors and outsourcing to external companies increases the flexibility of business management. For example, you can take advantage of seasonal outsourcing, i.e. employ external companies and subcontractors only when you really need them, for example – to introduce cyclical updates in your store application. You can also outsource individual projects; an external software house will be happy to take care of such tasks for you, and after completing them you will not have to worry about finding other tasks for new employees.
Knowledge transfer between an external company and your business
One of the most important advantages of outsourcing is the partial transfer of knowledge between an external company and your business. This works both ways – just like your employees learn from the contractor’s employees, so they learn from you. You gain specialist knowledge on how to implement specific solutions and technologies, and the software house – knowledge of the specifics of the market in which you operate, and the products you offer. Both sides can use this knowledge in the future: you – in the next project, the software house – in the next cooperation.
In addition, soft skills related to the organisation and division of teamwork, internal and external communication, as well as organisational culture are also transferred, at least partially.
Another project perspective
We have the opportunity to verify your assumptions and get a different point of view of your project. Knowledge of a software house gathered from previous implementations can help to improve functionalities of your mobile or web app development, so in some aspects, there is no need for inventing the circle from a very beginning. There are solutions which already work for the specific type of business. Our experience has shown us that (for part of clients) it is good to start a project from the workshops and consulting session to get the maximum from the cooperation.
5 things you should know before cooperating with a software house
The person responsible for contacting the client on the software house side will most often be the project manager. It is a person responsible for project management, external contact (with the client) and internal contact (with a team of programmers). It’s best to think of the project manager as a kind of a translator – their job is to translate the language of the client’s needs into the working language of programmers. The project manager also supervises project work, monitors the schedule and deadlines, distributes tasks and verifies the progress of work.
It’s best to also appoint a person responsible for contact with the project manager on your side. Of course, there can be more than one such person. The most important thing, however, is to establish a hierarchy between them. This will allow you to avoid communication chaos, to streamline and improve the flow of information, as well as to avoid situations in which the software house’s project manager receives contradictory (or seemingly contradictory) orders from more than one person.
Effective project management of software development
No less important is the establishment of rules and channels of communication. In working with an outside team, the latter is particularly important. Communication can be implemented in a standard way, e.g. by phone or e-mail, but it is a good idea to use project management tools created for this purpose, such as for example Trello. These platforms enable efficient communication, as well as direct insight into the progress of work on the product.
The use of project management tools makes it possible to assign the work, present progress, provide feedback and oversee the process. It is particularly useful in the following situations:
- When you want to maintain direct control over the work of your external development team,
- When you also have an internal team and you want to support its work by employing an external team for a selected part of tasks,
- When you need to coordinate the timing of work of two or more external teams (e.g. a software house with a marketing agency).
The most commonly used project management tools include the following:
- Jira and Trello – popular tools for managing tasks within the project. Jira enables a wide customisation of the task view – for this reason it is most often used internally within the team. Trello, on the other hand, is the digital version of the Kanban board – which is why it is often used to communicate the progress of work to the client.
- Slack – is the most popular in-company communicator. In addition to direct contact, it enables file transfer and creation of information exchange groups. It is used both internally and for communication with clients.
- Skype – this is the most popular external communication tool. With more complex issues – those that require mutual consultation – project managers often use Skype for direct contact with clients.
- Bitbucket – a tool for tracking and implementing code changes, popular among programmers. It allows many people to work together on one program.
- Fabric a tool for managing application test versions and feedback received from testers.
More about the basics of good communication between the client and the software house can be found in our article The art of listening – the basis of good communication.
More about the role of project managers and their place in the software house – in the article: Who is Who in a Software House?
Agile in project management
Appropriate organisation of communication is important not only for the sake of cost and convenience. Much more often it turns out to be a necessity and results from the specifics of work on products of this type – especially on larger applications. Due to the level of complexity of these tasks, and sometimes the client’s expectations evolving along with the development of the program, agile methods are best suited for this. Scrum is one of the most popular of them.
Working using the Scrum method has many advantages:
- It allows for quick and easy pivoting, i.e. changing the initial assumptions in response to changing conditions and expectations as well as feedback from testers and early users (if you decide to make your product available to them on an early access, beta or MVP basis). This makes it possible to avoid a situation in which after many months of work on a product, it turns out to be completely unsuited to the needs of users. It also increases the certainty that it will be adapted to their preferences in terms of UI and UX.
- It accelerates work on the project and promotes creativity. Contrary to popular (erroneous) belief – the work of a programmer requires great creativity. This is especially important in larger teams, where teamwork and solving major problems together are important; some flexibility is not only recommended here, but simply necessary in order to carry out the project.
- It is a response to the needs of programmers. Working on software is rarely a linear process – from A to Z. Agile methods, including Scrum, were created in response to a specific need: the need to organise work on such projects, to control that work, and, what’s equally important, to report on it.
As a client of a software house, you should be prepared to work using agile methods, even if for some reason you are not their fan. Such preparation does not have to be, understandably, on an expert level; basic terminology and basic theoretical knowledge are enough. The Dictionary of IT Terms can help you with this. Moreover, some software houses (e.g. like ours) offer agile methodology workshops to show the flow of the process and responsibilities.
Experienced programmers know best what method will allow them to achieve their goals. If you have any doubts, it will be best to ask the project manager about the reasons why specific decisions were made. For the most part, their purpose is to speed up work on the project and… save you unplanned expenses in the future.
Product brief vs. functional specification
The use of agile methods does not mean, however, giving up on the traditional elements of this type of cooperation – i.e. the need to prepare a product brief and functional specification.
A functional specification is a document describing the functions and use of the product being created; a product brief is a document enabling the preparation of this specification. These documents, understandably, often evolve. It is very rare for a client to approach a software house with a ready product brief. Most often it is developed in cooperation with the project manager, who is well aware of what information developers will need, and which solutions should be recommended to the client. Most of the time, this process does not take long – the experience of the person managing the project allows them to quickly and efficiently guide the client through intricacies (often quite complicated) of programming issues. The functional specification is prepared simultaneously. Although in theory the specification is based on the brief, in practice both of these documents are often created in parallel.
More about product briefs and functional specifications (as well as their content) can be found in the guide with a free mobile app development specification What Information does a Software House Need to Price a Project?
Testing as one of the most important aspect of a software development
A software house can also take responsibility for testing the product it has created. This is foremost the responsibility of people working in the quality assurance position. They are professional testers of applications and programs, people with experience in testing this type of products, often with specialist knowledge on users’ preferred application architecture or issues related to UX and UI.
Then, if the client agrees, the product is made available for closed, open or semi-open tests (e.g. on a limited time or geographical basis). Conclusions from such tests make it possible to catch errors and modify functionality even before the product is placed on the market.
When outsourcing of mobile and web app development is the best solution?
Cooperation with a software house is more than just for people sensitive to the issue of alternative costs. It is also a convenience connected with the possibility of freeing up internal resources and focusing on your key activities. If that’s what you care about the most – this solution is definitely for you.
You can read more about the issues to take into account when choosing a software house in the article How to choose the right software house?