hey tech late here and welcome back to
another episode of the tech lead and I
know what you may be thinking this must
be lemonade it's not actually that's too
expensive I decided to recycle for the
meanwhile oh that's warm so today I
wanted to talk about why programming is
so hard and the fact is it's actually
not that hard but there are a certain
number of roadblocks and if you don't
clear these out of the way or if you're
not mentally prepared for these then
it's going to really mess you up and you
may find yourself stuck on some of these
you may even be banging your head
against the wrong wall when you realize
you're not even going in the right
direction here I know that there have
been some people who say maybe you have
to be born to code kind of like how you
may need to be born to be a really
gifted musical composer and I can tell
you that at least for myself I learned
to code but it was a real struggle even
for me I started at a very young age and
say sixth grade but even as I was
getting through learning pointers I
remember crying during those first few
lessons because it was just so difficult
I know this though that those who
persisted were able to get through it
and there are a number of things to
watch out for on your journey
into software engineering if that's what
you're going for here now before we get
started here I do want to mention that
this video is sponsored by myself I've
actually written up a little speech for
you guys here for my 15 minutes of fame
do I get 15 minutes I have been running
this program this tech interview
training program in which I will
actually help fast-track your career
with Joma check out their training
program tech interview procom you get
the first episode free when I first
began learning to code it was so
difficult look I'm not going to read
this whole thing for you guys just don't
be stupid check out the program tech
interview procom so one reason that I
think coding may be difficult is because
it is a combination of three different
skills actually not just one so you do
need the coding ability but to really be
an effective software engineer and to
actually get hired as one which
validates your skill sets
you also need problem-solving ability
algorithmic ability right that ability
to analyze a problem and come up with
the solution not just coding it we just
say the implementation and then you
also need communication ability because
coding is very much about teamwork if
you go into an interview and you are not
able to communicate properly you're not
able to express your ideas and thousand
to have that teamwork capability then
you're not going to get hired and then
you're going to go around thinking that
you're not a really good programmer you
may actually be fine in terms of
technical skills but maybe you were
missing that communication portion and
the problem is that many people will
have say two out of three of these
skills right you may be good at coding
and algorithms but you're not very good
at communicating or maybe you can do
some communication and coding but then
you don't have that algorithmic
analytical portion and you really need
to have all three portions to be
effective now the second reason that
coding is difficult I believe is because
it requires an inordinate amount of time
sitting in from the computer and just
staring at that screen and this is going
to be probably far more time than you
may be used to right for most other
disciplines you don't need to be sitting
down for a large amount of time focused
on something like say two to three hours
you can learn on the go right you could
go to a restaurant while you're eating
maybe you could read up on a little bit
of biology right learn a little bit of
chemistry while you're in the car spend
twenty minutes at the beach reading a
chapter of your history book that's okay
that's fine then that type of learning
can be done in segments but for computer
programming you really need to be
sitting at a single place at your desk
at the computer for a long period of
time many people are just not used to
being able to do that and they think
that that is just way too much and
they're not able to handle that and as
soon as they've sat down for say even 30
minutes they just say this is way too
much you know this must not be normal
they must not be good at it no that's
fine that's actually the proper path and
the way to do it the thing about
programming is that there's a certain
flow of things and you have to get into
that rhythm the study patterns are quite
different than other things that you may
be normally used to now another reason I
think that coding is difficult for
people is that it requires abstract
thought which is a skill that most of us
have not really been taught and many
people can go through life without
really using much abstract thought you
go through most of your say high school
without having to actually touch
abstract thinking at all and even many
people will go through college and their
whole lives without doing this but it is
about elevating your thinking
and generalizing towards more broader
concepts and relationships between
objects and concepts instead of looking
directly at the specific objects right
so for example if you take a look at the
dog
you may say at first that the dog's
color is brown and you have a computer
program that does this but then you may
be thinking if you were to start
thinking about this more abstractly why
do you even assign the dog's color to be
brown in the first place right
maybe the dog's color should be assigned
when the dog is born when the dog's name
is assigned at the same time that seems
to make more sense so you group all of
those things together but then you start
thinking well why is the dog a special
object within your whole entire system
should the dog be a special object and
should you be the one assigning it right
here in the program is the dogs more
special than anybody else why not assign
the cat a name why not assign the person
a name and the color as well so then you
may say okay well let's generalize the
concept of a dog to an animal and then
you have an animal factory that is able
to initialize these objects and assign
them names and colors and then you may
start thinking well why are you even
doing this client-side should then they
all be driven by the server and it
should be the server which is the source
of truth so you move everything to the
server and then the client has no
concept or notion about what an animal
even is the client is just a dumb but
view for rendering things so that gets
towards abstract thinking it helps you
generalize your concepts in the computer
system many people though they're just
going to say well why do you have to go
through all that the dogs color is brown
and let's just leave that that if you're
good at abstract thinking I believe that
it will also make you a good problem
solver another interesting facet about
coding is that you're never actually
done learning and there is no true sense
of accomplishment the field is just so
big so usually you just start learning
something and you feel that you've only
scratched the surface of it maybe you
only really understand 10% of it and
that's about right let's say you're
trying to learn react is you pretty much
just learn whatever you need to get your
portion of the work done but you never
really try to learn the whole thing the
framework is always changing and there's
always new technologies coming in and
parts of it being outdated and
deprecated all the time such that you're
sense of knowledge is always incomplete
and for some people they may not be used
to that right you may be learning a
physical equation or a math equation and
that's complete and you have the entire
knowledge right there you could be
reading a history book you've read the
whole chapter and that's about all there
is to it and you can piece together the
events 100% almost but in programming is
more like you only know about 10% and
sure there's a whole bunch more that you
can learn but that's fine and you just
leave it at that
the other thing is because the field is
so broad it is easy to get lost in the
weeds somewhere and it is easy to get
off track if you're not focused and
you're learning you could be wasting
your time learning all sorts of random
stuff that aren't really useful you can
spend all your time learning about
assembly code optimization which very
few people are going to need or you
could be wasting your time learning some
technology that's just not very useful
like how to decompile n64 game
cartridges in many ways learning code is
a battle against time in which you want
to prioritize your learning and make
sure that you're always on the right
track and not learning some piece of
technology that's not very useful and I
think people also really need to ask
themselves do you really want to code do
you think it is cool I think a lot of
people maybe they look at the amount of
money the salary income that software
engineers are making they think that
part's cool maybe they look at the
lifestyle but do they truly want to be a
programmer themselves or do they see
that as something that they may be doing
for say 1 or 2 years and then just give
that up because their heart was never in
it in the first place they don't think
it's cool most of us we are not brought
up thinking that software engineering is
very cool right we take a look at rock
bands singers musicians being an actor
or actress well that seems cool and a
lot of people would be willing to put
everything else on how to chase their
dreams for that but how willing are
people to give up say a Friday night out
at a bar with their friends to just sit
down and code not many people are
willing to do that because they just
don't think that coding is that cool a
lot of people think that coding is
something that you just pick up on the
side like learning to play that ukulele
it's not quite like that it requires
more commitment than that now one more
thing here is that the results will
validate you so you may think that
program is hard until you land the job
as soon as you have a job then you'll
feel
like oh hey yeah it was pretty easy and
this is where one big disconnect is is
that the coding interview process is
often completely different than actual
practical real-life programming and it
is actually a separate skill set right
you got to go through whiteboarding
questions and solve a bunch of brain
teasers and specific coding related it's
questions and there's a whole different
set of skills involved in that so the
challenge is that people maybe they get
through some coding practice and they're
actually pretty good by then but they
can't get the job so then they think
well coding is just seems so difficult
it's actually a different skill set that
you have to learn to pick up and this is
where I recommend you get some interview
training ex-google and X Facebook
engineers we're putting together a
training course program for you tech
interview procom so check that out we'll
get you all set that will teach you
everything you know to pass the coding
interview for large tech companies in
thing so I'm talking about coding data
structures analysis communication
behavior and all the other skills that
you're going to want to watch out for
you know one quote that I always think
about is the smallest decisions in life
often have the greatest impacts when you
invest in yourself maybe one day for in
the future you will look back on that
day that time and you'll say that was
the turning point right that smart
decision to invest in yourself I
invested myself my own skills and that
just sent me on a totally different
career trajectory and brought me to the
success that I have today let me know
why you think coding is difficult if you
liked the video give it a like and
subscribe and I'll see you next time
Thanks bye