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, most VC-backed startups are pushed by the investors to build their own team thus keeping the know-how inside and also creating more value by having people on their payroll. But since the IT industry (when it comes to developing applications) is growing rapidly, it is not easy to hire people on the go - usually the process takes time. There is also another case - a fresh company that got their investment and needs to build something fast - this is the situation where waiting for the recruitment process to work is not the luxury they can have.
No matter the reason, I assume you are facing the challenge of outsourcing your python development. This article will guide you through the main challenges and will also point out the most important aspects whenever hiring an external company to take care of your product.
Ask your selves some big questions
Before you approach any agency you have to ask yourself some basic questions. The order of those questions is accidental.
What is your current team composition
This is pretty obvious. You need to tell the company what your current composition is. Do you already have some engineers on board? If yes - will the new python engineering team (external one) work alongside your current employees or they will 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 people-level.
What type of tasks you want to delegate
Another simple, yet important issue. Will the new team take care of the maintenance or will they work strictly on new features? Or maybe it is both? This heavily will impact the type of company you're looking for and the portfolio items you will be seeking in their experience.
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 organisational 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 need to be sure that the company will understand and fit 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 actually spend on external development.
What are your values
This one is not so obvious, but I'd strongly recommend figuring out which of your §values may be applicable to external cooperation / partnership. Once you will know that it would be easier to choose from the vast amount of companies. And if you will be able to find a match your cooperation would be so much easier.
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 just keep the size as it is.
What are your previous experiences with external companies
Pretty important question - if you have previous experiences you should think about 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 here.
What is your exact tech-stack and do you have any particular standards you'd like the team to follow.
You should be able to write down what is your expected python tech-stack, but also try to figure out if you have any particular coding standards that you would like for the new company to follow. Be it spaces over tabs or specific choice of tools/frameworks - it is all crucial for this cooperation to work.
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 website which lists companies from given tech-stacks and allows their clients to give them reviews. You should look at both rating and 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 be beneficial to 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 amount of companies you will talk to. I know people that tried to talk to 50 companies - this simply doesn't make much sense. I'd go for sending an inquiry to around 10-15 companies and based on the answers choose a maximum 3-5 potential partners.
As to writing an inquiry - try to be specific and honest. This will boost up the chance of finding the right fit. Write your tech-stack, expectations, required portfolio and expected cooperation time-frame. What is also really important - 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 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 it is unimaginable to work with a company that doesn't know much about your particular business field.
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. During this meeting you should definitely see if the potential partner understands your business. In the current development approach (I've written about it extensively in an article about cloud-app development) 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 ok then it is time to talk specifics - based on your description of product and business/tech requirements the company should be able to present their 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 you project team-wise.
Also remember - now is the perfect time to ask difficult questions - if you have any bad experiences before or doubts - please, speak freely about them. When finding a company to work with you have to 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 am usually a fan of keeping things rather simple, but I know every business works differently. I'd ask for a draft from your new potential partner and 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 there are 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 required trust, which is the essence of 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 definitely 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.
If you want to scale up your team it is usually easier to do it 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).
You do not really need to care about team happiness/engagement. That's usually the job of an agency and one of the reasons for hiring one. A good company will take care of their employees making sure that when they work for you they are well motivated and productive. They also should make sure that their team-members are growing their knowledge to maintain the highest standards. Again - that's a huge problem out of your hands.
Rotations / 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 agency it is different. Whenever they feel this way they can simply change the project, without leaving the company. For you as a client it is very important as the knowledge about your product/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 control the budget. You also usually pay only for the work of an engineer, so the other activities are paid 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. I am just showing you that hiring an external team is so much more than it seems, hence even though you're paying a bit more than you should get value that is worth a lot of dollars as well:)
If you would like to learn more about hiring a great python developer team, contact us.
If you need additional information about hiring developers, check our other articles from the Hiring Developers series: