As a rapidly expanding service company, Netguru’s biggest challenge is to match the existing demand for its services with our in-house talent. It is nearly impossible to achieve a perfect balance in which the company has the same number of engineers and designers with a specific skill set that is needed for all our ongoing projects.
When there is an increase in demand for our services, we recruit more people. But onboarding takes time, so it’s impossible to have the people we need exactly when we need them. Moreover, we can experience the opposite problem: when demand falls, we might have people who don’t have any projects to work on.
This situation is very common for project-oriented companies such as Netguru. The industry term for it is “bench”. It is unhealthy for the company for many reasons:
To minimize the damage caused by an excessive bench, we were always monitoring it closely and looking for solutions to deal with it. We were constantly gathering internal data and analyzing it retrospectively to improve our bench predictions. We were also able to keep people on the bench busy: they were learning new skills, researching new technologies, as well as doing volunteer work by contributing to open-source software.
But that wasn’t enough. We needed to know if we’re lacking any kind of specialist that we might need soon. Missing certain developers (e.g. iOS or Android) may force us to hire external contractors, who are more expensive and do not always meet our standards, or even miss some business opportunities. We wanted to avoid that, so we set out to find a way to make more accurate predictions about the future.
The system which we had in place to attempt to predict the future size of the bench based on ongoing sales and currently running projects was very complex.
It generated five different numbers for each technology stack plus a few additional predictions. Since we have nine different stacks, it added up to 50 numbers that we needed to check almost daily. This was overwhelming for the engineering managers.
We decided to develop a new and improved prediction system. We wanted to make it both more reliable as well as easy to use for hiring managers and any non-technical employees who might need to access it.
First, the goal was to improve the accuracy of predicting the size of the bench that we would need to have in four weeks. Then, having gathered data, we decided to see if we could make predictions for up to eight weeks in advance.
The team needed to analyze the data and make sure they had sufficient information with which to build the model. Evaluation of such a system is also difficult, as accurate prediction of the bench size may lead to a decision to more aggressively pursue new clients or upsell the current ones, both of which can change the actual size of the bench. That’s why the accuracy of the predictions needs to be checked constantly.
The project resources were very limited. Only a few people from the Machine Learning team were available to work on the bench project as others were working for external clients.
It was important to integrate the data with Salesforce to present it in a way easily accessible for non-technical users. The team relied on Python for all of the Machine Learning modeling, which is a widely used and proven solution, as well as a newer framework called “streamlit” for presenting the frontend, eliminating the need for additional frontend developers. All of these solutions were put into a Google Cloud Platform Kubernetes cluster.
After only two weeks the team had a simple proof of concept to show to the stakeholders.
Afterwards, the team quickly added new features such as automating data updates, which until then had to be done manually. This not only relieved our coworkers from cumbersome work, but also provided additional value of backing up the data in a separate database. Now the models are adjusted and retained on a daily basis with new incoming data, which means continuous improvement without additional employee input.
So what did we achieve? After only two months of work by two machine learning engineers, Netguru owns a proprietary app that is hosted in the cloud and can be accessed by anyone with credentials via the web. It’s very user-friendly, presenting the data in a way that is easy to analyze by an average user. It provides just a single number: a precise estimate of the bench size. There is also an option of checking the bench size for each separate stack, allowing managers of each division to now quickly access those numbers and see the history of the bench size.