0% found this document useful (0 votes)
318 views6 pages

Think Like Programmers

Uploaded by

demesit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
318 views6 pages

Think Like Programmers

Uploaded by

demesit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.

ru

Искать в блогах... 

Разработка (/blog/list?specializationid=2)
QA (/blog/list?specializationid=1)
DevOps (/blog/list?specializationid=3)

Дизайн (/blog/list?specializationid=4)
GameDev (/blog/list?specializationid=5)
SEO (/blog/list?specializationid=6)

Безопасность (/blog/list?specializationid=Security)

IT-блоги (/blog/list) • THINK LIKE PROGRAMMERS


dev.to (/blog/list?blogid=218)
7 сентября 2021 г.
(https://dev.to/yasinmillers/think-like-programmers-26h8)

VK.COM TWITTER LINKEDIN FACEBOOK EMAIL


(MAILTO:?
(HTTPS://VK.COM/SHARE.PHP? (HTTPS://TWITTER.COM/INTENT/TWEET?
(HTTPS://WWW.LINKEDIN.COM/SHAREARTICLE?
(HTTPS://WWW.FACEBOOK.COM/SHARER/SHARER.PHP?
SUBJECT=THINK LIKE
URL=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
TEXT=THINK+LIKE+PROGRAMMERS:MINI=TRUE&URL=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878&TITLE=THINK+LIKE+PROGRAMMERS
U=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
PROGRAMMERS&BODY=IF
HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
YOU’RE INTERESTED IN YOU’RE INTERESTED IN
PROGRAMMING, YOU MAY PROGRAMMING, YOU MAY
WELL
If you’re interested in programming, you may well have seenQUOTE HAVE SEEN
this quote THIS
before: WELL HAVE SEEN THIS
BEFORE: QUOTE BEFORE:
“EVERYONE IN THIS “EVERYONE IN THIS
“Everyone in this country should learn to program a computer,COUNTRY because
SHOULD it teaches you to think.” — Steve Jobs

LEARN COUNTRY SHOULD LEARN


You probably also wondered what does it mean, exactly, to think like a programmer?
TO PROGRAM A And how do you do it?? TO PROGRAM A
COMPUTER, BECAUSE IT COMPUTER, BECAUSE IT
Essentially, it’s all about a more effective way for problemTEACHES
solving. YOU TO THINK.”
— STEVE JOBS
YOU
TEACHES YOU TO THINK.”
— STEVE JOBS
YOU
PROBABLY ALSO PROBABLY ALSO
In this post, my goal is to teach you that way. WONDERED WHAT DOES WONDERED WHAT DOES
IT MEAN, EXACT ...) IT MEAN, EXACT ...
By the end of it, you’ll know exactly what steps to take to be a better problem-solver. HTTPS://DEVSDAY.RU/BLOG/DE

Why is this important?

Problem solving is the meta-skill.


We all have problems. Big and small. How we deal with them is sometimes, well…pretty random.
Unless you have a system, this is probably how you “solve” problems (which is what I did when I started coding):
Try a solution.

If that doesn’t work, try another one.

If that doesn’t work, repeat step 2 until you luck out.

Look, sometimes you luck out. But that is the worst way to solve problems! And it’s a huge, huge waste of time.
The best way involves a) having a framework and b) practicing it.
“Almost all employers prioritize problem-solving skills first.

Problem-solving skills are almost unanimously the most important qualification that employers look for….more than programming
languages proficiency, debugging, and system design.

Demonstrating computational thinking or the ability to break down large, complex problems is just as valuable (if not more so) than
the baseline technical skills required for a job.” — Hacker Rank (2018 Developer Skills Report)

Have a framework

To find the right framework, I followed the advice in Tim Ferriss’ book on learning, “The 4-Hour Chef”.
It led me to interview two really impressive people: C. Jordan Ball (ranked 1st or 2nd out of 65,000+ users on Coderbyte), and V.
Anton Spraul (author of the book “Think Like a Programmer: An Introduction to Creative Problem Solving”).
I asked them the same questions, and guess what? Their answers were pretty similar!
Soon, you too will know them.
Sidenote: this doesn’t mean they did everything the same way. Everyone is different. You’ll be different. But if you start with
principles we all agree are good, you’ll get a lot further a lot quicker.

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 1/6
9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.ru

“The biggest mistake I see new programmers make is focusing on learning syntax instead of learning how to solve problems.” — V.
Anton Spraul

So, what should you do when you encounter a new problem?


Here are the steps:
1. Understand
Know exactly what is being asked. Most hard problems are hard because you don’t understand them (hence why
this is the first step).
How to know when you understand a problem? When you can explain it in plain English.
Do you remember being stuck on a problem, you start explaining it, and you instantly see holes in the logic you didn’t see before?
Most programmers know this feeling.
This is why you should write down your problem, doodle a diagram, or tell someone else about it (or thing… some people use a
rubber duck).
“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman
1. Plan
Don’t dive right into solving without a plan (and somehow hope you can muddle your way through). Plan your solution!
Nothing can help you if you can’t write down the exact steps.
In programming, this means don’t start hacking straight away. Give your brain time to analyze the problem and process the
information.
To get a good plan, answer this question:
“Given input X, what are the steps necessary to return output Y?”
Sidenote: Programmers have a great tool to help them with this… Comments!
1. Divide
Pay attention. This is the most important step of all.
Do not try to solve one big problem. You will cry.
Instead, break it into sub-problems. These sub-problems are much easier to solve.
Then, solve each sub-problem one by one. Begin with the simplest. Simplest means you know the answer (or are closer to that
answer).
After that, simplest means this sub-problem being solved doesn’t depend on others being solved.
Once you solved every sub-problem, connect the dots.
Connecting all your “sub-solutions” will give you the solution to the original problem. Congratulations!
This technique is a cornerstone of problem-solving. Remember it (read this step again, if you must).
“If I could teach every beginning programmer one problem-solving skill, it would be the ‘reduce the problem technique.’

For example, suppose you’re a new programmer and you’re asked to write a program that reads ten numbers and figures out
which number is the third highest. For a brand-new programmer, that can be a tough assignment, even though it only requires
basic programming syntax.

If you’re stuck, you should reduce the problem to something simpler. Instead of the third-highest number, what about finding the
highest overall? Still too tough? What about finding the largest of just three numbers? Or the larger of two?

Reduce the problem to the point where you know how to solve it and write the solution. Then expand the problem slightly and
rewrite the solution to match, and keep going until you are back where you started.” — V. Anton Spraul
1. Stuck?
By now, you’re probably sitting there thinking “Hey Richard... That’s cool and all, but what if I’m stuck and can’t even
solve a sub-problem??”
First off, take a deep breath. Second, that’s fair.
Don’t worry though, friend. This happens to everyone!
The difference is the best programmers/problem-solvers are more curious about bugs/errors than irritated.
In fact, here are three things to try when facing a whammy:

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 2/6
9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.ru

Debug: Go step by step through your solution trying to find where you went wrong. Programmers call this debugging (in fact, this is
all a debugger does).

“The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.”” —
Andrew Singer

Reassess: Take a step back. Look at the problem from another perspective. Is there anything that can be abstracted to a more
general approach?

“Sometimes we get so lost in the details of a problem that we overlook general principles that would solve the problem at a more
general level. […]

The classic example of this, of course, is the summation of a long list of consecutive integers,

1 + 2 + 3 + … + n,

which a very young Gauss quickly recognized was simply n(n+1)/2, thus avoiding the effort of having to do the addition.” — C.
Jordan Ball

Sidenote: Another way of reassessing is starting anew. Delete everything and begin again with fresh eyes. I’m serious. You’ll be
dumbfounded at how effective this is.
Research: Ahh, good ol’ Google. You read that right. No matter what problem you have, someone has probably solved it. Find that
person/ solution. In fact, do this even if you solved the problem! (You can learn a lot from other people’s solutions).

Caveat: Don’t look for a solution to the big problem. Only look for solutions to sub-problems. Why? Because unless you struggle
(even a little bit), you won’t learn anything. If you don’t learn anything, you wasted your time.
Practice

Don’t expect to be great after just one week. If you want to be a good problem-solver, solve a lot of problems!
Practice. Practice. Practice. It’ll only be a matter of time before you recognize that “this problem could easily be solved with .”
How to practice? There are options out the wazoo!
Chess puzzles, math problems, Sudoku, Go, Monopoly, video-games, cryptokitties, bla… bla… bla….
In fact, a common pattern amongst successful people is their habit of practicing “micro problem-solving.” For example, Peter Thiel
plays chess, and Elon Musk plays video-games.
“Byron Reeves said ‘If you want to see what business leadership may look like in three to five years, look at what’s happening in
online games.’

Fast-forward to today. Elon [Musk], Reid [Hoffman], Mark Zuckerberg and many others say that games have been foundational to
their success in building their companies.” — Mary Meeker (2017 internet trends report)

Does this mean you should just play video-games? Not at all.
But what are video-games all about? That’s right, problem-solving!
So, what you should do is find an outlet to practice. Something that allows you to solve many micro-problems (ideally, something
you enjoy).
For example, I enjoy coding challenges. Every day, I try to solve at least one challenge (usually on Coderbyte).
Like I said, all problems share similar patterns.
Conclusion

That’s all folks!


Now, you know better what it means to “think like a programmer.”
You also know that problem-solving is an incredible skill to cultivate (the meta-skill).
As if that wasn’t enough, notice how you also know what to do to practice your problem-solving skills!
Phew… Pretty cool right?
Finally, I wish you encounter many problems and solve them

(https://dev.to/#special-thanks-to-richard-reis)
Special thanks to Richard Reis
Источник: dev.to (https://dev.to/yasinmillers/think-like-programmers-26h8)

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 3/6
9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.ru

Наш сайт является информационным посредником (/info/Status). Сообщить (mailto:support@devsday.ru) о нарушении


авторских прав.

VK.COM TWITTER LINKEDIN FACEBOOK EMAIL


(MAILTO:?
(HTTPS://VK.COM/SHARE.PHP? (HTTPS://TWITTER.COM/INTENT/TWEET?
(HTTPS://WWW.LINKEDIN.COM/SHAREARTICLE?
(HTTPS://WWW.FACEBOOK.COM/SHARER/SHARER.PHP?
SUBJECT=THINK LIKE
URL=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
TEXT=THINK+LIKE+PROGRAMMERS: MINI=TRUE&URL=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878&TITLE=THINK+LIKE+PROGRAMMERS
U=HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
PROGRAMMERS&BODY=IF
HTTPS://DEVSDAY.RU/BLOG/DETAILS/59878)
YOU’RE INTERESTED IN YOU’RE INTERESTED IN
PROGRAMMING, YOU MAY PROGRAMMING, YOU MAY
Вам нужен JavaSEEN
WELL HAVE developer?
QUOTE BEFORE:
THIS WELL HAVE SEEN THIS
QUOTE BEFORE:
“EVERYONE IN THIS “EVERYONE IN THIS
COUNTRY SHOULD LEARN COUNTRY SHOULD LEARN
РАЗМЕСТИТЕ ВАКАНСИЮ (/PRODUCTS/WEBSTORE)
TO PROGRAM A TO PROGRAM A
COMPUTER, BECAUSE IT COMPUTER, BECAUSE IT
TEACHES YOU TO THINK.” TEACHES YOU TO THINK.”
— STEVE JOBS
YOU — STEVE JOBS
YOU
PROBABLY ALSO PROBABLY ALSO
WONDERED WHAT DOES WONDERED WHAT DOES
IT MEAN, EXACT ...)
GeekBrains (https://ad.admitad.com/g/8qabvyx02u3533bb267765a37ca03d/?i=4) IT MEAN, EXACT ...
HTTPS://DEVSDAY.RU/BLOG/DE

Вакансии
Entry Level JavaScript/.NET Программист (Стажировка) удаленно (/vacancy/details/84433) ANKO Technologies Corp
(/company/details/896428)
Менеджер интернет-магазина Instagram (/vacancy/details/84432) ELEMENT
(/company/details/896427)
Программист-стажер (/vacancy/details/84431) Growtask
(/company/details/893575)
Менеджер по работе с маркетплейсами (Ozon, WB, Яндекс маркет) (/vacancy/details/84430) Хрусталев В.В.
(/company/details/896426)
Middle Java Developer (/vacancy/details/84429) ООО "Лэмплайтер"
(/company/details/17573)
Просмотреть все (/vacancy/list/все-вакансии-в-IT)

GeekBrains (https://ad.admitad.com/g/amfjfrw3iy3533bb267765a37ca03d/?i=4)

Ищите работу в IT?

СОЗДАЙТЕ РЕЗЮМЕ
(/RESUME/CREATERESUME)

Отзывы о работе
Начинал свою работу в данной компании с момента ее основания (/reviews/details/5907)
(Epicmax)
(/companyrecall/list/17862)

Проработал в компании чуть больше 3х лет (/reviews/details/5906)


(Bamboo Group)
(/companyrecall/list/17705)

Компания предоставляет возможности роста как в материальном плане, так и в техническом (/reviews/details/5904)
(TargSoft)
(/companyrecall/list/18393)

Работаю тут уже год (/reviews/details/5905)


(Феленасофт)
(/companyrecall/list/8897)

Работа на ура (/reviews/details/5903)


(LATOKEN)
(/companyrecall/list/1502)

Просмотреть все отзывы (/reviews)

Обсуждение компаний

30-го июня 2021 в 14:06


Неопознанный опоссум → ISsoft (/Company/Details/17988)
Достаточно прочитать статью, недавно вышедшую тут, чтобы навсегда передумать идти работать сюда
(/companycomment/list/17988#comment2847)

22-го июня 2021 в 20:06


Alexander V → Netcracker Technology Corp. (/Company/Details/108)
Вообще то пол года уже прошло от этого коммента. Внимательней надо быть. ;-) Цветы обязательно куплю но по другому поводу. Возложить к памятнику тупо...
(/companycomment/list/108#comment2846)

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 4/6
9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.ru

21-го июня 2021 в 20:06


Lil_Punya → Netcracker Technology Corp. (/Company/Details/108)
Чувак, купи уже Юре цветы, торт и помаду, и помиритесь уже, как 2 гетеросексуальных мужчины из ИТ-сферы. Я уверен, он тебя простит
(/companycomment/list/108#comment2845)

Блоги

Кейс: Как с «Яндекс.Дзена» приходили самые дешевые лиды на покупку авто в лизинг (/blog/details/35213)

Google создал инструмент дополненной реальности, который покажет обратную сторону Земли (/blog/details/35225)

How to Optimize Core Web Vitals for WordPress (Ultimate Guide) (/blog/details/35219)

Improving UX of Medium Website // re-design (/blog/details/35220)

Хорошо ли вы понимаете маркетинговый сленг? Тест (/blog/details/35214)

Горящие события

8 сентября 2021 г.
- Киев
Space Demo Day | USF Acceleration 1.0 — 1991 Open Data Incubator (/event/details/17574)

8 сентября 2021 г.
- Онлайн-трансляция
FINTECH И INSURTECH, КАК ДРАЙВЕР IT ИННОВАЦИЙ
(/event/details/17713)

8 сентября 2021 г.
- Онлайн-трансляция
Курс "Старт в Data Engineering"
(/event/details/17501)

8 сентября 2021 г.
- минск
QA Z-Day 2021: глубокое погружение в мир QA! (/event/details/17789)

8 сентября 2021 г.
- Online
IT talk: “Why the World Needs Fewer Pie Charts. Examples based on Pandemic Tracking Sites” (/event/details/17605)

8 сентября 2021 г.
- Онлайн-трансляция
Cloud & DevOps Internship
(/event/details/17689)

8 сентября 2021 г.
- Online
Курс “Introduction to Deep Learning for Computer Vision” (/event/details/16964)

8 сентября 2021 г.
- Online
Webinar “Variadic templates. Magic & truth behind std::tuple & std::variant” (/event/details/17709)

Просмотреть все события (/event/list/)

Новости

Стал известен российский участник раунда F инвестирования в edtech-платформу Udemy (/news/details/435128)

It Takes Two Review – Love is a Multi-Genre Thing (/news/details/435132)

Украинские YouTube-каналы популярны во всем мире (/news/details/435121)

Первый суперкомпьютер Aurora на ускорителях Intel Ponte Vecchio появится к концу 2021 года (/news/details/435124)

Purple Fox Malware Targets Windows Machines With New Worm Capabilities (/news/details/435125)

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 5/6
9/8/21, 11:37 PM THINK LIKE PROGRAMMERS | DevsDay.ru

Соглашение (/info/agreement) О проекте (/info/aboutus) ВКонтакте


Правила (/info/usage) Контакты (/info/contact) (https://vk.com/devsday)
Безопасность (/info/confidential) Тарифы (/products/webstore) Facebook
О статусе информационного посредника (/info/Status) (https://www.facebook.com/devsday.ru
Twitter
(https://twitter.com/devsday_ru)
RSS
(https://feeds.feedburner.com/devsday

© 2017 - 2021 DevsDay.Ru

Privacy and cookie settings

Managed by Google. Complies with IAB TCF. CMP ID: 300

https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 6/6

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy