This is one of the common questions in senior position interviews and sometimes can be heard for other positions as well. I must admit, the very first time i heard the question back when i was a junior, all i said was, add more servers and improve code quality.
While this may sound still true to some, with my recent experiences and countless times of getting heard of the question, i spend some time to find a proper answer for myself.
Is scalability only about the technology? This is the first question when i think about how we should scale. The thing is, operating a company, running a business, a team whatever you call it, comes back to scaling your economy. In any given economy, you have supply and a corresponding demand. If demand rises and there is not enough supply, then the prices increase and in some basic terms there is inflation etc. In vice versa, your supplies are not worthy, so you should do some research for better utilization and produce better products to find a good demand.
All in all, it is a game. It is all about balancing your resources for the requested output. Is it easy? Of course not. Because we are only aware of the supply which is our team capacity, our budget, our skill set. Are we aware of the demand on the other hand? Well, somewhat. First of all, we have business demands. Secondly, we have technical improvements. Third, which is the most unknown, market conditions.
If you are at a well established company, market conditions may not affect you much. But for startups and for some companies that operate in high regulated environments, one simple change could mean tons of work.
In order to scale, the first and foremost important thing is a good cooperation between tech and business.
Yeah, we all speak about agile, we all say prioritization matters etc. etc., but this is not cooperation. By cooperation, what i mean is knowing what each other is doing and how it is doing, especially why is it being done.
When business decides to do something, it should be aware of the consequences on the current product. On the other hand, technology should be capable to provide enough information about the possible outcome. Lets says a change analysis is necessary, which is common in banking industry.
I will not go on with lots of examples, i wanted to highlight the importance of information flow.
So, the business comes with the demand, does technology have enough supply? If your answer is yes, you are doing something wrong. Either you dont have enough in your backlog or you have a too big team to operate.
A general math can not be applied here. I can not say something like man hours required / 2 should give you the amount of team you need. It would be rubbish. Each company has a different dynamic and it needs to be handled individually.
In short, if i get ever asked about how to scale, my answer would be that it is not easy to answer while scaling a company is not just about the technology, but it is a mixture of business, development and market needs together. In order to scale, each part of the business should be aware of what needs to be done and how much resource is available. A continuous improvement cycle has to be in place, tasks need to be handled on iteration basis. It even has to do with communication skills of the company as well.
The more you think about it, the more complex it becomes. The question itself is like a black box, it goes even deeper the more you think about it. At least my current answer sounds a bit better than simply saying add more servers.
What do you think?