How to Become a Good Backend Engineer (Fundamentals)
what's going on guys my name is russain
and I'm making this video because some
of you have asked me they they're recent
graduates or they're just getting into
software engineering and people are
interested to learn and become a
back-end engineer or just to be a better
engineer in general and you guys have
asked me of some sort of a path to to
become a back-end engineer what do I
need what do someone need to actually
become a back-end engineer what kind of
skills do you do do a back engineer
actually possess and it's it's
interesting the word skills here because
I'm not going to talk about tools guys
because we're not gonna discuss tools or
actual applications that you need to
know instead we're gonna discuss
fundamentals and concepts that you need
to understand in order in order to
actually become a back-end engineer or
better back in engineer all right so in
this video I'm not gonna discuss tools
I'm gonna discuss concepts and
fundamentals and so that means I'm not
gonna talk about Django or nodejs I'm
gonna talk about web frameworks I'm not
gonna talk about Apache caf-co RabbitMQ
I'm gonna talk about messaging systems
I'm not gonna talk about Apache
Cassandra Postgres I'm going to talk
about database engineering and no sequel
databases and and relational databases
and and so on and as we discuss these
concepts or or skills or fundamentals I
want you to understand that no one is
actually knows all that stuff there is
no back engineer who is an expert in all
all of these skills there might be an
engineer oh my
biggs is that know someone thing of
everything but you're either a jack of
all trades master of none or you're
actually a master of a vertical that you
pick and you become really really good
at and this is what i want to
communicate to you guys right you can
taste all these fundamentals but while
you're tasting this thing you will find
yourself automatically gravitated
towards one or more and this is where
you and no one else can tell you to
actually go deep into whatever you like
okay you might be interested in
databases so you've got into database
engineering and you might go even deeper
than that right go psycho I want I want
to be an expert of no sequel high
scalable and transactional and gene
database engineering so which is which
is very niche right so this is what I'm
gonna discuss in this video so if you're
interested stay tuned if you're new here
welcome my name is Hussein and in this
channel we discuss all sorts of software
engineering by example so if we want to
become a better software engineer
consider subscribe and hit that Bell I
can so you get notified every time I
upload a new video and I specialize in
the backend if you're interested stay
tuned alright so the first skill that I
want to discuss here is the
communication protocols as a back-end
engineer it is it is good to understand
these communication protocols and when I
say communication protocols I'm talking
from the low-level protocols TCP and UDP
you can't go lower than that but you're
kinda going into the networking aspect
you're becoming a network engineer but
that's that's okay as well but the
lowest you can in my opinion again all
of this stuff is all my opinion and all
my personal opinion and then always you
can get this TCP and UDP and this is
very important to understand what
happens during a TCP what having do
UDP why is UDP connectionless versus why
is TCP is a connection for right and
then and what why is TCP slow and why is
it slow right because we hear that OH
TCP has a slow startup you need to
understand these concepts right it's
like oh yeah TCP is slow but why crime
and because you understand why you make
great decisions because you understand
these small small small things right
collateral no this all about collateral
not you and then understand a little bit
of a higher concept such as HTTP right
how HTTP works all HTTP works on top of
TCP and this is obviously a little bit
changing these days with HTTP 3 and
quick but just understand the
fundamentals all right HTTP protocol
what is it exactly right and as I
discuss this thing I'm strong I'll try
to reference videos that I have made for
you to actually go and and explore more
I made videos about TCP UDP I made a
video about HTTP one-tooth making video
about 3 as well as we speak and just
just understand these protocols and
communication protocols it's very very
critical to understand as a back-end
dream because you will get into a
situation where you're building an API
and your application is slow ok and you
need to answer this question why opening
700 TCP connections maybe as a bad idea
you're you're writing code that creates
a loop and and and does something but if
you don't understand that is actually
creating and closing a TCP connection
right you don't understand why it's slow
that's why communication protocol is
very interesting in and it's good to
understand especially the HTTP right if
you're going into the higher level
closer to a front-end engineer it's it
at least and understand how HTTP works
and that's that's very interesting to
know HTTP 1 and it could be 2 what
happened exactly what are our problems
which to be 1 and why did we focus on
HTTP 2 all right
and as I explained these things you
might not be interested in this car kind
of skills that's why you have to jump
into something else but at least taste
it learn about read about it
some videos about it and if you're
really interested in dive deep into it
if not and jump into the next thing if
you know if you find and none of this
stuff in their interest to you maybe you
don't like back in engineer and you
might be you might actually find
yourself more productive and more
efficient as a front-end engineer right
it's just there's this this isn't
completely the front-end engineer Isaac
is a beast by itself right and I
recommend following people like Ben our
and traversing media and develop
simplified people who actually just do
stuff every day about what front end
right another communication protocol is
is WebSockets for example bi-directional
why would I use bi-directional
communication why would I use WebSockets
right well I'm building a chatting
application and I want my channel
application to work on agnostically on
my old devices on a browser right or I'm
building a game
I need bi-directional communication and
what is bi-directional communication all
this kind of small things cuz I'm not
gonna give a dive deep into the details
as I speak right and ask me questions if
you're interesting I'm gonna guide you
as we speak okay G RPC what is G RPC
another communication protocol it was
invented for a reason any thing that you
see here is invented for a reason
because of a limitation of a previous
protocol okay
so G RPC is another thing communication
protocol alright so that's the first
thing communication protocols in general
any communication protocol that he can't
you that you were actually interested in
and and you can go deep into this and
write RFC's yourself to that level
become an expert than that right and
yeah it's just a breadth versus depth
right so okay that's the first thing
communication protocols I think is very
it's very critical skill of a back in
engineer web servers web servers are
again especially because we're dealing a
lot with this could be this this section
could be labeled as just servers if you
think about it but I added that word web
because web servers
becoming more and more critical as we
speak and as we get into this to the
2020s right because web servers are
their own they have their own perk
obviously there are the HTTP that kind
of reinforces the ability of the HTTP
and web servers the ability to serve
content just that job okay serving
content whether this content is static
or and you'll get into the ideas of
caching and all that stuff all whether
this content is dynamic and you're
dynamically generating it is your web
server supports each side includes and
an edge web software is the ideas of
edge web servers and you can go deep
into that types of web servers that are
there okay and the ideas of how web
servers deal with etags and attack
generation making sure the caching
mechanism of the clients actually
correct the web server implementation
threading right
how many thread does a web server have
is it a single threaded that is none
blocking like no js' or is it
multi-threaded like a Apache Tomcat or
Apache that Apache web server
I just there are a lot of implementation
and decisions that there isn't there is
no right way of doing things there is
always a problem and you're trying to
solve it okay so web server every single
website that you consume is hosted by a
web server there are web servers that
are doing multiple jobs like nginx it's
act like both as a web server and also
as a proxy right and this is this a good
thing or a bad thing it's really up to
you that back comes back to the HTTP
protocol and how how good are you to
understand this protocol so you can
maybe build your own web server one day
yeah and that self said that solves a
specific problem so that's a back
engineer you need to deal with web
servers and deal with server and learn
with them
my favorite part database engineering so
that is engineering is is is so deep
guys
and you can just take a career not just
about database and even database
engineering it is it is so high level
right because not talking about back-end
engineer is high level data is
engineering is also high level because
you can you can become an expert in an
and log structured knowledge tree
indexes that are text-based
you can go as deep as niche as that and
become a back-end engine that is just
the guy or the gal that people goes to
for LSM index taxpayers search you can
you can you can do that right you can be
that or right you can you can just taste
that field are you interested in
relational databases okay if you're if
you want to learn database engineering I
think every back engine should
understand acid atomicity consistency
isolation and durability and that you
can take you can take a doctorate just
talking about all these four properties
they are so complex you can just be an
expert in isolation just pick isolation
database isolation and become an expert
in it and just learn stuff and I keep
saying expert guys and I don't believe
anyone can actually become an expert
because if you think yourself as an
expert I don't think you know enough
because because the moment you say I am
an expert that means you think that you
know everything and if you know
everything that egos killing you right
and that means there is no room to grow
that's why I never call myself an expert
okay and never well but let other people
call you an expert in a certain name but
never call yourself that's just my
opinion
so relational databases acid properties
no sequel right people saw found
problems with scalability in a
relational so they move to no sequel
they said ok hey we want we want we
don't want this very strict budget
otama City we can give up some of these
properties and in favor of scalability I
want to scale okay even scalability it's
a huge thing with back in engineering
right proxies guys and personally this
is my favorite from tasting back in
engineering for the past 15 years I find
myself leaning towards proxies because
proxies is I think is gonna just blow up
in the coming future because with the
introduction of micro services which
isn't just an architecture proxies
became more and more important and when
I say a proxy I'm talking about a proxy
and I'm talking about reverse proxies
and when I say a reverse proxy I'm
talking about caching layers I'm talking
about load balancers I'm talking about
all of that stuff that actually TLS
termination anything that actually make
a request on behalf of a client or
anything that receives a request and
makes a request to other servers that
hides the identity of the original
client or hide an identity of the
original the destination server reverse
proxy proxies what is the difference
between the proxy and reverse proxies we
discussed a lot of videos regarding this
topic right layer seven proxying layer
four proxying layer 3 proxy which is
still I'm not I don't totally understand
but I'm trying to write layer 4 proxy
layer 7 proxy why would you do we have
two levels of proxies and what can you
get at each layer you can dive deep into
each one of this and become also again
coding called export of this right
rather reverse proxy applications load
balancing algorithms and all that stuff
just the ideas of proxies okay
service meshes service missions are so
popular these days man because because
of the micro services and what our
service meshes they are nothing but a
proxy and a reverse proxy so proxies are
just becoming more and more and more
poppy
every day maybe you're gonna like it
taste it see if you like it as a backing
engineer if you don't move on caching
caching layers are so critical in every
of every stack with our back-end or
fronting write caching layers their
varnish understand reverse proxies are
by inherently caching layers because or
proxies as our caching layers I want to
understand when to use caching and and
databases that are designed for caching
like in memory caches run stateful
versus stateless caching all these kind
of things caching is also very important
you can become an expert also in caching
just specific just designed to be
caching expert and and caching is one of
the hardest problem in computer science
cache affection in general are you
interested in that
this will really really really be very
very valuable for you
messaging systems right messaging system
are becoming more important as we move
towards an interconnected system there
is no more a client as a user connect to
one system there are systems connect
communicating with each other and to do
that you need some sort of a messaging
system to kind of coordinate this thing
ok there are too many types of this just
partial types is cute
the idea of a simple elegant queue
RabbitMQ plays many things I'm not a fan
but just pick a software that actually
does just aq0 mq i believe just just
stick you right but again no shade right
rabbitmq does many things right and and
the moment you have a software that does
many things this also becomes more
complicated you guys know and it becomes
really hard to debug it becomes you'll
start having bugs and understanding the
abstraction becomes really hard right
Kafka is another system right it acts
like a cue but is first it is a pops up
publish/subscribe system and that's all
of this thing these are the concept and
fundamentals that back engine should
understand not Kafka not rabbitmq not 0m
q these are tools these are applications
understand how the messaging system
actually just what is a messaging system
understand that right why did we build
it right there's always a reason for
anything if you find something without a
reason toss it immediately or ask
try to ask for why does it exist okay
everything in software engineering there
is a reason behind it okay usually it's
a good reason what API would frameworks
that one of the most popular things
nodejs
django right express all that stuff are
web frameworks that are designed to
build the web api so order this is G RPC
or a REST API right REST API is also an
architecture right that's kind of falls
within the framework and that protocols
write the architecture okay all that
stuff guys kind of fall with it within
this concept of frameworks right just
understand what is a web framework very
close to a web server but it actually it
actually more dynamic allows you to
write code write web servers usually
serve static or dynamic code write
dynamic web servers and frameworks can
give you unlock many many potential use
cases message formats right this is
another kind of skill that it's good for
you to know right that's just a concept
and fundamentals right there are
protocol buffers there's the message
format the original one XML then came in
because it's a human readable people
designed it so it's Rehema readable then
people realized oh dang computers are
really not good dealing with XML which
is a human readable so might as well
just make it a little bit smaller Jason
was born right and then Jason was born
then protocol buffer Jason was very very
popular popular obviously still really
readable but it's also a little bit
friendlier right JavaScript became very
popular obviously languages right in
general and the message formats right
protocol buffers that was designed to
solve the problem of high bandwidth
messages that being sent okay let's do a
protocol buffer that actually minimizes
that payload so we can essentially send
fewer bytes as much as possible so
that's essentially message formats very
very interesting topic you can also
become an expert about just messaging
for me you can go the go to a guy about
protocol buffer version 3 right and just
the things they can tweak their security
and finally security guys security is
also one of the topics that I find very
very very interesting and III I see
myself between diving a kind of kind of
going deep into security and proxies I
like both of those right and and it
depends on URI I might have missed some
fundamentals as well guys but these are
the things that I think kind of govern
most of the stuff right security
especially encryption in general right
TLS transport layer security between
messaging and networking right how do
you communicate between one node and the
other node so that the communication is
secure so that you stop
man-in-the-middle attacks so that you
stop reply at acts how do you make
things secure in general how do you save
your your database credential so is not
leaked for example right firewalls kind
of deal into security what ports do you
want to open what ports you should close
right denial of service attacks right
what type of denial service attacks as
an eye server name indication
security there's there are so much
attacks you can become an expert as you
might know guys in just security and you
can just pick web security or be more
general network security right again
guys that's that's all for me today but
what I want to tell you is just try to
just stays as a fresh graduate if you're
just into software engineering and you
want to you're interested in back in
engineering taste these different thing
taste them learn about them see what
you're interested in
ask questions ask me in the comment
section below I try to reply and I'm
comments are increasing increasing day
by day as as the channel become more
popular thank you so much guys but ask
questions why this why is it like this
why is it not like this right form your
own opinion have strong opinions try to
defend your own opinion build something
cool experiment with things languages
don't matter you can pick any language
that you feel connection with I started
with you can laugh visual basic five and
I love it people make fun of this
language all the time but guess what I
don't care that language got me where I
am today
I built thousands of applications holism
maybe a saturation maybe and then in the
hundreds
but I'm reserved application just with
visual basic right visual basic 5 and
then visual basic.net then I move to C
sharp and then I move to PHP on the web
they move to JavaScript and now I'm all
off with this JavaScript why because
that's the only language that I can open
a browser in any computer and I can
write code in without installing a
single software give me any language
that does that none okay none any
computer any operating system open a
browser and you can write JavaScript
code right there that's the only that's
one of the reasons I love JavaScript I
can I can just itsu everywhere right
it becomes literally a Brewer that's
just an opinion Python is a great
language take any language that you're
comfortable with
go a lot of people use go for the back
end again
Brust is also popular right very see
like right but yeah
picking language any fundamental that
you learn can be applied with any
language there is some languages that
are preferred for the back end like see
okay and you're gonna pick it when you
understand what you're building right
that's that's the that's what you need
to know taste these different things
taste these different fundamentals and
if you like any of them
start diving deep and two into each of
one of them go depth go deep into one of
them that are you actually interested in
or maybe you want to become a full-stack
engineer okay again you you can become a
fellow second engineer but don't expect
to be an expert obviously right because
if you are a first tech engineer you
know the front end and you know the back
end oh definitely that's not wrong right
but people will not hire you if they
want a database expert or they want
someone to configure there they want to
rewrite they want to write a new
database that uses a special version of
B trees that are actually optimized for
writes then I gotta hire a full stack
injury they're gonna hire a back-end
engineer specialize in databases right
you might be you might be okay with that
or you might be okay with working in the
front and in the back and nothing wrong
with that I'm just saying that if you
want to become really known for
something pick one thing dive deep into
it okay alright guys hope you enjoy this
video I hope it is useful for you guys
I'm gonna see you in the next one write
down what do you want to learn next what
do you want me to make next and check
out the videos in the channel and I
really appreciate you thank you so much
stay safe in this current situation that
we are in I hope it goes away hopefully
soon just stay safe guys
and got to see you in the next one you
guys stay awesome