Hackernoon logoYou’re Not Alone, Coding is Hard! How to Deal with Programming Roadblocks by@techlead

You’re Not Alone, Coding is Hard! How to Deal with Programming Roadblocks

Patrick Shyu Hacker Noon profile picture

@techleadPatrick Shyu

YouTuber (500k subs), Ex-Google/ex-Facebook Tech Lead.

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

Video Transcript:

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

Tags

Join Hacker Noon

Create your free account to unlock your custom reading experience.