Whilst building an internal team of developers is certainly not a fast activity, a proper team might churn out productive code way faster than a collection of agency developers.
The saying goes that if one woman takes nine months to breed a baby, nine women can do the job in one month.
What is wrong in reproduction, is often heralded as the solution in software development.
I am the Founder & CEO of Yonder, a B2B SaaS company, so I know very well that software projects can get delayed. The reasons for this are manifold, but this article isn’t about those reasons.
However, in most cases, development delays result in impatient customers, and in mounting pressure to get the job done as quickly as possible.
What do software entrepreneurs do in such a situation?
Usually, they try to speed up the delivery timeline by adding more development resources — they forget that good solutions take time. Because good software developers are hard to find and need time to get familiar with your product and code base, the choice is often to contact one of the myriad software development agencies available all over the world.
We did this before, with mixed results. Let’s look into two specific examples from our experience with rewriting our old React iOS app into an all-new Swift iOS app.
First Attempt: Agency No 1
To bridge the gap before our internal Swifties were available, we contracted a development agency to kick-start the project.
In the beginning, everything seemed to be fine. High-res screens were produced, and the first TestFlight app was available quite quickly.
Then came the news that one of the agencies’ developers was pregnant, and would go on maternity leave in September. Nothing wrong with that, ladies usually get enough warning time to sort out a transition to a new colleague.
Came September, and came more news. I was told that another one of the agencies’ developers would go on paternity leave next week. It turned out the guy was the father of the to-be-born child of that pregnant developer. The warning time the guy had is known but to God.
With two of four agency developers gone, it became very obvious that we couldn’t keep the timeline of going live with the app in November. And while the two new parents were away, we learned that the remaining two developers weren’t employed by that agency, but contracted through Upwork. They too would leave soon, as they had other assignments with other clients.
This situation led us to phase out the said development agency as quickly as we could. Nevertheless, as our internal Swifties had only just joined, we needed more resources to try to keep the delay to a minimum.
Second Attempt: Agency No 2
So we did it again. We contracted another development agency, but this time partnering with a specialized agency to take over tasks in a running project.
We recruited three great developers, who were very communicative, working full-time, and very knowledgeable in Swift. They took over the open tasks within days and closely interacted with our internal Swifties.
The project speed increased significantly, and within 8 weeks the end of the project looked nigh.
Because our internal Swifties were now up to speed, and external developers are very costly, we faded out this agency, too.
Coding Standards
Although the developers of that second agency did a great job, soon after they were left, discussions started about refactorings. I asked, how come we need to refactor a brand-new app?
It turned out that each of those developers worked on their tasks in isolation — although they talked often about business logic and met for a daily meeting each day, the code style and technologies used varied between those developers based on their experience and preferences.
Compare that to your internal team of developers, with regular team meetings, shared coding practices, and pair programming.
Whilst building an internal team of developers is certainly not a fast activity, a proper team might churn out productive code way faster than a collection of agency developers.
It’s all about the team, also when you’re short on time.



