
I built distributed systems at Meta. I still recommend starting with web dev.
When people hear that I worked on distributed storage at Meta, they assume I must have taken the intensely technical path: writing C++ from day one, digging deep into operating systems, and building algorithms from scratch in college.
But the truth is: I started with web development. And if I could return, I’d start the same way again.
That surprises people. Some even push back.
Isn’t that just HTML, CSS, and JavaScript?
Shouldn’t I go straight to systems programming if I want to work at a company like Meta or Google?
Isn’t web development mostly just frontend work?
I understand where the skepticism comes from. But this is my honest opinion based on over a decade of experience, from building small websites to running distributed storage at scale, and now mentoring thousands of developers through Educative:
Web development is one of the best places to start your career as a software engineer, even if your goal is to work on systems.
Let me tell you why.
Why start with web development
I didn’t fully understand memory models or system calls when I started programming. But I did understand one thing: I wanted to build something real.
I remember the first time I made a basic website. It was clunky, sure, but I could open it in a browser, click around, and share it with a friend. That instant feedback loop was powerful. It made programming feel real, not theoretical.
Most beginners underestimate this. Instantly seeing the result of your code is immensely satisfying and this feedback loop is essential for continuing to learn.
Web development teaches you far more than people give it credit for. When you build even a simple web app, you’re touching several core parts of computing fundamentals:
You’re learning how clients and servers talk to each other.
You’re working with asynchronous code, like handling events or fetching data from an API.
You’re dealing with data models, user interaction, and security concerns.
Even building a login form introduces you to concepts like authentication, state management, HTTP protocols, layered architecture, and interfacing with databases. These are not minor ideas - they’re foundational.
Later, when building large-scale storage systems in the industry, I leaned heavily on those same concepts. These included handling retries (where applications or systems are designed to automatically retry failed operations due to temporary network issues, e.g., dropped connections, and time-outs) over the network, dealing with user requests in real time, and managing state consistency. It all starts with understanding how systems communicate.
And guess what beautifully teaches that? A simple web application.
Learning systems without getting lost
Many new engineers get discouraged when they try to jump into systems programming too early. They’ll start reading about distributed consensus or try to set up Kubernetes in week two of their learning journey. Then, they hit a wall and often quit.
Starting with web development keeps the learning curve reasonable.
You can build projects that work. You can debug issues visually as there’s a website you can interact with. You can explore concepts like latency, scalability, and concurrency in ways that are intuitive and not a mere cognitive overload.
Eventually, when you start exploring lower-level concepts like memory management, OS internals, or databases, you’ll already understand many core principles, because you’ve seen them play out in practice.
At Meta, I worked on storage infrastructure. We handled petabytes of data, designing systems that could survive server crashes, network partitions, and unpredictable user behavior. It was challenging and fascinating work.
But here’s what’s often missed: the best systems engineers I worked with weren’t just experts in distributed algorithms. They also understood how their systems were used by real people, in real apps, through real interfaces.
For instance, one project I contributed focused on improving how data is written to storage systems. The goal was to make this process faster, ultimately reducing the waiting time for people using our services. Our improvements came from understanding the end-to-end request path from a web page click, all the way down to the disk write.
That mindset, thinking end-to-end, is something I first developed while building web apps.
Starting small is not thinking small
A big misconception is that you should avoid web development if you want to be a real engineer. That it’s not serious enough. That it’s just for junior devs or hobbyists. I couldn’t disagree more.
Starting with web development doesn’t mean you lack ambition. It means you’re choosing the smartest path forward, letting you learn by doing. The one that builds your confidence. The one that prepares you to go deeper, when you’re ready.
It’s like learning to walk before you run. Or learning arithmetic before you tackle calculus. You need those early wins. They build the foundation.
If you’re just starting, here’s my honest advice:
Don’t worry about learning “everything” at once. Focus on building.
Pick a web framework. Build something real, anything that you care about.
Learn how data flows from the browser to the server and back.
Understand APIs, databases, and client-side logic.
Then go deeper. Learn what happens under the hood. Move into the backend. Explore systems when you’re ready and when a need arises.
I promise, you’ll be far better prepared than someone who tries to start at the deepest end of the pool and is overwhelmed by abstraction.
Every complex system you admire has started somewhere small. Google started with a basic search box. Facebook started as a student directory. Even the most advanced distributed systems begin as simple requests, moving through a stack of layers, each doing its job. Start with web development. Not because it’s easy. But because it’s one of the most effective ways to learn how computers work, and how people use them.
And if you stick with it, you’ll be surprised at how far it takes you. I certainly was.