что делать если не получается решить задачу по программированию

Думай как программист. Урок по решению задач

Если вы интересуетесь программированием, то возможно слышали фразу:

«Каждый должен учиться программированию, потому что оно учит думать.»

Наверное вы тоже задавались вопросом, что значит думать как программист?

По сути, речь идет о более эффективном способе решения задач.

Данный пост ставит целью научить вас этому.

Прочтя его, вы более точно поймете, что нужно делать, чтоб находить лучшие решения.

Почему это важно?

Решение задач — это базовый навык.

Мы постоянно решаем задачи. Большие и маленькие. Как мы это делаем? Иногда хорошо… если повезет.

Если у вас нет системного подхода, то, вероятно, вы решаете задачи следующим образом (я так делал, когда только начинал кодить):

«Большинство работодателей считает более важным навык решения задач.

Умение решать задачи практически единогласно является самой важной способностью, которую ищут работодатели… Более важной, чем знание языков программирования, отладки и дизайна системы.

Демонстрация комплексного мышления и способность решать большие сложные задачи столь же ценны (если не больше), чем базовые технические навыки, необходимые для работы.»

Системный подход

Чтобы найти правильный подход, я последовал советам из книги Тима Феррисса об обучении «The 4-Hour Chef».

Это привело меня к интервью с двумя действительно впечатляющими людьми: C. Jordan Ball (занимает 1-е или 2-е место из 65 000 пользователей Coderbyte) и V. Anton Spraul (автор книги «Думай как программист. Креативный подход к созданию кода.»).

Я задал им одинаковые вопросы, и угадайте что? Их ответы были очень похожими!

Скоро вы тоже их узнаете.

Примечание: это не значит, что они все делают одинаково. Они разные люди, и вы отличаетесь от них. Но если начинать с правильных базовых принципов, то результат получится намного лучше и намного быстрее.

«Самая серьезная ошибка, которую я вижу у молодых программистов — это сосредоточеность на изучении синтаксиса, вместо изучения того, как решать задачи.»

Итак, что делать, когда вы сталкнетесь с новой задачей?

1. Понимание

Поймите, что конкретно нужно сделать. Большинство задач сложны, потому что вы их не понимаете (вот почему это первый шаг).

Как узнать, что вы поняли суть задачи? Попытайтесь объяснить её простым языком.

Вспомните случай, когда вы зациклились на задаче и начали объяснять её себе. В этот момент проявляются логические ошибки, которые вы не видели раньше.

Большинству программистов знакомо это чувство.

Вот почему вы должны описать свою задачу, нарисовать диаграмму или рассказать кому-то об этом (некоторые используют резиновую уточку).

“Если вы не можете объяснить что-то простым языком, то вы не понимаете этого.”

2. Планирование

Не начинайте решать задачу без плана, надеясь не запутаться в ней. Планируйте свое решение!

В программировании не надо «идти напролом». Дайте вашему мозгу время для анализа и обработки информации.

Чтобы получить хороший план, ответьте себе на простой вопрос:

«Подав на вход X, какие шаги нужно сделать, чтоб получить Y на выходе?»

Примечание: у программистов для этого есть отличный инструмент. Комментарии!

3. Декомпозиция

Это самый важный шаг. Будьте внимательны!

Не пытайтесь решить одну большую задачу.

Вместо этого разделите её на подзадачи. Решить их будет гораздо проще.

Затем решайте подзадачи, начиная с самых простых. Когда задача кажется простой, это значит, что вы знаете ответ (или близки к нему).

Решайте каждую подзадачу независимо от других и после решения объедините результаты.

Соединение всех маленьких задач даст вам решение исходной.
Поздравляем!

Этот метод является краеугольным камнем решения задач. Запомните это (перечитайте этот шаг, если нужно).

Если я мог бы научить каждого молодого программиста навыкам решения задач, это уменьшило бы колличество технического долга.

Предположим, что необходимо написать программу, которая берет 10 цифр и возвращает третье по величине. Для новичка это может стать сложной задачей, хотя требует только знаний базового синтаксиса.

Если вы застряли, то надо упрощать. Вместо третьего по величине числа, как насчет нахождения самого большого? Все еще слишком сложно? Как найти самое большое из трех чисел? Или больше из двух?

Уменьшайте задачу пока не поймете как её решить. Запишите решение. Затем разворачивайте задачу до момента, пока не вернетесь к начальному вопросу.

4. Застряли?

Сейчас вы вероятно сидите и думаете: «Эй, это все круто, но что если я не смогу решить эту задачу?».

Прежде всего сделайте глубокий вдох. Не волнуйтесь. Это происходит со всеми!

Разница лишь в том, что лучшие программисты фиксили баги и решали задачи с интересом, а не с раздражением.

На самом деле, вот три вещи, которые нужно попробовать сделать, когда сталкиваетесь со сложностями:

«Искуство отладки заключается в выяснении разницы того, что вы написали в программе, и того, что вы хотели написать»

«Иногда мы так сильно углубляемся в детали, что не учитываем общие принципы, с помощью которых можно решить задачу на более высоком уровне. [. ]

Классическим примером этого, конечно же, является суммирование длинного списка последовательных целых чисел 1 + 2 + 3 +… + n, который молодой Гаусс легко посчитал по формуле n (n + 1) / 2, избежав проблем, связанных с увеличением количества элементов»

Предостережение: Не ищите решение большой задачи. Ищите решения только для маленьких подзадач. Почему? Если вы не будете напрягаться (хотя-бы немного), то не узнаете ничего нового. Если вы ничего не узнали, то зря потратили время.

Практика

Не надейтесь стать профессионалом через неделю. Для того, чтоб хорошо решать задачи, нужно решить много задач!

Практика. Практика. И еще раз практика. Только со временем вы сможете сказать: «Эта задача может быть легко решена с помощью ».

Как тренироваться? Есть интеренсые варианты!

Шахматные головоломки, математические задачи, судоку, го, монополия, видео игры и т.д.

На самом деле, общая практика среди успешных людей — это их привычка «решать микрозадачи». Например, Питер Тиль играет в шахматы, а Илон Маск играет в видеоигры.

Байрон Ривз сказал: «Если вы хотите посмотреть, как могут выглядить руководители бизнеса через три-пять лет, посмотрите в онлайн-играх».

Быстрая перемотка вперед. Илон Маск, Рид Хоффман, Марк Цукерберг и многие другие говорят, что игры были основополагающими для их успеха в создании своих компаний.

Значит ли это, что вы должны только играть в игры? Конечно нет.

Но в чем суть большинства игр? Правильно, в решении задач!

Так что же должно быть в практических занятиях. Что-то, что позволит вам решать много микрозадач (и в идеале это вам нравится).

Например, мне нравятся задачи по программированию. И каждый день я пытаюсь решить хотя бы одну (в основном на Coderbyte).

Как я уже сказал, все задачи имеют сходные модели решения.

Вывод

Теперь вы знаете, что значит «думать как программист».

Вы также знаете, что решение задач — невероятный (базовый) навык, который надо развивать.

Обратите внимание, теперь вы также знаете, как практиковать свои навыки решения задач!

Наконец, я хочу, чтобы вы столкнулись с множеством задач.

«Когда вы думаете, что успешно преодолели одно препятствие, появляется другое. Но именно это делает жизнь интересной. [. ]

Жизнь — это процесс преодоления препятствий — укреплений, через которые мы должны прорваться.

С каждым разом вы узнаете что-то новое.

С каждым разом вы будете развивать силу, мудрость и перспективы.

С каждым разом будет все меньше конкуренов. И в конце останется только ваша улучшеная версия.»

Теперь идите решать задачи!

И пусть вам сопутствует удача!

Особая благодарность C. Jordan Ball и V. Anton Spraul. За полезные совет которые они дали.

Кроме того, я не мог бы преобрести своих знаний в области программирования так быстро без Lambda School. Не могу не поблагодарить и не рекомендовать их.

Источник

Как учиться программировать: 6 вещей, которые я понял, учась на Хекслете

Когда я только начинал изучать программирование, у меня голова была забита кучей неверных представлений о профессии программиста и о том, как и что нужно учить. Со временем я понял несколько важных вещей, которые, если б я узнал это раньше, очень сильно упростили и ускорили бы мое обучение.

Большинство этих вещей до меня дошли именно в процессе обучения и общения с ребятами-программистами на Хекслете. Для кого-то это явно будут откровения Капитана Очевидность, но, возможно, кому-то оно и принесет пользу.

Какой язык программирования изучать первым? Неважно!

Не нужно тратить сильно много времени на выбор и мучаться этим. Берите Ruby, Python, JavaScript, PHP, Java, Lisp, да хоть паскаль — не ошибетесь. Для начала вам все равно нужно будет освоить базовые вещи, такие как циклы, условия, переменные, функции, объекты, рекурсию и т.п. Я когда-то в школе немного программировал на всяких бейсиках и C++, но к тому времени, как решил стать программистом, все это успешно забыл.

Начал изучение с Java, и не жалею, после этого было легче изучать менее строгие языки, вроде JS и PHP. Минус Java в том, что, если вы живете не в милионнике, вам будет весьма сложно найти на нем работу джуниора и получается, что обучение какое-то бесцельное, ради обучения, что сильно снижает мотивацию. В то время, как изучая PHP, например, уже очень быстро можно брать какие-то первые заказы на фрилансе, устроиться на первую работу в веб-студию и т.п., т.е. начать на своем хобби зарабатывать первые деньги, что очень сильно поднимает мотивацию.

Новички так серьезно подходят к вопросу «Какой же язык программирования выбрать», будто им предстоит подписать договор с дьяволом, и всю жизнь писать только на этом единожды выбранном языке. Лично для меня просветлением стало, когда я увидел профили высокооплачиваемых программистов на бирже Upwork, почему-то очень во многих из них было написано примерно следующее — могу Django, могу Rails, а еще Meteor и Angular, да и Spring тоже. И Joomla само собой.

Потом я спрашивал некоторых знакомых (и малознакомых) программистов об их карьере, и увидел некий паттерн, которого раньше не понимал. Человек может, например, год работать с PHP, потом уйти на Java, потом плюнуть и выучить руби, стать RoR разработчиком, и в итоге заняться Node.js или Clojure. Любой нормальный программист знает несколько языков хорошо и десяток поверхностно. Поэтому не ломайте голову, не пытайтесь выбрать Самый Лучший Язык и строчить для этого тысяча первый вопрос на тостере. Просто берите любой язык и прочитайте по нему хотя бы одну книгу/пройдите курс. Попытки выбрать Самый Лучший Фреймворк из той же серии.

Про первую работу

Очень многие программисты начинают свою работу с весьма непрестижных компаний и крошечных зарплат. И это нормально. Но это сложно принять, особенно тем, кто решает «войти в айти» уже не в юном возрасте, имея семью и детей. Мифам об огромных зарплатах программистов зачастую способствуют школы программирования, которым нужно продавать свои курсы и в итоге на своих лендингах они крупным шрифтом пишут какие-то заоблачные цифры, вроде «средняя зарплата JavaScript программиста 150 000 рублей», при этом часто забывают сказать, что такую зарплату получают люди с опытом в несколько лет (или даже десяток лет), которые могут решать реальные сложные задачи, а вам после их курсов на старте светит тысяч 30 на испытательный срок, и это в Москве. А то и вообще попросят бесплатно поработать. За опыт и еду. Не нужно бояться идти на непрестижную и малооплачиваемую работу, потому что как только вы официально начнете работать программистом, даже за 20 тысяч в месяц, ваша привлекательность в глазах других работодателей и HRов сильно вырастет. На старте работу никто не мешает менять хоть каждые 3-6 месяцев, каждый раз уходя на бОльшую зарплату и более интересные задачи.

Но я, конечно же, не говорю, что нужно идти работать за еду, может конкретно вы найдете первую работу и за 100 000 в месяц. Просто нужно понять, что карьера тоже требует немалых усилий, и необходимо активно изучать рынок труда, время от времени общаться с рекрутерами и ходить на собеседования, чтобы адекватно себя оценивать в каждый момент времени. А первая работа — это не навсегда.

Учиться программировать сложно

В процессе учебы должны быть моменты, когда мозг напрягается, и вам кажется, что вы ничего не понимаете. Если все получается легко и без напряга, значит вы учитесь не программировать, а повторять за диктором. Если привести грубую аналогию, вас учат не плавать, а шевелить ногами, лежа на песочке. Конечно, возможно, что вы гений и вам просто все легко дается. Чтобы реально оценить свои способности, сходите на пару-тройку собеседований по изучаемому языку программирования и попытайтесь выполнить тестовые задания, которые вам дадут.

Лично я долго (слишком долго) учился на всяких курсах из серии «посмотри на меня, делай как я». Когда начал учиться на Хекслете, у меня от некоторых заданий просто мозг кипел, да и сейчас кипит. Одно задание я пытался сделать 3 дня. Но в итоге я прокачался, и теперь могу решать более сложные задания, чем раньше. Мне кажется, именно в этом должна быть цель хороших курсов программирования. Не в том, чтобы натренировать вашу память на запоминание 1000 функций из какой-то библиотеки. А в том, чтобы заставить мозг напрягаться и с каждым днем решать все более сложные задачи.

Про code kata

На определенном этапе (почти сразу после изучения основного синтаксиса одного из языков программирования), нужно набить руку в решении простых (хотя бы простых, для начала), алгоритмических задачек. Есть десятки разных сервисов, где это можно делать — codewars.com, exercism.io, hackerrank.com и т.п. Проскочить этот этап не получится. Если вы зашли на codewars и просто не понимаете, что от вас хотят, и как решать даже самые простые задачи первых уровней, срочно вливайтесь в какое-то сообщество, где есть программисты и единомышленники, изучающие программирование, и где можно будет задавать вопросы и получать помощь. Одно из таких мест — слак чат Хекслета. Если вы не научитесь решать эти простые задания, вероятность резиста того, что вы сможете решать какие-то реальные рабочие задачи, крайне мала.

Не нужно зубрить названия функций

Смысл вообще не в этом. Это дошло до меня как-то внезапно и совсем недавно. Вообще не надо пытаться насильно их запомнить. Я пытаюсь понять смысл, построить какую-то абстракцию, грубо говоря, сформулировать для себя общую концепцию того, что изучил.

Кстати, это очень полезная штука и для изучения иностранных языков, я лично просто ненавижу делать какие-то списки, карточки и зубрить слова. Особенно у меня вызывают желание ругаться матом наборы слов, вырванные из контекста, типа «100 прилагательных на тему Погода». Это просто нереально запомнить, а даже если и зазубрил сегодня, через месяц 80 процентов забудешь. Гораздо эффективнее просто читать/смотреть интересный тебе контент на языке и искать незнакомые слова в словаре каждый раз, таким образом через какое-то время самые употребительные слова запоминаются естественным образом.

В общем, при изучении очередной фишки языка программирования достаточно понять в целом, что оно делает, и знать, как это загуглить.

Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.

Тупить — это нормально. (с) Елена Малышева

То есть люди, которые занимались программированием много лет, иногда тоже не могут самостоятельно разобраться в какой-то новой фиче, и совершенно не стесняются просить совета и помощи. Однако, с вероятностью 99% предварительно они пытались сами решить эту проблему, обратились к Google и Stackoverflow, но безуспешно.

Поэтому если вы пытаетесь стать программистом с нуля, вообще не парьтесь о том, что что-то непонятно и не ставьте на себе крест, вам должно быть очень многое непонятно! Не стесняйтесь задавать много вопросов, ну и гугл ваш лучший друг. Сперва всегда пытайтесь решить свои вопросы самостоятельно, а потом просите помощи, при этом желательно расписать, что вы уже пробовали для решения проблемы.

Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях

Источник

Как решать задачи на программирование

Перевод статьи «How to Solve Coding Problems with a Simple Four Step Method».

Я потратила два месяца на подготовку к своему первому техническому собеседованию и думала, что уже готова. Но когда подошла к нему уже вплотную, внезапно меня озарило: я ж понятия не имею, как решать задачи на программирование.

Ни в одном туториале из тех, по которым я училась программированию, не рассказывалось о решении задач. А мне определенно нужно было овладеть этим искусством: от этого зависела вся моя будущая карьера разработчика. И я немедленно взялась за поиски.

То, что я нашла, было не просто подходом, а бесценной стратегией. Это был проверенный временем алгоритм действий в четыре шага, который по какой-то причине остался незамеченным в сфере разработки.

В этой статье я подробно расскажу об этой стратегии, чтобы и вы могли начать уверенно подходить к решению задач на программирование.

Решение задач — это не только часть процедуры собеседований. Это то, чем разработчики занимаются ежедневно. В конечном итоге, само написание кода — это и есть решение задач.

Универсальный подход к решению задач

Этот метод изложен в книге «Как решать задачу» Дьёрдя Пойа. Первое издание вышло еще в 1945 году, было продано больше миллиона экземпляров. (На русском языке книга публиковалась как пособие для учителей еще в 1959 году. — Прим. перев.).

Метод Пойа используют многие программисты, от профессоров информатики (см. курс «Intro to CS» на Udacity, который ведет профессор Дэвид Эванс) до преподавателей современной веб-разработки вроде Кольта Стила.

Давайте пройдемся по решению простой задачи на программирование с применением метода Пойа. Это позволит увидеть работу метода на практике и в результате лучше разобраться в нем. Для примера будем использовать язык JavaScript.

Создайте функцию, которая будет складывать два числа и возвращать их сумму.

Вот четыре шага по решению любой задачи:

«Во-первых, мы должны понять задачу; мы должны ясно видеть, что в ней является искомым. Во-вторых, мы должны усмотреть, как связаны друг с другом различные элементы задачи, как неизвестное связано с данными. Это необходимо, чтобы получить представление о решении, чтобы составить план. В-третьих, мы осуществляем наш план. В-четвертых, оглядываясь назад на полученное решение, мы вновь изучаем и анализируем его», — «Как решать задачу», 1959 г.

Давайте сделаем первый шаг.

Шаг 1: понять задачу

Когда вы на собеседовании получаете задачу на программирование, возникает соблазн тут же приступить к написанию кода. Этому искушению трудно противостоять, особенно, если время ограничено.

Тем не менее, постарайтесь удержаться. Прежде чем приступать к решению задачи, убедитесь, что вы хорошо поняли, что от вас требуется.

Прочтите текст задачи. Можно даже читать вслух, если это поможет вам притормозить.

Прочитав текст задачи, выясните все моменты, которые вам не понятны. Если дело происходит на собеседовании, можно задать уточняющие вопросы интервьюеру. Если вы решаете задачу в гордом одиночестве, обдумайте непонятные части или даже поищите в Google ответы на возникшие вопросы.

Этот первый шаг жизненно важен. Мы часто не уделяем достаточного количества времени на то, чтобы разобраться в постановке задачи. А если вы не до конца понимаете задачу, вам будет куда труднее ее решить.

Чтобы помочь себе разобраться, спросите себя:

Каковы здесь входящие данные?

Какого рода input-ы следует ожидать? В нашем примере это аргументы, принимаемые функцией.

Читая текст задачи, мы понимаем, что входящими данными будут числа. Если подходить к делу более скрупулезно, мы можем спросить:

Эти вопросы мы можем задать интервьюеру или поискать ответ в описании задачи. (К задаче может прилагаться примечание типа «Исходите из того, что в функцию всегда будут передаваться только два числа». Конечно, это сразу все прояснит).

Можно задаться и другими вопросами. Всегда ли входящими данными будут числа? Что должна делать функция, если получит в качестве аргументов «a» и «b»? Уточните, всегда ли input будет числовым.

В качестве варианта — можно записать вероятные входящие данные в комментарии к коду, чтобы иметь представление о том, как они должны выглядеть.

Далее следует спросить себя:

Каковы должны быть результаты?

Что функция будет возвращать? В нашем случае это должно быть оно число — сумма двух чисел, переданных в качестве аргументов. Убедитесь, что вы хорошо понимаете, каким должен быть output.

Придумайте простые примеры

Разобравшись в сути задачи и зная вероятные input-ы и output-ы, можно начать работать над конкретными примерами.

Примеры также могут использоваться для тестирования вашего решения. На техническом собеседовании или при подготовке к нему на сайтах вроде Codewars или HackerRank используются специальные редакторы. Большинство из них содержат уже готовые примеры или test cases. Несмотря на это, написание собственных примеров может помочь вам упрочить понимание задачи.

Начните с написания одного-двух простых примеров.

Давайте вернемся к нашей складывающей функции. Назовем ее «add».

Каким может быть input? Ну, допустим, таким:

Каким будет результат при таких входящих данных? Записать это можно так:

Это показывает, что наша функция принимает в качестве input 2 и 3, а как output возвращает 5.

Придумайте сложные примеры

Продумывая более сложные примеры, вы можете уделить время поиску крайних случаев, которые стоит учесть.

Например, что будет, если наши входящие данные будут не числами, а строками? Что, если мы получим в качестве аргументов две строки, например, add(‘a’, ‘b’)?

Ваш интервьюер может сказать вам вернуть сообщение об ошибке, если входящих данных не будет или если они будут не того типа. В таком случае вы можете добавить соответствующий комментарий — в качестве напоминания себе.

Как вариант, интервьюер может сказать, что входящие данные всегда будут числами. В таком случае вам не понадобится писать никакой дополнительный код для обработки этого крайнего случая.

Если вы не на собеседовании, а просто решаете задачу, в ней может быть обозначено, что должно происходить при вводе невалидных данных.

Например, в задаче может говориться «При отсутствии input-а верните undefined». В таком случае можно написать комментарий:

В нашем случае мы будем исходить из того, что input всегда будет числовым. Но в общем всегда лучше подумать о крайних случаях.

Профессор информатики Эванс советует писать т. н. безопасный код. Всегда думайте о том, что может пойти не по плану и как защитить свой код от возможных ошибок.

Прежде чем перейти ко второму шагу, давайте кратко повторим, что нужно сделать на первом шаге:

Шаг 2: разработать план решения задачи

Далее нужно составить план того, как вы, собственно, собираетесь решать задачу. Придумав план, запишите его в виде псевдокода.

Псевдокод — это изложенные простым языком шаги алгоритма. Иными словами, это пошаговый план решения задачи.

Опишите каждый этап решения. Если задача сложная, этапов может быть много. Если говорить о нашей задаче, мы можем написать:

Теперь у вас есть четырехэтапный план решения задачи.

Для более сложных задач профессор Эванс советует: «Полагайтесь на то, как задачи решаются людьми». То есть, забудьте на мгновение о том, как задачу может решить код, и подумайте о том, как ее решали бы вы — человек. Это может помочь вам более четко увидеть нужные шаги.

3. Шаг 3: осуществить план (решить задачу!)

Следующий шаг — собственно решение задачи. Руководствуясь псевдокодом, напишите настоящий код.

Профессор Эванс рекомендует сфокусироваться на простом, механическом решении. Чем проще и легче ваше решение, тем вероятнее, что вы напишете код правильно.

Если взять наш псевдокод, мы можем написать следующее:

Помните, что не следует преждевременно оптимизировать код. Написав решение, вы можете подумать, что ваш код неэффективный, и захотеть его улучшить. Но для начала создайте простое, механическое решение.

Что, если вы не можете решить задачу полностью? Например, если вы так и не нашли решения для какой-то ее части? Кольт Стил советует в таких ситуациях игнорировать эту сложную часть. Сконцентрируйтесь на всем остальном — том, что вы уже можете написать. Когда напишете, возвращайтесь к части, которая вызвала у вас затруднения.

Шаг 4: оглянуться назад

Когда у вас на руках будет готовое рабочее решение, подумайте, как его можно улучшить. На этом этапе можно провести рефакторинг и преобразовать свое решение в более эффективное.

Просматривая свою работу, вы можете задать себе несколько вопросов:

Возвращаясь к нашему коду, мы можем сделать его более лаконичным, если удалим нашу переменную и используем имплицитный return:

Дойдя до четвертого шага, вы понимаете, что можете никогда не довести свое решение до совершенства. Даже великие разработчики пишут код, который впоследствии хотят изменить. Так что вопросы из приведенного списка — лишь направляющие, которые могут вам помочь.

Если вы решаете задачу на собеседовании, то для четвертого шага у вас может просто не остаться времени. Впрочем, если время есть, попробуйте улучшить свое решение. Ну а если вы просто решаете какую-нибудь задачу, обязательно проходите все описанные шаги.

Когда я практиковалась в решении задач, я практически всегда смотрела и чужие решения, которые часто были элегантнее и эффективнее моих.

Итоги

В этой статье мы рассмотрели четырехэтапную стратегию решения задач на программирование. Давайте повторим:

Применение этого подхода очень помогло мне при прохождении технических собеседований, да и вообще в моей работе.

Если вы не чувствуете себя уверенно, решая задачи, помните, что умение решать задачи — это навык. Чем больше практики, тем лучше вам это будет удаваться.

Источник

Операционные системы и программное обеспечение