Think Like Programmers
Think Like Programmers
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)
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
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
(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
Вакансии
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)
СОЗДАЙТЕ РЕЗЮМЕ
(/RESUME/CREATERESUME)
Отзывы о работе
Начинал свою работу в данной компании с момента ее основания (/reviews/details/5907)
(Epicmax)
(/companyrecall/list/17862)
Компания предоставляет возможности роста как в материальном плане, так и в техническом (/reviews/details/5904)
(TargSoft)
(/companyrecall/list/18393)
Обсуждение компаний
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
Блоги
Кейс: Как с «Яндекс.Дзена» приходили самые дешевые лиды на покупку авто в лизинг (/blog/details/35213)
Google создал инструмент дополненной реальности, который покажет обратную сторону Земли (/blog/details/35225)
How to Optimize Core Web Vitals for WordPress (Ultimate Guide) (/blog/details/35219)
Горящие события
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)
Новости
Первый суперкомпьютер 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
https://devsday.ru/blog/details/59878?__cf_chl_managed_tk__=pmd_717viptI.8PxnpGfLQzU7gm.Cl030q_rLJ6PKlDE6zw-1631133324-… 6/6