Skip to main content

Benefits of learning backend engineering from first principles

imagine you are a newly joined software engineer perhaps a front-end developer by trade and you've been asked to fix a bug in the backend code base and what are some challenges you can face

probably the back end is written in a language you're unfamiliar with or maybe it's a language you know but the bigger question is where do you even start where do you look for the issue without

getting lost in the complexity of the code or let's imagine you've been tasked to create an API from scratch in this situation how how do you form the mental map of the code base stick to the

standards and ensure you're not breaking anything one scenario could be you are a backend engineer in typescript or goang and you're suddenly asked to jump into a different language let's say rust or

python now how do you get up to speed quickly without wasting hours looking through docks of different libraries let's say fast API or uh pedantic or for rust it's it could be Axiom or any other

Library it could be an orm like SQL Alchemy or diesel so the question is how do you apply your existing knowledge in a new environment without Reinventing the wheel now this is where learning

back and from first principles becomes invaluable the ability to break down complex systems into their most basic and Universal components gives you a massive Edge like one

seeing the big picture right when you enter an existing codebase instead of being overwhelmed by its structure or the complexity of its engineering you can mentally separate

out the different parts of the system and work on them in an isolated way you'll be able to identify the core Logic the routing layers the database connections and the over engineered

pieces and by filtering out these noises you can start making changes or fixing bugs with confidence and this is something you might have noticed in senior Engineers or ctOS or cosos they

can just look at any code or any particular code base and they'll quickly get a fair idea of what's going on or where the buck could be because a human brain is very good at picking up

patterns senior Engineers or ctOS they subconsciously pick up these patterns so they don't have to actually use this deliberately but my question is why wait for years of experience you can

deliberately practice from day one and get good at this in let's say 6 months or 1 year now the second thing is faster onboarding when you understand the first principles

behind backend engineering like how HTTP Works how databases interact with apis or how requests flow through the middleware you can dive into any language or framework and find your way

around it you no longer need to spend hours going over Library specific dogs once you have learned the Core Concepts behind authentication or routing or middleware and database interaction the

syntax is secondary you'll be able to cut through the noise focusing on the logic instead of the syntax this allows you to develop a deep sense of familiarity with a codeb much faster

than if you're focused solely on syntax or language specific features now the third thing is 10x faster in new projects when you start a new project

from scratch having backend knowledge grounded in first principles helps you move with Incredible speed and precision you'll be able to create MVPs with production quality code far faster

because you'll be working from a deep understanding of the systems needs not just following boiler plate tutorials you'll know how to structure your routes set up database connections and

Implement critical functionalities like caching or error handling or logging without constantly referencing documentations and the fourth is

syntax fatig learning a new language can be overwhelming enough but if you're unsure of what concepts to learn next after grasping the syntax or if you don't know

how to apply that syntax to solve actual problems uh backend engineering problems can lead to frustration or even burnout first principles reduce this syntax fatigue because once you understand the

fundamental building blocks switching between languages is no longer a daunting task you know the problems you are solving and now it's just about applying the right syntax and libraries

so for example you work as a nodejs developer and you want to transition into a rust backend engineer right so how do you do it you'll obviously look for a complete end to endend project of

how to create a back end in Rust uh at least four and 5 hours and it has to also maintain all the production quality standards now the problem with that is rust is a fa in new language and the

amount of resources that we have for node the amount of Project based resources that we don't have for rust so how do you get good at it right and you constantly worry about it I'm not

finding any projects I'm not finding any good resources you're good at basic syntax right how to handle different types of data structures in Rust and write basic programs but how do you

cross that threshold and actually build an end to-end production quality project so this is where the principles come in so imagine you understand the different layers of the back end for example you

start from routing and you go to middleware and uh there is database interactions there is logging there is error handling and there is Asing code everything right you understand all the

different components clearly as Concepts and in noes so what is the next step you understand basic Syntax for rust right so you start a rust project with whatever project layout that is

recommended by the community and you target each component separately you know how a production quality code looks like for routing you know how it looks like for validation and you know how it

looks like for data interactions and repository pattern and handlers and authentication authorization you know all the good patterns now you just have to convert your rust based syntax into

that pattern let's say you want to tackle validation so you go look up how to do validations in Rust you most probably will find a library or some kind of standard Library pattern of

implementing validations now you know the syntax and you already know what are the best practices and patterns and you now you mix them up now you have a module of validation in Rust which is

production quality and now you keep repeating this pattern for every single module let's say for authentication and for all your rest API logic and in no time in 2 3 days you'll have a fully

fledged production quality codebase in Rust now the next thing is choosing the right tool for the right job and this is something I see Engineers face a lot of problems with every day right because we

are stuck with our labels we think we are a nodejs backend developer or we are a ruby backend developer when we Face requirement that we have to build this module which has to have very high

concurrency demands right or a very low latency demands so we are stuck with whatever language that we usually work with and the confidence to reach out for the best tool we cannot get hold of that

by understanding the core problems back in engineering sols data persistence or request handling security scaling you'll also gain the ability to choose the the right tool for the right job you won't

be limited by your framework or your language or your library you'll know exactly which tool to use which language to use and which framework to use you'll understand when it makes sense to use

something like redis for caching or postgress for relational data or mongodb for unstructured data or let's say Kafka for realtime even streaming independent of the text tag you're currently working

with and the last thing is more employable and this is what most of us want right in today's rapidly changing Tech

landscape being able to apply your bag knowledge across languages and Frameworks makes you incredibly versatile and thus more employable employers want Engineers who can think

critically independently who can join any team and begin contributing value quickly by mastering backend principles you become that adaptable engineer who is not confined by a specific language

or stack but in state has the ability to solve problems in any environment now the good news is that you don't need to wait for years of experience to develop these skills you can start deliberately

practicing today by focusing on the Core Concepts that remain the same across every backend system like routing database or authentication you can build your own internal compass for navigating

new territories the goal is not just to solve problems when they arise but to do so with confidence and efficiency and with time you will develop a Natural Instinct for approaching any backend

code base or project no matter how unfamiliar it may seem at first now learning backend from first principles elevates you from a framework specific developer to a true software engineer

one who is not limited by a particular stack or toolet but understands the core problems backend engineering solves this Freedom allows you to explore new languages Frameworks and architectures

with ease and positions you as a valuable asset in any engineering team so whether you are a front-end developer looking to expand your skill set or a backend engineer wanting to transition

into a new language learning backend from first principles will supercharge your growth and Empower you to build your own robust scalable and maintainable system in any environment

so what are these principles anyway and when I say principles I don't mean a list of Rules by first principles I mean some foundational blocks or foundational components around which the rest of the

code base revolves at all times no matter how small or how big it is a generic map of the backend engineering territory which helps you find the way and we will start exploring the map from

the very next video