Most companies at some point in their product's life cycle will face a similar issue - how to grow their engineering team quickly and without compromising quality. Naturally, the investors push most VC-backed startups to build their own teams, thus keeping the know-how inside and creating more value by having people on their payroll.
But since the IT industry (when it comes to developing applications) is snowballing, it takes work to hire people on the go - usually, the process requires a lot of time. In certain situations, such as when a new company has secured funding and needs to deliver results quickly, waiting for the recruitment process to unfold is a luxury they cannot afford.
In such cases, Python outsourcing can prove to be an attractive option for CTOs and technical managers looking to take advantage of the benefits of this popular programming language without incurring the cost of building an in-house team.
This article will guide you through the main challenges and highlight the most important aspects when hiring an external company to take care of your product.
Before you approach any agency…
ask yourself the following questions:
- What is your current team composition?
This one is pretty obvious. You need to tell the company what your current arrangement is. Do you already have some engineers on board? If yes - will the new,external Python engineering team work alongside your current employees, or will they be delegated to other tasks?
If they are indeed going to cooperate closely, then I'd strongly suggest that you include your choice of team members in the process - you need to make sure that this cooperation will work smoothly on the people level.
- What type of tasks do you want to delegate?
Another simple yet essential issue. Will the new team handle the maintenance or work strictly on new features? Or maybe it is both?
This will heavily impact the type of company you're looking for and the portfolio items you seek in their experience. Answering this question beforehand will ensure that you choose the right agency, set clear expectations, optimize your outsourcing strategy, and manage costs effectively.
- What is your preferred project management approach?
Do you have any particular project management framework you work with? Be it SCRUM/Kanban/Waterfall. You should know how the new team will fit into the organizational chart. Will you also hire a PM together with the engineers? That may be a great idea, especially if you want to delegate some greenfield-like parts of the system.
Whatever you do, you must ensure the company understands and fits into your work guidelines.
- What is your budget?
More than obvious, but you'd be surprised how many companies have limited ideas of what they can spend on external development.
Having a clear budget in mind can help you to prioritize tasks and determine which ones are essential for outsourcing versus those that can be handled in-house. This can help you to optimize your outsourcing strategy and ensure that you are getting the most value for your money.
- What are your values?
This is not obvious, but I'd strongly recommend determining which of your values may apply to external cooperation and partnership. Once you know that it would be easier to choose from many companies available on the market.
Finding a match with your company's values is vital if you want your cooperation to go smoothly. Good cultural fit, consistency, reputation, ethical considerations, and a possibility of a long-term partnership - are the factors you should consider.
- How long should the cooperation last?
I don't think I need to explain. But you need to know - what's the expected timeframe of this cooperation. Additionally, do you expect to grow this external team or keep the size?
Knowing how long the cooperation should last is important to plan your budget, resource planning, deliverables and timelines, contract negotiation, and scalability effectively.
- What are your previous experiences with external companies?
Pretty important question - if you have previous experiences, you should consider what went wrong and what worked well. Thanks to that, you will know what to avoid and what to look for.
Learning from past experiences is very important. As you know it will help you to avoid mistakes, improve decision-making, adapt to change, build resilience, and achieve continuous improvement.
- What is your tech stack, and do you have any particular standards you'd like the team to follow?
You should be able to write down your expected tech stack, but also try to figure out if you have any particular coding standards you would like the new company to follow. Be it spaces over tabs or a specific choice of tools and frameworks.
If you know that you’ll find an outsourcing agency with the necessary technical expertise, ensuring standardization, compatibility, collaboration, and maintenance and support for your technology.
How to choose the right company?
Once you have answered those (and probably many more) questions, you can start looking for your potential partners. The first place to look for can be clutch.co. This website lists companies from given tech stacks and allows their clients to provide them with reviews.
You should look at both rating and the number of reviews. This will give you an overall first impression of what it is like to work with a given company.
Part of a review from one of our clients on Clutch.co:
"I made the architectural decision to build the project in Python, so I looked for software houses in the area. I first focused on Poland, mainly Warsaw, since we're also based there, and we figured out that being in the same geographical location would benefit the relationship.
Our requirements weren't formally written and mainly consisted of brainstorming sessions, which we did in person. I looked on Clutch and shortlisted a few potential companies. We interviewed three of them and chose Sunscrapers based on their personal feeling and connection."
I'd also strongly suggest limiting the number of companies you will talk to. I know people who tried talking to 50 companies - this simply doesn't make much sense. Based on the answers, I'd send an inquiry to around 10-15 companies and choose a maximum of 3-5 potential partners.
As to writing an inquiry - try to be specific and honest. This will boost the chance of finding the right fit. Write your tech stack, expectations, required portfolio, and expected cooperation time frame. What is also really important - is don't wait till the last minute to start looking. The sales process usually takes around 2-4 weeks minimum, and you also have to remember that good companies may not have the availability of their team right away. So there is a high chance that you may need to wait or start with a smaller team - which is ok, given it is based on honest communication.
Making a shortlist (in my opinion) should be based on tech stack, experience, and project management/workflow fit. Experience in your particular field may be important if it is a niche. In some specific cases, working with a company that doesn't know much about your business field is unimaginable.
Speaking of business - once you have a shortlist, you will probably talk to the companies on-site (it is possible, especially if you choose companies from one region) or through video call. You should see if the potential partner understands your business during this meeting. In the current development approach, understanding the business is crucial, as we're working mostly on business goals. Once you see if they do, you can ask about references.
If so far everything seems fine, then it is time to talk specifics - based on your description of the product and business/tech requirements, the company should be able to present its suggested team composition and project approach. I am not a huge fan of doing tech interviews with the team members, as I assume that you are talking to a company for a reason - you should be able to trust them with their skills and their people. But it is good to see how they would approach your project team-wise.
Also, remember - now is the perfect time to ask difficult questions - if you have any bad experiences or doubts, please speak freely about them. When finding a company to work with, you must establish trust that would work both ways. Ideally, you should be able to find a partner, not just an external supplier. Otherwise, your results will be rather poor (in my opinion).
The last step is the agreement - I enjoy keeping things simple, but I know every business works differently. I'd ask for a draft from your new potential partner, see what they propose, and then work on that.
Once everything is signed, the actual work will begin. What is important at this point is frequent and honest communication. Especially at the beginning, I'd strongly suggest having a short discussion at least once a week (outside of regular project-related meetings). You have to talk about your doubts or problems (if any) as soon as they arise. Waiting will not solve anything, and especially at the beginning, a lot can be done to make sure that the cooperation will go smoothly in the future. This also will build the required trust, which is the essence of a good partnership.
What are the values of bringing external teams to the project?
Once we have gathered our requirements, made a shortlist, and selected a company, we can look at the last important aspect - benefits that derive from working with an external team.
You have to remember that if you find a company that values quality, they spend a lot of time on perfecting it. Activities outside of the project, open source, knowledge sharing, etc. Usually, they should have the whole culture built around it - so you don't have to. You can simply benefit from it.
- Team growth
If you want to scale up your team, it is usually easier to do when you work with an external company. They usually may have some people available at hand - worst case scenario - they can make a hire pretty quickly, as they are more experienced at it than many product companies (especially young ones).
A good company will take care of its employees, making sure that when they work for you, they are well-motivated and productive. They also should ensure that their team members are growing their knowledge to maintain the highest standards. Again - that's a huge problem out of your hands.
- Rotations and substitutions
Every person involved with engineers in their everyday work knows that sooner or later, people get bored with what they do. Or they simply feel they are not growing within the company. But with an agency, it is different. They are exposed to all sorts of different industries and can work on a variety of projects. Besides that, agencies typically operate in a more collaborative environment than traditional companies, which can help foster creativity and encourage cross-functional learning. For you as a client, it is vital as the knowledge about your product and procedures stays within one company, and onboarding of new members takes just so less time.
- Value for controlled money
Last but not least - money. With the agency, it is very easy to manage the budget. You also usually pay only for the work of an engineer, so the other activities are paid for by the agency - without your knowledge. It is just simple, easy, and predictable.
To summarise, I'll just leave you with one thought.
Whether to use an external agency should always be an informed business decision.
Of course, every agency and company is different, and the above points may not apply universally. However, I want to show you that hiring an external team is much more than it seems.
Besides, hiring an external team can be one of the best available options on the market. To name a few benefits: * access to specialized skills, cost savings, flexibility & scalability, faster time to market,* and reduced risk.
If you would like to learn more about hiring a great Python development team, contact us.
At Sunscrapers, we always look for ways to provide you with valuable information and insights. Our company’s blog is a great resource for that.
Take time to browse through the posts from the Hiring Developers series: