The KEY To Thinking Like a Programmer (Fix This Or Keep Struggling)

Andy Sterkowitz
11 Apr 202110:38

Summary

TLDRThis video script delves into the mindset of a programmer, debunking the myth of a 'secret sauce' taught at elite institutions. It emphasizes that programming is fundamentally about solving problems through code. The speaker suggests adopting a methodical, scientific approach to problem-solving, breaking down complex issues into manageable partsβ€”a technique known as decomposition. The script also introduces the concept of thinking algorithmically, akin to following a recipe, to achieve desired outcomes in programming. The speaker encourages viewers to apply these strategies to enhance their coding skills and potentially embark on a career in software development.

Takeaways

  • 🧠 Thinking like a programmer is not about a 'secret sauce' taught at elite institutions but rather a set of tangible strategies and mindsets that can be learned and applied.
  • πŸ’‘ The core of programming is problem-solving; programmers write code to address specific problems, whether they are small or large-scale.
  • πŸ” Adopting a methodical approach to problem-solving is crucial for programmers, which involves having a structured and orderly thought process.
  • πŸ”¬ Drawing an analogy to the scientific method, programmers should approach coding with a hypothesis, experiment, and iterative refinement process.
  • πŸ“š Learning the syntax of a programming language is essential, but it's equally important to develop an ordered and structured way of thinking about problem-solving.
  • πŸ“‰ Decomposition is a key concept in programming; breaking down large, complex problems into smaller, more manageable parts facilitates easier problem-solving.
  • πŸƒ Like a leaf decomposing into its elemental parts, programmers should decompose problems into their fundamental components to tackle them systematically.
  • πŸ›  Programmers excel at not seeing an application as a monolithic entity but as a collection of smaller parts that can be individually addressed and built.
  • πŸ“ Thinking algorithmically means creating a 'recipe' or step-by-step process to achieve a specific outcome, much like following a cooking recipe.
  • πŸ€– Recognizing that computers do not 'think' or guess what the programmer wants is vital; programmers must provide explicit instructions for every desired action.
  • πŸš€ Starting with simpler projects helps new programmers to grasp the concept of algorithmic thinking and gradually build up to more complex applications.

Q & A

  • What is the main focus of the video script about programming?

    -The main focus of the video script is to explain how to think like a programmer, emphasizing the importance of problem-solving, methodical thinking, and the process of learning to code.

  • What misconception does the script suggest people have about programming?

    -The script suggests that people often believe there is a 'secret sauce' taught at prestigious universities that is not available to the general public, which is not true. Programming is more about adopting certain thinking strategies.

  • Why is problem-solving an essential part of programming according to the script?

    -Problem-solving is essential because programming is fundamentally about writing code to solve problems, which can range from small to complex ones, like creating applications like Facebook or Gmail.

  • What does the script suggest as a way to demonstrate methodical thinking in programming?

    -The script suggests adopting a 'scientist mindset' where you set up experiments, record observations, and iteratively test hypotheses, similar to the scientific method.

  • How does the script define 'decomposition' in the context of programming?

    -Decomposition, as defined in the script, is the process of breaking down a large, complex problem into smaller, more manageable parts to make it easier to approach and solve.

  • What is the significance of thinking algorithmically according to the video script?

    -Thinking algorithmically is significant because it involves creating a step-by-step process or 'recipe' to achieve a specific outcome, much like following a recipe in cooking.

  • Why does the script emphasize the importance of not seeing an application as a whole but as individual parts?

    -The script emphasizes this because it allows programmers to tackle each part methodically, making the development process more manageable and less overwhelming.

  • What is the role of the user interface in the problem-solving process described in the script?

    -The user interface is part of the problem-solving process where programmers must consider the components that will be on the screen, how data will be displayed and interacted with, and the overall user experience.

  • How does the script describe the common mistake made by beginners when learning to code?

    -The script describes a common mistake as beginners assuming the computer can read their mind, expecting it to understand what they want without providing the exact steps or 'recipe' in code.

  • What advice does the script give for those starting to learn programming?

    -The script advises beginners to start with simpler projects, learn the programming language syntax well, and practice thinking in terms of steps and structured processes.

  • What does the script imply about the nature of the computer in relation to programming?

    -The script implies that the computer is 'dumb' in the sense that it cannot guess what the programmer wants; it requires explicit instructions through well-structured code.

Outlines

00:00

πŸ€– Understanding the Programmer Mindset

The speaker addresses the common question of how to think like a programmer, emphasizing that there is no secret knowledge exclusive to top institutions. Instead, they highlight the importance of adopting a structured, methodical approach to problem-solving, akin to a scientist's mindset. The essence of programming is to write code that solves problems, which can range from simple to complex. The speaker encourages viewers to think more methodically, comparing the process to a scientific method, where hypotheses are tested and refined through experimentation. This approach is fundamental to learning to code and becoming a software developer.

05:02

πŸ“š Breaking Down Problems and Decomposition

This paragraph delves into the concept of breaking down large problems into smaller, more manageable parts, a process known as decomposition. The speaker illustrates this by comparing it to the natural decomposition of a leaf into its elemental components. In programming, this involves dissecting a project into its core functionalities and user interface elements. By understanding the individual parts that make up an application, such as inputs, displays, and buttons, programmers can more effectively approach building the software. The speaker also discusses the importance of recognizing that a computer requires explicit instructions, much like a recipe, to achieve the desired outcome, rather than assuming the computer can infer the programmer's intentions.

10:02

🍲 Algorithmic Thinking and the Recipe Analogy

The final paragraph focuses on algorithmic thinking, which the speaker describes as akin to following a recipe to achieve a specific result. They use the example of cooking a dish like chili to illustrate the need for precise steps and ingredients to achieve the desired outcome. This concept is crucial for new programmers who must understand that the computer requires clear, step-by-step instructions to perform any task. The speaker advises starting with simpler projects to grasp this concept and emphasizes the importance of learning the programming language's syntax to think more algorithmically over time. The paragraph concludes with an invitation for viewers to share their thoughts and an offer to join the speaker's mentorship program for further learning opportunities.

Mindmap

Keywords

πŸ’‘Programmer

A programmer is an individual who writes and tests code to create software applications or systems. In the video's context, the term emphasizes the need to think logically and methodically to solve problems through coding. The script discusses how professional programmers differ from beginners in their approach to problem-solving and the structured way they think, which is a key theme of the video.

πŸ’‘Software Developer

A software developer is a type of programmer who is involved in the design, development, and maintenance of software applications. The video script uses this term interchangeably with 'programmer', highlighting the professional aspect of writing code to solve complex problems and the importance of adopting a methodical mindset in this role.

πŸ’‘Problem Solving

Problem solving is the process of finding solutions to difficulties or challenges. The video emphasizes that a core aspect of programming is being a good problem solver. It illustrates this with examples like creating Facebook or Gmail, where the programmers had to solve the problem of connecting people or improving email services, respectively.

πŸ’‘Methodical Thinking

Methodical thinking involves a structured and orderly approach to ideas or tasks. The script suggests that programmers should adopt a methodical mindset, similar to a scientist's, to systematically approach and solve coding problems. This concept is central to the video's message on how to think like a programmer.

πŸ’‘Scientific Method

The scientific method is a systematic approach to experimentation that involves forming a hypothesis, conducting experiments, and drawing conclusions. In the video, it is used as an analogy for the structured approach programmers should take when solving problems, emphasizing the importance of a step-by-step process in coding.

πŸ’‘Decomposition

Decomposition in programming refers to breaking down a complex problem into smaller, more manageable parts. The video script explains that programmers should decompose big problems into smaller ones to make them less overwhelming and easier to solve, which is a key strategy in programming.

πŸ’‘Algorithmic Thinking

Algorithmic thinking is the process of designing a step-by-step procedure to solve a problem or achieve a desired outcome. The video describes this as akin to following a recipe, where programmers must lay out a precise sequence of actions to achieve the desired result in their code, which is crucial for effective programming.

πŸ’‘User Interface (UI)

The user interface is the part of a software application that users interact with. The script uses the example of an expense tracker application to discuss how programmers must consider the UI components and their functionality, such as inputs, displays, and buttons, when designing and building software.

πŸ’‘DOM (Document Object Model)

The Document Object Model (DOM) is a programming interface for HTML documents that treats an HTML document as a tree structure where each node is an object representing a part of the document. The video mentions accessing the DOM as part of the algorithmic process of displaying elements on a webpage, illustrating the technical aspect of front-end development.

πŸ’‘Mentorship Program

A mentorship program is a structured initiative where an experienced individual guides and supports the learning and development of another person. The video script refers to the creator's mentorship program as a way for viewers to learn programming in a structured and guided manner, which aligns with the video's theme of methodical learning.

Highlights

The key to thinking like a programmer is understanding the fundamental nature of programming as problem-solving through code.

Contrary to popular belief, there is no 'secret sauce' taught at elite institutions that is withheld from the general public.

Tangible strategies exist to adopt a programmer's mindset, making learning to code and entering the field more accessible.

The speaker's experience with clients in mentorship programs provides insights into the transition from novice to software developer.

The necessity of adopting a methodical approach to problem-solving in programming, akin to the scientific method.

The importance of viewing programming as an iterative process of hypothesis, experimentation, and refinement.

The analogy of a scientist's structured approach to experimentation as a model for programmers' problem-solving.

The distinction between learning programming syntax and developing a structured thought process for problem-solving.

The concept of decomposition in programming, breaking down complex problems into smaller, more manageable parts.

The challenge of overcoming the feeling of being overwhelmed by large projects by decomposing them into elements.

The practical example of building an expense tracker application to illustrate the process of decomposition.

The necessity for programmers to visualize both the user interface components and the underlying actions of an application.

The importance of understanding that an application is a collection of features and functionalities that need to be methodically developed.

The concept of thinking algorithmically, akin to following a recipe, to achieve a specific outcome in programming.

The common mistake of assuming the computer can read the programmer's mind, rather than providing explicit step-by-step instructions.

The importance of starting with simpler projects to build a foundation in algorithmic thinking before tackling more complex applications.

The speaker's mentorship program as a resource for those interested in learning to think and program like a professional developer.

Transcripts

play00:00

yes the million dollar question for many

play00:02

of you guys who watch my channel is

play00:04

how do i think like a programmer right

play00:06

like how do professional software

play00:08

developers people who are getting paid

play00:09

to do this thing

play00:10

versus how i think what is the

play00:12

difference there what is the gap well

play00:14

many people will think that there's some

play00:16

secret sauce taught at mit or stanford

play00:18

that they're not teaching the general

play00:19

population that's the thing you're

play00:21

missing but

play00:22

the truth is it's not really like that

play00:23

at all in fact there are some tangible

play00:25

ways to think

play00:26

more like a programmer and if you

play00:28

utilize these strategies let's call them

play00:31

or ways to think like a programmer

play00:33

it will make your life easier and it

play00:34

will set you on a better path

play00:36

to learn to code better to get that

play00:38

first job and that's exactly what i want

play00:40

to cover in this video

play00:41

i want to base it more off of my

play00:43

experience of seeing

play00:44

many people go from not knowing much to

play00:47

actually becoming software developers a

play00:48

lot of the clients who i work with in my

play00:50

mentorship program

play00:51

and even to just distill it down to it's

play00:53

very basic so

play00:54

without any further ado let's just kind

play00:56

of dive right in here to get to the core

play00:58

of what it means to think

play00:59

like a programmer you first have to

play01:00

really get crystal clear about what

play01:02

programming is because i think

play01:04

people think you're just like writing

play01:05

code all the time and that's all it is

play01:07

really what being a programmer is is

play01:09

you're writing code

play01:10

to solve a problem that's the that's the

play01:13

simple as you can really get

play01:14

right so the problem could be very small

play01:16

or it could be very big

play01:18

right so for example if you want to take

play01:20

something that everybody pretty much

play01:21

knows like facebook for example

play01:24

was at one point it didn't exist right

play01:26

mark zuckerberg was sitting in a dorm

play01:27

room and he thought wow if i get people

play01:29

to connect

play01:30

that'd be really cool and i think that's

play01:31

a problem so he solved that problem

play01:34

by creating a large software application

play01:36

a very complex one

play01:37

or maybe it was something simpler than

play01:39

that but still complex let's say google

play01:41

back in the day they saw that all the

play01:42

email clients out there weren't very

play01:44

good

play01:44

so they're like let's go ahead and

play01:45

create our own email client and they

play01:47

created gmail something that didn't

play01:49

exist they thought could be really good

play01:50

could solve a lot of people's problems

play01:52

and a bunch of software developers coded

play01:54

that up so

play01:55

when you hear that you have to be a good

play01:56

problem solver that's where this idea

play01:58

comes from

play01:59

that's where this buzzword comes from

play02:00

because ultimately as a software

play02:02

developer you're solving

play02:03

some sort of problem you're creating a

play02:05

solution using code

play02:06

so with that all being said here i

play02:09

really want to introduce this idea of

play02:10

thinking more methodically right so if

play02:12

you're going to solve problems you

play02:13

have to think more methodically which is

play02:16

basically means

play02:17

you have more structure to how you think

play02:18

you're more orderly in your thoughts

play02:21

and i think the best way to demonstrate

play02:23

this for if this doesn't really make

play02:24

sense

play02:25

is to think about a scientist and adopt

play02:28

what i would call a scientist mindset

play02:29

when it comes to programming

play02:31

so scientists like you know go back to

play02:33

your high school days when you're

play02:34

learning about chemistry when you're in

play02:35

the lab and you're mixing elements and

play02:37

you're recording everything

play02:38

that's basically the way that you want

play02:40

to be as a software developer just like

play02:42

if a scientist had a problem right to

play02:44

say they wanted to create gold

play02:46

from just random elements in the

play02:48

periodic table which is a really cool

play02:49

idea by the way you should definitely do

play02:50

this

play02:51

hint it's not possible so say you wanted

play02:54

to do that you'd set up an experiment

play02:55

where you mix

play02:56

certain amounts of two elements and you

play02:58

try to make gold now

play03:00

if that didn't work you'd examine and

play03:02

try to figure out why didn't that work

play03:03

when i mix

play03:04

nitrogen and oxygen together obviously

play03:06

that didn't work why didn't that work

play03:07

maybe you'd come up with another

play03:08

hypothesis

play03:09

maybe you change the amounts the the

play03:11

chemical amounts and try to mix it again

play03:13

and see what happened and you keep doing

play03:14

that over

play03:15

and over and over again and the

play03:17

scientific method is a good

play03:19

analog to software development and

play03:21

thinking more methodically right so

play03:23

a lot of people when they get into this

play03:25

they struggle with

play03:26

learning to code because they learn the

play03:27

syntax but when it comes to the actual

play03:29

problem solving part of it

play03:31

they don't have an ordered and

play03:32

structured way of thinking about things

play03:34

so that's the first thing i really want

play03:35

to plant in your head as far as thinking

play03:37

more like a programmer now before we go

play03:39

on to my next point here i just want to

play03:40

briefly stop and say if you've enjoyed

play03:42

this video thus far please go ahead and

play03:43

go

play03:44

down and smash that like button below

play03:46

also if you haven't subscribed to my

play03:48

channel i cover

play03:49

all things self-taught programmer

play03:51

related so definitely go down there and

play03:52

smash the subscribe button

play03:54

also make sure to hit the bell icon so

play03:56

you get notifications anytime i put out

play03:58

a new

play03:58

video okay so if you understand that

play04:01

thinking like a programmer means being a

play04:03

good problem solver and thinking

play04:04

methodically well from there then the

play04:07

next thing that i noticed that really

play04:08

separates

play04:09

a lot of what i call amateurs like

play04:11

people who are just struggling to learn

play04:12

to code they're watching tutorials not

play04:14

really getting it

play04:14

to those who are starting to get

play04:16

traction and is really starting to

play04:17

understand how to think more like a

play04:19

programmer

play04:20

it's really about breaking down problems

play04:22

like big problems

play04:23

into smaller problems right so you bring

play04:25

break down something big into its

play04:26

smaller

play04:27

little requisite parts and this is

play04:28

called decomposition

play04:30

just like when a leaf falls from a tree

play04:32

and it dies it breaks down into its

play04:34

smallest parts its elements

play04:36

its cells that's the same way that you

play04:38

want to approach

play04:39

problem solving i've worked with so many

play04:41

people when i signed them a really hard

play04:43

project to do a really hard problem to

play04:45

solve

play04:46

the most people just get overwhelmed by

play04:48

it right they see that there's a really

play04:49

hard problem it's a really big

play04:51

project they get overwhelmed they're

play04:52

like i don't even know what to do

play04:54

well what they're the problem with them

play04:56

is they're seeing the problem as a whole

play04:58

they're seeing the project as

play04:59

in its hole in its entirety and they're

play05:02

unable to break that down into its

play05:03

smallest parts

play05:05

so when you have a problem when you have

play05:07

an application a project that you want

play05:09

to build instead of seeing it as this

play05:10

big problem you have to solve and

play05:12

not really knowing what to do you want

play05:14

to methodically break that down

play05:16

into its requisite parts and this is

play05:18

what programmers do really really well

play05:19

they don't see an application they see

play05:21

some

play05:21

they see something a piece of software

play05:23

that does a bunch of stuff and hey maybe

play05:24

it has a user interface

play05:26

so if you're going to build a let's say

play05:28

an expense tracker right you want to

play05:29

keep track of your expenses on a

play05:31

day-to-day basis

play05:32

it's going to be really simple you have

play05:33

to think to yourself not only from a

play05:35

user interface perspective okay so if

play05:37

you're going to build the ui the look

play05:38

and feel of it you have to think

play05:40

like what are all the components going

play05:41

to be on the screen right so maybe

play05:43

you're going to have some inputs where

play05:45

you can input some information

play05:46

you have to figure out in your head okay

play05:47

where are they going to go and then how

play05:49

are you going to display

play05:50

that data they're going to be is going

play05:52

to be like a table there what are the

play05:53

columns in the table going to look like

play05:55

and how can i delete

play05:56

items from each one of those so they

play05:58

have to have a delete button

play05:59

can i edit each one of those so you

play06:01

start to think about this

play06:03

even if you think about it in your head

play06:04

you can just sort of see exactly what

play06:06

you need to do what the user interface

play06:08

is comprised of

play06:09

so that's sort of the what now each

play06:11

application or project that you're going

play06:13

to do is also going to have

play06:14

an action to it right what is it going

play06:16

to do

play06:18

right so for example your expense

play06:19

tracker application is going to allow a

play06:21

user to

play06:22

create an expense it's going to allow a

play06:24

user to edit an expense and it's going

play06:26

to allow a user to delete an expense now

play06:28

maybe you're going to add more than that

play06:30

maybe you're going to allow users to log

play06:31

in so we can save that to a database

play06:33

maybe maybe not but either way you're

play06:35

kind of deciding everything that your

play06:37

application is going to do because once

play06:38

you've broken this down into its

play06:40

requisite parts

play06:41

then it's a lot easier to not only

play06:43

approach building it right so you can go

play06:44

through one by one and sort of either

play06:46

build out the user interface or

play06:48

you can actually start creating the

play06:49

functionality right you can actually

play06:51

make

play06:51

the expense tracker create a new expense

play06:54

but even beyond that before you start

play06:55

writing any code you can see the big

play06:57

picture and see

play06:58

all the different parts and see what you

play07:00

maybe want to throw out and maybe if you

play07:01

are going to build this in a certain way

play07:03

because you see

play07:04

all of the different features that

play07:05

you're going to build so that's the

play07:06

first thing i've noticed about thinking

play07:08

more like a programmer is programmers

play07:10

are really good about not seeing

play07:12

everything as a whole

play07:13

they see thing as little tiny parts that

play07:15

they can go through one by one

play07:17

and build it out the last piece of the

play07:18

puzzle when it comes to thinking more

play07:20

like a programmer is

play07:21

by far the most challenging to i'd say

play07:23

explain but also the most challenging to

play07:25

actually adapt to your normal thought

play07:27

pattern

play07:28

the next thing i'm going to show you is

play07:30

really how to think algorithmically

play07:32

so thinking algorithmically is a fancy

play07:34

way of saying

play07:35

thinking more like a recipe right when

play07:37

you create a certain meal

play07:39

you follow a recipe that's basically

play07:41

what you do as a programmer you create a

play07:42

recipe to provide a

play07:44

specific result because if i'm going to

play07:46

create chili achilles one of my favorite

play07:47

dishes by the way definitely recommend

play07:49

it

play07:49

you know i know the certain amount of

play07:50

ingredients i have to have tortilla

play07:52

chips onions simmering sauce to name a

play07:54

few

play07:54

and i have to cook that in a very

play07:56

specific way if i don't cook that the

play07:58

exact way if i turn the temperature on a

play08:00

little too long or i cook it a little

play08:01

too long or the temperature's off or i

play08:03

mix the ingredients the wrong steps the

play08:05

wrong intervals the result i'm going to

play08:07

get is dramatically different from what

play08:08

i want

play08:09

and so this is really really important

play08:11

for you guys who are new

play08:13

and this is really important as well for

play08:14

why you want to start on simpler

play08:16

projects

play08:17

projects that are easier to do than

play08:19

jumping into some of the harder projects

play08:22

for example i assign people when i work

play08:24

with them one-on-one to do

play08:26

something like a to-do app for example

play08:28

one of the you know most common

play08:29

applications

play08:30

that you're going to do but what i'm

play08:31

able to observe when people first start

play08:33

coding is that they often assume that

play08:36

the computer

play08:37

knows what they want to do right they

play08:38

can sort of read their mind like hey

play08:40

when i press a button i want a

play08:41

thing to show up on the screen i want a

play08:43

little li a list item to show up on the

play08:45

screen

play08:45

and that's one of the problems that

play08:47

you're going to have instead of thinking

play08:49

that

play08:49

in order to show something on the screen

play08:51

i have to access the dom

play08:53

i have to create an li element i have to

play08:54

add some text into that li element

play08:56

you sort of just assume that the

play08:58

computer knows what you want to do

play09:00

and this is the the biggest leap and by

play09:02

the way all the stuff i'm explaining to

play09:04

you can't really be learned through a

play09:06

lecture i can't just go through a

play09:07

lecture and say okay here's how to think

play09:08

more algorithmically

play09:10

one of the things you have to do is just

play09:11

go and try to do it

play09:13

you have to learn the programming

play09:14

language the syntax better and it

play09:16

becomes more clear

play09:17

over time how you have to think more in

play09:19

terms of steps like step-by-step process

play09:22

as opposed to just like i write some

play09:23

code and it does what i want

play09:25

because if you've ever heard this term

play09:27

before i think i've said it on my

play09:28

channel a few times

play09:29

the computer is really dumb so you can

play09:32

write some software to the for the

play09:33

computer to

play09:34

do pretty much anything by the way like

play09:35

pretty much anything that you write

play09:37

and code can be done on a computer but

play09:40

the problem is that the computer doesn't

play09:41

ever really can't really guess what

play09:43

you're trying to think and that's where

play09:44

most people get wrong when they start

play09:45

getting into code is that they think

play09:47

that if they

play09:48

learn to the syntax of a programming

play09:50

language that

play09:51

that will be enough to get any outcome

play09:53

they want but they don't realize that

play09:54

they have to

play09:55

get the exact recipe down for whatever

play09:57

outcome they want whether it's

play09:58

to do app whether they want to create a

play10:00

financial trading application you can

play10:02

actually create bots now that

play10:03

you know trade currency and that sort of

play10:05

thing or trade stocks

play10:06

but you are the director of that and you

play10:08

have to really break that down into it

play10:10

step by step so that's where it sort of

play10:11

ties in with decomposition

play10:13

with thinking more methodically and

play10:14

thinking more algorithmically alrighty

play10:16

so those are my thoughts on how to think

play10:18

more like a programmer if you enjoyed

play10:20

the video or want to share your thoughts

play10:21

on how to think more like a programmer

play10:23

please go down below and leave me a

play10:25

comment other than that if you're

play10:27

interested in working with me in my

play10:29

mentorship program i will leave details

play10:31

down below in the description of how

play10:33

you can potentially join the program

play10:35

other than that thank you so much as

play10:36

always for watching and peace out

play10:37

everybody

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Programming MindsetSoftware DevelopmentProblem SolvingMethodical ThinkingDecompositionAlgorithmic ThinkingCode LearningDeveloper SkillsMentorship ProgramEducational Content