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