Building for scale! Wait...What? Why & How?
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...
What?
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.
Why?
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.
How?
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.
Subscribe to my newsletter
Read articles from Mukul Chugh directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Mukul Chugh
Mukul Chugh
I'm a student and software engineer based in India. I'm all about creating digital experiences that are so intuitive, you'll swear they read your mind ๐ Haha! I've spent years honing my skills in a variety of areas, including front-end design and back-end development. My goal is always to create digital experiences that feel human-centric and provide real value to users. My passion for technology began in school, and I've been tinkering with it ever since. I love taking ideas and turning them into real-world products that make a difference. I'm a firm believer in the power of learning by doing, and I always strive to give my best effort in everything I do. Currently, I'm working at Zenduty, where I'm helping teams manage their incidents and stay on top of their on-call schedules. In addition, I'm also working as a freelancer, using my skills in web design and development to help businesses and brands achieve their goals and visions. When it comes to tools and technology, I enjoy working with a wide range of frameworks and languages, including JavaScript, ReactJS, Django, GatsbyJs, Python, Django, Node, Figma, VS Code, PostgreSQL, NextJS, and TailwindCSS. I'm always looking for new challenges and projects that will help me learn new skills and techniques. In my free time, I enjoy collaborating with other professionals in the industry. Whether you're interested in collaborating on a project or just want to chat over coffee, I'm always open to new opportunities. But enough about me - I'm here to help you achieve your goals and create amazing digital experiences. So, let's get started!