Breaking through the Glass Ceiling: From Programmer to Software Engineer

As a programmer, you know how to write code that produces an app or a website, but that's just the tip of the iceberg.

In the industry, being a Software Engineer involves much more than just writing code. Specifically, let's look at the Backend part of Engineering.

Programmers are more interested in codes than concepts. If the code works, they're satisfied. They're the ones who engage in online arguments comparing technologies like React Native and Flutter, NodeJs, Django, etc. However, when the app starts to grow and the server cannot handle the traffic, they're left with only one option - to verify if the code has a problem. Why? Because they lack the knowledge of scalability, server overload, load balancing, database replication, database sharding, and other essential concepts used to keep Software alive and performant no matter the traffic. They've never considered concepts beyond coding, the real Engineering.

But it's not too late to change that. To become a Software Engineer, you need to understand principles like scalability, reliability, performance, architecture, and much more. You need to learn the concepts to keep your app running, even when your number of users grows in size.

Reading books is one of the best ways to learn these concepts. Books like "System Design Interview" by Alex Xu, "Designing Data-intensive Applications" by Martin Kleppmann, and other books on Software Architecture, System Design, and more, can help you learn enough to become a consultant.

As a Software Engineer, you'll be responsible for overseeing the production of Software from beginning to end, ensuring it's built with scalability and reliability in mind. You'll be the one handling server overload, database sharding, load balancing, and more.

If you think you've reached the peak of programming, it's time to look beyond code and start learning the concepts that can take you to the next level. Embrace real Engineering, and you'll never regret it.