Building for scale is more of a foundational skill than just a philosophy, and I believe it is essential for a developer to learn this skill before planning a large project or even working on small-scale/side projects.
So let's discuss what I mean by building for scale. A while back I was working on a web application that was supposed to be used by the Customer Success Team at my work, So the targeted user base is pretty small right now, I consulted with my seniors and all the stakeholders for this particular project and started building it and successfully released the very first iteration of the application within a couple of months. And...
So, while building I did not consider the amount of data that I'll be dealing with when the app went into production, till then I was just working with dummy data on my local server. All the analytics on the dashboard was broken and looked really shitty with a shit ton of data points on a small chart that was not understandable and the team couldn't make sense of what was on the charts.
There...! This is the point where I realized the importance of anticipating scale and also having a wider vision for the project, even a smaller scaled project. Understanding that there will be breakpoints in your application and edge cases that you have to cater to, and here lies the difference between an engineer and a guy who knows how to build stuff.
An engineer can anticipate the scale and make sure the edge cases are solved.
My example is a really small case of how one can understand the importance of scale and scale-oriented execution.
In my case, it was the scale of data that was not accounted for and I encountered a problem and learned through it. For you, it can be anything, from enormous traffic on your app, shit tons of API calls, attacks, device-specific issues, performance issues, etc.
Solving for scale or the least taking into consideration the extent of your application while building it can be helpful and it may help you overcome frustrating issues that can save you some time and mental peace.
Building for scale also means the code that you write is maintainable and modular also the system design is scalable.
Also, the viability of your designed system and code is really important because, in the end, everyone wants to make money, if your system is working fine meeting all the edge cases, and can be scaled to the moon but still the code is not optimized or the system is not well optimized for scale, it will incur a cost, it can be hefty server bills, and in turn, it will require more effort and time to work on something more viable & feasible.
I hope you understand the importance of considering scale while building applications.
I believe I still am learning and there's a lot more for me to learn before I give out any tutorials or tips for building scalable systems, and this article is meant for people who are starting off with development, so make sure you always think critically about edge cases and to what extent the feature/platform you're building so that you can anticipate more use-cases and bottlenecks that might become problematic in future.
I feel, learning this skill can help you become a better developer, I hope you'll Implement this tip on the project you're working on.
Did you find this article valuable?
Support Mukul Chugh by becoming a sponsor. Any amount is appreciated!