So you have decided to build a digital product – some type of software, maybe a mobile app, a web app, some sort of cloud solution. Your two main options are building a team in-house – within your own organization – or taking this matter to an external team which specializes in similar services. Or maybe there is a third way?

Let’s start by setting some context. Let’s assume you belong to one of the following groups:

  • You are a business owner/partner or different type of an entrepreneur
  • You are a board member, VP or a director in a medium or large company
  • You are a manager in a corporation

And at a certain point you notice that some aspect of how your organization works – maybe how you process handling the exchange of documents between employees, how sales proposals are prepared or how your employees report their work – is not optimal. It might not even be a strong conviction, but just a wild guess – there should be a better way to do these things! Maybe you even saw a better option in another company you know or have already worked for before.

Let’s assume for now that the idea you have is indeed reasonable – determining whether it truly is one is not always simple – you just know you want to have this idea brought to life using some form of software. Obviously, the first thing should be to do some research about the existing solutions – this will be covered in another article soon! But if you decide that nothing in the market is a good fit for you – or maybe in the long-term it may be much more expensive to use it – it might be a good idea to explore the world of custom software development. Either way, you need to consider two main options I mentioned in the preface.

Building a new team, or even a small department, might seem like a good solution. Of course, the first idea might be to ask the existing IT department to help with creating software, but you need to remember that IT specialists in big companies are usually more skilled in supporting the rest of the company, and not necessarily experts in software development. It’s a bit like asking a professional musician – a pianist, let’s say – to compose a tune. Not every pianist will be able to write a tune according to many sophisticated musical principles. A similar rule applies here – not every IT specialist, however competent in supporting their fellows in other departments, will be able to create complex software. And even if they are – they might be extremely busy, working with other requests in your company – we have seen it many times before. On the other hand, you can use another company which will help you design & develop a solution for your problem. I’ll discuss the benefits and drawbacks of both these approaches a bit later.

Certainly, you can also try to arrange somewhat of a hybrid approach. You can build a small team in-house and extend it with external resources/consultants, in order to still have some know-how within your company. 

Building an in-house team

Building your own in-house team makes sense if you are able to address two most important challenges:

  • How to lead the project technologically, i.e. choose the appropriate technologies, design the general concept of the solution and align it with the business needs
  • Who should develop the project

Both of these seemingly different challenges can be resolved by having an appropriate attitude to recruitment. Obviously, it’s not an easy task, especially in 2022. In the case of the project leader, they need to be able to lead the project from both technical and business points of view. Recruiting technical folks, especially programmers, is difficult right now, but to find a technical leader with proper business acumen – that’s challenging on a whole new level.

Nevertheless, it might be reasonable to hire your own team. Firstly, if a project you want to make is small, it is simply easier to find one or two people to do it. Also, the difficulty of creating a small project will probably be smaller since less people need to be coordinated and the technical challenge is usually not that large. Secondly, getting your own team – or at least having a few people in your company, in the case of hybrid approach – is good when you need to coordinate communication with many departments of your company. It is easier to get information if your own people can quickly discuss things in place. Last but not least, access to the internal resources might be limited due to various policies, especially in corporations. 

Contracting a software agency

The other main choice seems reasonable if you don’t qualify for the above conditions, which means that:

  • You need a bigger team,
  • You don’t have significant technical limitations, or
  • Your project is not very integrated with the rest of the company.

Choosing an external team is a feasible option because you have a much higher chance of getting people who already have worked with one another before. It’s basically like making a cake for the first time vs. knowing the recipe by heart. While you might succeed with making a cake even for the first time, many things may go wrong, but after a few times you usually master the recipe. Putting teams together is the bread and butter of software development companies.

Moreover, when you get a team from a software development agency, usually you are not 100% limited to the very folks who are designated to your project. Especially in the case of more difficult challenges, you can count on some other experienced team leaders and software architects, sometimes escalating things even to the principal engineers. For example, we in Makimo tend to engage in challenges if need be even at the board level – considering the management board in Makimo are experienced developers and engineers, with a lot of insight and ideas. Obviously, a similar approach is difficult to achieve when hiring your own team.

Continuity is one of the more controversial aspects, and many of you might say I should put it, as a benefit, in the “In-house” section, right? It is one of the beloved “it depends” situations, but it is definitely not a simple case for in-house teams, so I mention it here. Nowadays, people tend to change jobs more than previously, especially in large organizations. Not once, not twice have we been involved in cooperation with a client where we were working with many “generations” of employees – up to five consecutive different teams in one case – due to previous employees changing their jobs. In such situations, we – formally, an external company – become a valuable, long-term asset for the company, even more than some of the regular employees, as we are capable of assuring seamless transfer of know-how.

Finally, working with an external partner company removes typical problems out of your head – keeping up with hardware needs, benefits, training budgets, etc. It is all on the agency – and in the case of IT, it is not an easy task, as expectations of IT specialists are getting higher and higher each year.

Hybrid approach & summary

The hybrid approach can be really useful, we have used it with our clients many times in the past and it will certainly be discussed further in the future in a separate article, as there are many possible setups, in which projects can be delivered. To give you a good grasp, let’s name a few:

  • Technical leader in-house + external team – popular especially in startups that begin with a very small team as a whole, thus building larger development team could prove difficult
  • Separating competences across the companies – e.g. backend is done in-house (due to the data and infrastructure) while frontend and/or mobile is done with an external vendor
  • First prototype is built by an external company and further development is continued by an in-house team.

I hope that this short review will help you reach an honest, sensible decision, best suited for your needs. As you can see from this article, we don’t always think that one approach must be better than the other.

If you wish to have a straight, down-to-earth talk about what might be best for you…

Drop me a line!

CEO @ Makimo. I am an adapter, a connector, a link - I bring together business & IT by advising how to use & adapt software wisely to achieve real business benefits. Current Associate Professor & Former Dean of CS Studies at UEHS, Warsaw; Education & Public Advocacy Expert at SoDA & podcaster at Software z każdej strony.