What does scale mean anyway?
What does scale mean anyway?
At different points in a software lifecycle, scale means other things. It also means different things to different people at any particular time. Let’s tease out precisely what this means.
One of the first definitions of scale is performance. Can your software scale to the needs of its demand?
In the Rails community, there is a meme but does it scale? It is a criticism that Rails can’t seem to shake since Twitter fail-whale. However, the chances of working on a Rails application that even has that much demand is slim.
For this reason, some engineers might create an application using a higher-performance language such as Java, C#, or Go. There is no doubt that the correct technology can help applications scale much more accessible and better than something like Rails but no matter the framework or technology choice, we can break web performance scaling into two main concepts.
- Network optimization
- performant technology practices (such as caching and database optimizations)
Ability to Build Fast
Business-minded people point to technology choices as an inhibitor to growth. This is where frameworks such as Laravel and Rails shine, making it easy to get up and running.
If a product catches the market’s attention, there will be a need to add new features. These might not be customer-facing features, but they could have to do with a myriad of practices related to reporting, fulfilment etc…
The ability to change and improve the product is scale. The chosen technology and practices can impact how the product scales to fit more customers’ needs.
As an application grows, it gets harder to change, update and improve. However, TDD can mitigate against this.
If a product is successful, the chances are you might need to hire more people to cope with the demand. Scale in this sense is related to the application and business practices. How do you scale customer support?
Knowledge is hard-earned by customer service staff after every customer interaction. How do we ensure that learning is passed on to the next generation of staff? How do we fill the gaps in our support documentation?
Like customer service, sales is another area that is difficult to scale. Early customer success is vital if your product is a self-sign-up product; otherwise, churn could become a problem.
If the product is complex, your sales process might include a traditional salesperson, sales engineer, account manager, and customer success agent.
McDonalds is one the most successful franchises globally because its processes are so good that they can be replicated almost instantly worldwide. Set up a McDonalds in the right area, and it will probably make money. Its processes are among its greatest strengths.
You can focus on picking the right area, getting the initial finance and staff and voila. You’re good.
Processes are the hardest to scale because they cover many areas, and if they are too cumbersome, they will impede your progress more than enable it.
No matter what, we need to look at scale as something more than a physical limit of our machines.