IT product development – scaling up
Grzegorz Papaj, 10 September 2019
I was motivated to write this article by the situation of our last clients who, despite stemming from various lines of business, have a lot in common. It is significant that our paths intersected just when their products had succeeded. After all, that’s how business works. Every success is followed by a number of new challenges.
Here are some aspects that those clients have in common:
- they are product companies offering a B2B IT product,
- they were founded by programmers who were the first coders in the company,
- they have developed excellent digital products which are being successfully implemented in client businesses in Poland,
- they carry on successful expansion to foreign markets,
- they are medium-sized companies, with IT departments, contributing to less than half of their team (the rest consists of business and administration departments),
- they have great programming teams who know the product inside out,
- their own IT resources are not enough to fully meet the new needs arising from scaling, new markets etc.
The very success of their products puts them in difficult situation. Someone could say “these are the problems we wish we had”. However, it is necessary to know that the management of a dynamically growing company faces a great deal of challenges. Paradoxically, business success can be a cause of huge problems if infrastructure and production can’t keep up. Besides the need to improve production efficiency, departments like administration, human resources or management, all have to bear new burdens. The company has to grow, recruit and rent larger office space. Meanwhile, someone still has to plan and conduct marketing and sales actions, make key decisions etc. The management board must transfer the processes which were, until now, carried out personally (or at least closely supervised) to someone else. In the best case scenario, delegate them to professionals. But searching for a professional takes time and management attention. Thus, creating a vicious cycle.
Using a militaristic metaphor, the CEO becomes a general, fighting on the front of new business challenges, and discovers big problems at army’s rear lines. Quarter-mastering signals that the logistics efficiency is decreasing, and it is becoming increasingly difficult to call for reinforcements. Besides this, new recruits not only have never smelled the gunpowder, but are also becoming younger, less skillful and come not knowing the realities of the battlefield. The situation is not tragic yet, but an experienced general knows that he must take action now to prevent a tragedy. There are plenty of options, including withholding the offensive. But this would mean failure. Instead, it is better to use the help of an allied power. This is where we enter. Our landing operation provides fresh blood and raises the troops morale. Reinforcements arrive on the front, bringing not only vigorous and excellently trained privates but also officers and commandos. What is more, our staff officer is ready to support the general with his experience.
Maybe, I went a little overboard with this militaristic analogy. But it essentially reflects the situation described in this article. The situation of a software house which is gradually (or rapidly) transitioning from a start-up to a mature company. Only until recently, had the management supervised every detail of the product, employed every new programmer, read every line of the code. But now it must focus on strategic business efforts. Even at the cost of executives forcing themselves to ignore details of micro-management level processes. They should be ready to accept the costs of employing someone to delegate day-to-day tasks to, someone to take off their shoulders, not only the burden of recruitment, but also of the introducing new members to the team, managing new employees, developing or debugging the product. In this situation, the best solution is the good old programming outsourcing. But only as long as it is well handled.
This is the role we play the best. Every case is a separate challenge each with its own character. But they all have something in common. In each case we must join an existing project. Not only the technical level but also at the organizational and even (or rather “especially”) business level. The whole process includes a couple of steps, which can be summarized into:
- recognizing current situation and business goals of the client,
- getting to know the project infrastructure (code repositories, project management tools),
- analyzing the system architecture,
- gaining a qualitative insight into the codebase, configuration files etc.
In this particular order!
At the operational level we usually start the project in the same way – we ask to be assigned a relatively independent task (new functionality, some spare module etc.). When we face the assigned task we go through all the steps mentioned above. Then, we ask for another task, and another, and another, until finally the client’s team stops to see us as just a supplier and we become a full-fledged business partner. After all, nothing builds a bond like a brotherhood in arms.
Thanks to this, we solve a very specific problem. It took us a while before we realized that we do not only ensure high quality programmers and guarantee a predictable work pace in the project. Above all we are taking a huge administration problem from the client. Thanks to that, the management can commit its valuable time to business development, without worrying about the issues of recruitment, programming teams management and quality assurance. That’s just the way it is sometimes, it’s hard to realize what is the greatest strength of your own business.
If you want to know more about how we work and how we can help you in your situation, please contact us, e.g. via contact form below. We will contact you shortly.