Как стать автором
Обновить

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

Время на прочтение 6 мин
Количество просмотров 99K
Всего голосов 36: ↑26 и ↓10 +16
Комментарии 82

Комментарии 82

Ох уж эти статьи, на 1/3 содержащие только мотивирующие цитатки Стетхема. По факту для любой области, где ты хочешь преуспеть нужно лишь 3 вещи: книга, практика и желание, все остальное это тренинги прямиком с лужников.
То есть если хочешь стать хирургом, то достаточно купить справочник и тесак? И можно прочесть и идти практиковаться?

Около пяти лет занимался программированием станков ЧПУ. И скажу что при ошибке в программе станка велика вероятность повредить оборудование, или нанести ущерб работающим людям.

Человек который считает, что достаточно прочесть книгу видимо никогда не делал ничего серьезного. Или является непризнаным гением.
Под книгой я подразумевал знания. Под практикой я подразумевал (как не странно) практику. Раньше хирургии по книгам некоторые обучались. Не беда. То что после специализированного учебного заведения выходят отменные специалисты я и не спорил.
Только вот в чем беда: после этой статьи человек станет хирургом? Тогда к чему вы ведете?
Веду к тому, что выше и написано, что надо практиковаться, но при этом систематически имея определенный подход и не сдаваться в случае затруднений.

Может у вас есть более полезные советы и своя стратегия изучения нового или книги достаточно?

То есть если хирургу напишут: "нужно что бы при операции руки не треслись", у него перестанут треслись руки? Это опыт и знания, полученные годами. Вся статья — компиляция из общих советов, которые архитипом откладываются в головах программистов, которые приходят со знаниями и и опытом. Я не вижу как она может помочь людям, которых действительно хотят программировать. А те, кто захотел перебраться из /вставьте нужную профессию/ во что то более хайповое и прибыльное нечего не вынесут из нее.
Ах да, если человека нет мотивации внутри, то никакие цитаты не помогут.

С таким подходом можно любую книгу. Например «Совершенный код» можно назвать сборником общих советов. Т.к. некоторые описаные там вещи довольно очевидны.

Может вы считаете, что патерны это тоже архитипы, и не стоит их изучать? Только практика из 1000 строк валидного кода запиханых в один класс или в одну функцию.

Я знаю и ведущих специалистов которые на практике за пять и более лет не научились декомпозировать методы и классы, и думаю для них данная инфа тоже была бы полезной.
Может вы считаете, что патерны это тоже архитипы, и не стоит их изучать?
Да, это на 100% верно, изучать их не стоит. Начинающим так вообще вредно.

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

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

Я знаю и ведущих специалистов которые на практике за пять и более лет не научились декомпозировать методы и классы
Этим людям не место в профессии, заучивание паттернов ситуацию не улучшит.
Иногда данный вовремя совет или пинок в нужном направлении экономит месяцы «нахождения опыта и прихождения понимания». Так, в свое время книга ВанТассела изрядно изменила стиль написания программ (причем почти у всей нашей компашки юных самодеятельных программистов). Книга Вирта дала много знаний о том, что «кроме пузырька есть и другие методы сортировки». а подсунутые инженерами кафедры задачки — увели от бессмысленного играния в самописные (гы, на фортране) игрульки…
многим из них уже даже не приходит в голову, что можно как-то по-своему сделать.
видел я «сделанные по своему» модули… креативность, совмещенная с безмозглостью — адская смесь. ну и «сделал по своему» — заставляет вспомнить фразу из анекдота «Штирлиц любил стоять на своём...»
Люди, которые вместо этого заучивают паттерны

Заучивание и изучение это немного разные вещи. Естественно не стоит зубрить все наизусть. Но читать и пытаться понять всегда полезно. Даже для джунов.

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

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

Если вас во время такой практики не посещает мысль, что 1000 строк в одном месте это так себе идея, вам выше кодера не подняться

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

P.S. А вы вышли за рамки шаблонов или потеряли возможность самостоятельно думать?
Заучивание и изучение это немного разные вещи
Да, но паттерны можно только заучить. Это же список примеров, как вы их хотите изучать?

Даже для джунов.
Ты вот откуда эти покалеченные джуны берутся.

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

Из моей практики. Разговоры про «креативный подход и мышление вне шаблонов» начинают обычно как раз те кто пишет такой код, и считает его уже идеальным.
Я на своей практике, еще не видел человека который бы любил паттерны и при этом мог грамотно что-то спроективровать

P.S. А вы вышли за рамки шаблонов или потеряли возможность самостоятельно думать?
По вашему вопросу видно, что вы уже не понимаете, как можно думать и проектировать не используя паттерны. Об этом разрушительном влиянии я и говорил.

Я учился программированию в те времена, когда паттерны за знания не считались
Да, но паттерны можно только заучить. Это же список примеров, как вы их хотите изучать?

Можно поинтересоваться а основные парадигмы ООП тоже не нужны?

Вы предлагаете изучать таблицу умножение вместо того чтобы изучать само умножение

Вы предлагаете умножать не зная таблицу умножения?

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

На перфокартах что-ли? Но и тогда были фундаментальные основы.
Вы предлагаете изучать таблицу умножение вместо того чтобы изучать само умножение
некоторые вещи надо знать. это не отменяет необходимость знания «как они получились такими», но избавляет от необходимости повторного изобретения велосипеда.
Эта статья — просто популистическая компиляция общих советов, прочтение которых ничего не даст никому. Я вообще не вижу в ней смысла, кроме «скромного» пиара очередной конторы по обучению программистов.
Программирование в первую очередь это борьба: поиск нужной информации, поиск решения нестандартных проблем и постоянная война с пк. Статьи вида «научим думать как программист», «обучим основам кодинга» в себе кроме как популизма не несут.
На счет обучения: я жил в местности, где не было интернета и ни одного человека, умеющего программировать. И это мне не помешало в 10том классе сверстать свой первый сайт и написать простенькие скрипты к нему.
Я это к чему: тому человеку, кто рвется вверх и хочет прогрессировать нужны лишь знания и практика. А тот, кому нужна мотивация и готовые ответы и с этой статьей далеко не уедут.
PS: почему я категорически настроен против: в статье нет ничего нового, а годной компиляцией назвать ее язык не поворачивается. По большому счету она ничем не отличается от бизнес-тренингов на которых тоже говорят общие вещи типа «экономьте»,«продумывайте» и прочее. Хорошо что хоть тут за прочтение копейку не взяли, и на том спасибо.
У вас реклама головного мозга. Эта ссылка является частью перевода. klimentRu спасибо за перевод. Эта статья является руководством по принципу «Разделяй и властвуй». Всё таки менеджеры не зря бутерброды кушают.
НЛО прилетело и опубликовало эту надпись здесь
Одно дело станок для хобби в гараже, другое промышленное оборудование со скоростью перемещения на ускоренном ходу до 30 м/мин. Пролетит перед глазами даже кнопку аварийного останова нажать не успеешь. Стоимостью одной фрезы 5 — 10 к рублей поломка которой уже является существенным косяком. И учитывая особенности обработки от аллюминия до титановых и жаропрочных сплавов. И точности обработки до пяти микрон. Технологического цикла в котором может быть задействовандо 5-10 человек и прочего.

Я не против книг. Как раз за них, но во многих случаях полезнее (особенно для начинающих) краткая инструкция и наставничество. Чтоб человек понимал основные алгоритмы и узкие места своей работы.
То есть если хочешь стать хирургом, то достаточно купить справочник и тесак? И можно прочесть и идти практиковаться?

Да. Только сначала на мышах и лягуша́х. В общем-то, когда хирургия была примерно на той стадии развития, на которой сейчас программирование, оно ведь как-то так и было. А если бы анатомия и физиология не стояли на месте, а изменялись так же, как компьютеры — то, подозреваю, как-то так было бы и до сих пор. Собственно, и со станками ЧПУ тоже можно, просто не надо начинать свою практику сразу с фрезы 30 м/мин.
Большинство работодателей считает более важным навык решения задач
Решение задач на собеседованиях — одна из худших практик в найме. Просто потому что собеседование это стрессовая ситуация, где требуется дать ответ отсносительно быстро. В реальной жизни для решения задачи нужно время, и спокойная обстановка, желательно без окружающих требующих от тебя ответа как можно скорее.

Дать ответ на задачу быстро в условиях стресса, может только человек, который эту задачу уже решал или знает ответ. Т.е. мы не проверяем то, как человек решает мыслит и рассуждает, а просто отбираем тех, кто такие типовые задачки задрачивает, посути это отрицательный отбор.
НЛО прилетело и опубликовало эту надпись здесь
Про собеседования нигде не написано. Имеется в виду, что разработчик должен комплексно подходить к поставленной задаче, и думать головой, а не просто уметь нажимать на кнопки.

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

Допустим, что нужно срочно сделать какую-то задачу на работе. Её дают вам, а вы говорите: «Извините не могу работать в условиях стресса. Только если я эту задачу раньше решал.» Так получается?
Нередко бывает, когда после серии «срочно сделать задачу» люди действительно увольняются.
Особенно, если оказывается, что задача нужна менеджеру для решения сиюминутной задачи, а потом отправляется в корзину.

Факторы стресса и стрессоустойчивости имеют место быть и должны учитываться обеими сторонами.
я иногда уточняю — «это задача разовая, редкая, или регулярная?» и не вижу ничего страшного в решении сиюминутных задач (иногда — просто отдаю слегка облагороженый результат запроса для разовых задач). и никаких проблем.
а вообще, вся жизнь — стресс. все мы когда-то что-то делаем впервые, все ошибаемся.
Имеется в виду, что разработчик должен комплексно подходить к поставленной задаче, и думать головой
А что, без этого как то можно разработчиком работать? Хотя если смотреть на нынешнее поколение девелоперлов…

Допустим, что нужно срочно сделать какую-то задачу на работе.
Есть разница между решением практической задачи в течении нескольких часов сидя в своем уютном кресле, и решением абстрактной задачи в течении двух минут под взором нескольких экзаменаторов. Это совсем разные вещи, на работе нужно первое, а на собесах проверяют второе.
Дать ответ на задачу быстро в условиях стресса, может только человек, который эту задачу уже решал или знает ответ
Если вы говорите про алгоритмические задачи на собеседованиях, то это не так. Подавляющее их большинство без проблем решается за отведенное на интервью время без предзнания.
Ага, только они потом нафиг не требуются, опять же, в большинстве компаний, однако они упорно их задают, теша свое самолюбие
Любое задание которое вы выполняете на работе это и есть задачи которые перед вами ставят. Только это задачи из реальной жизни. Суть статьи именно о них.

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

По моему опыту примерно 50% собеседуемых не могут ответить на элементарные вопросы, при этом хотят зп 100к +
Что вы понимаете под «элементарные вопросы»? Приведите пример.
Т.е. я правильно понимаю, что задачи, по типу олимпиадного программирования или нахождения производной в собеседовании на работу в обычную контору(банк, веб-приложение и т.п.), а не какой-нибудь рокет сайнс/блокчейн/ML/криптография/аналогичное, это нормально, а знание инструментов и фреймворков, с которыми придется работать, а также культура написания кода вовсе не важны на начальном этапе?
НЛО прилетело и опубликовало эту надпись здесь
Как я уже написал, не путайте знание инструментов и фреймворков для практической работы с алгоритмическими задачами про коня в вакууме там, где они точно не потребуются
НЛО прилетело и опубликовало эту надпись здесь
«алгоритмический конь в вакууме» — это когда ты приходишь на собеседование на условный проект по созданию приложения для складского учета, а тебя спрашивают про «как посчитать площадь стен домов в городе, чтобы рассчитать количество требуемой краски в литрах» или например про какую-нибудь производную… Вместо того, чтобы сделать акцент на структуры данных ЯП, который используется в проекте,
фреймворки, стиль написания кода, именование переменных/методов/классов, понимание того, какой жизненный цикл задачи, начиная от постановки аналитиком и заканчивая взаимодействием с QA
НЛО прилетело и опубликовало эту надпись здесь
Вы уже который раз повторяете это. Какая-то личная травма?
Это спрашивают в одном из банков, к примеру. я там не был, травма не моя, но мне рассказали
Это где такое справшивают?
Это просто пример. К такому же примеру я отношу вопросы про сортировки, графы, матрицы и другой матан. Повторюсь, я не про вакансии, где
рокет сайнс/блокчейн/ML/криптография/геймдев/социалки/аналогичное

Так именно это и спрашивают
Если бы только об этом спрашивали, я не стал бы приводить примеры
НЛО прилетело и опубликовало эту надпись здесь
Т.е. вы считаете, что я должен помнить всю вышку из универа? А если я все это время работал в обычном ынтырпрайзе и нигде это не было нужно, от слова совсем, а тут такое… Да, вы можете сказать, что описание вакансии как бы предполагает знание предметной области и поэтому мне сначала придется изучить все, что связано с трейдингом. Вы еще скажите, чтобы у меня было высшее образование по экономике, тогда точно я смогу общаться без проблем с людьми. Ну извините, не все обладают такой памятью и интересом к высшей математике
И кстати да, это совсем не технический бекграунд
НЛО прилетело и опубликовало эту надпись здесь
Ммм… Ну, у нас производные в школе давались, никак не в вузе.
Хрен редьки не слаще. В школе много чего давалось, однако это не означает, что мы обязаны все помнить на все случаи жизни.
Ну, программирование все же считается технической профессией, что подразумевает знания/способности/интерес к точным наукам обычно. Хотя как по мне спрашивать производную действительно смысла мало. Объяснить ее любому чайнику на простом уровне можно очень быстро, а более углубленные знания таким способом вообще не проверяются. К слову лично у меня этих углубленных особо и нет))
А на собеседовании их обычно задают для проверки уровня кандидата, а не для самолюбия.
Только таким образом проверяют умение решать типовые алгоритмические задачки на время, а не уровень кандидата
Если эти задачи задают, значит, лучше ничего не придумали для отсева. Ну и вполне есть места, где можно применять знания алгоритмов, не считая даже ежедневных решений типа «что мне здесь использовать, TreeMap или HashMap?»
значит, лучше ничего не придумали для отсева

Ха! Люди настолько ленивы, что им проще делать как все, чем подумать над тем, кто им конкретно нужен.
Ну и вполне есть места, где можно применять знания алгоритмов

А я и не говорю о таких местах, они безусловно есть и спрашивать там логично и правильно, но это меньшинство, а большинство спрашивает то, что у меньшинства, потом огребая тонны говнокода, багов и тратят время на обучение, после которого их успешно покидают в те самые места, которые меньшинство
Даже если вам кажется, что это школьная программа, так что, это должны все помнить до самой старости? По себе людей не судите, оглянитесь вокруг
Люди настолько ленивы, что им проще делать как все, чем подумать над тем, кто им конкретно нужен.
Кому лень, те постепенно разоряются, в бизнесе каждый день головой думать надо. А вот тех, кто собеседует по алгоритмам, с каждым годом все больше.
Даже если вам кажется, что это школьная программа, так что, это должны все помнить до самой старости?
Давайте вспомним, с чего началась ветка. Я спорю с конкретным утверждением:
Дать ответ на задачу быстро в условиях стресса, может только человек, который эту задачу уже решал или знает ответ
Оно не верно. Человек, прошедший подготовку, которую без проблем может пройти даже школьник, может решить задачу без предзнания. Это все, что я изначально хотел сказать.
Подавляющее их большинство без проблем решается за отведенное на интервью время без предзнания.
Не совсем. Если вы в свободное время, занимаетесь дрочерством таких задачек, то да, вы сможете быстро их решать. Но, как ниже отметили, к реальной практике это отношения не имеет.
Достаточно когда-то давно в школьном возрасте немного ими интересоваться и участвовать в школьных олимпиадах (по моему опыту). Несколько удивляет, когда люди называют крайне сложным то, что по плечу школьнику, при должной подготовке.
участвовать в школьных олимпиадах
Может еще надо было на пятерки учиться и не прогуливать?

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


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

Если эти задачи задают, значит, лучше ничего не придумали для отсева
Скорее это значит что интервьюер просто исптытывает интерес к таким задачам. На своей практике сталкивался с такими людьми, которые решение задачи на собесе ставили в приоритет остальным знаниям. Из десятка разрабов, нанятых таким способом, испыталку прошел один. И это не единственный пример
Может еще надо было на пятерки учиться и не прогуливать?
Школьные олимпиады — это достаточное условие, но ни в коем случае не необходимое. Просто для иллюстрации того факта, что нет ничего сложного в решении задач с собеседования за время собеседования. Поскольку это доступно даже школьнику.
Логики не прослеживается.
Логика очень проста: есть компании, которые спрашивают на собеседованиях олимпиадные задачи, а есть те, которые спрашивают что-нибудь другое. По моим субъективным наблюдениям, первых постепенно становится больше, чем вторых, и условия работы в них, как правило, лучше. Из чего я делаю вывод, что это более эффективный метод подбора персонала.
Из десятка разрабов, нанятых таким способом, испыталку прошел один
Давайте я тоже субъективный опыт приведу. Два этапа собеседования: онлайн-тест и очное собеседование в офисе. Пока тест был на реализацию «условно реальной» фичи, большинство участников очного собеседования были никакие. Когда тест был заменен на список «олимпиадных» задач, все до единого участники очного собеседования стали как минимум «нормальные», а многие и «хорошие».
Просто для иллюстрации того факта, что нет ничего сложного в решении задач с собеседования за время собеседования
Сложного ничего нет, но почему соискатель должен тратить свободное время на откровенную ерунду, непонятно

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

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

Давайте я тоже субъективный опыт приведу
Я вам объективный критерий в своем примере привел. А никакие, нормальные и хорошие это оценочные суждения. Расшифруйте что это значит.
почему соискатель должен тратить свободное время на откровенную ерунду, непонятно
Не должен. Если не хочет, может не тратить, его никто не заставляет.
Причина намного проще — это банальная мода.
Почему вы так считаете? Я, по опыту общения с владельцами бизнесов, могу сказать, что им постоянно нужно думать об эффективности, и неверное решение очень быстро может привести к краху. А еще я вижу в мире вокруг себя эксперименты — некоторые вон разработчиков нанимают даже по логам поисковых запросов. То есть, люди явно заинтересованы в повышении эффективности, ищут варианты, но, в основном, используют алгоритмические задачи. Неужели все дело только в моде?
за последние десять лет уровень среднего разраба сильно просел
Это противоречит моим наблюдениям.
никакие, нормальные и хорошие это оценочные суждения. Расшифруйте что это значит.
Объективно — конверсия на очном собеседовании выросла более, чем на порядок, без изменения его формата или критериев оценки.
Почему вы так считаете?
По опыту общения с теми, кто нанимает людей и дает задачки на собесах. Многие из них чуть ли не в прямую об этом говорят.

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

Объективно — конверсия на очном собеседовании выросла более, чем на порядок, без изменения его формата или критериев оценки.
Расшифруйте что такое никакие, нормальные и хорошие, про конверсию и так понятно. Какие именно у вас критерии оценки? Может вы их по решению задач оцениваете, ясное дело конверсия вырастет. В моем примере конверсия на собесах тоже была неплохая, только кандидаты работать не умели в итоге
По опыту общения с теми, кто нанимает людей и дает задачки на собесах
Я делаю противоположный вывод тоже по опыту общения с теми, кто собеседует и нанимает людей.
При росте количества новых разработчиков и уменьшении порога входа, средняя квалификация расти не может.
Появление новых, более простых, направлений, не означает, что снижаются требования в уже существующих.
Какие именно у вас критерии оценки? Может вы их по решению задач оцениваете, ясное дело конверсия вырастет.
Оценивались по знанию алгоритмов, знанию инструментов, умению мыслить (оцениваемому посредством прокси «умение рассуждать вслух»), умению построения архитектуры.
За время испытательного срока не отсеился никто, как до изменения формата теста, так и после.

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

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

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


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

НЛО прилетело и опубликовало эту надпись здесь

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

Видимо, у автора нет опыта применения своих советов. Иначе он показал бы хоть один конкретный пример.
Господин минусёр, а вы можете поделиться опытом применения этих советов?
Не берите близко к сердцу, когда автор статьи может максимум выразить свое несогласие «минусом» и сказать ему особо нечего, это очень красноречиво говорит о его уровне и качестве статьи.
А причем здесь автор? Это же перевод. Или автор свою статью на русский перевел?
«Каждый должен учиться программированию, потому что оно учит думать.» сказал дизайнер Стив Джобс

Потому что дизайнеру Джобсу нужны были подчинённые-программисты.
Вот он и учил их думать, что учит их думать. (А на самом деле, он учил их программировать на Джобса).

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

—  Richard Feynman

Это был Эйнштейн.
В оригинале:
If you can't explain it simply, you don't understand it well enough.

"Этим Фейнманом был Альберт Эйнштейн" :)))

Папа, как звали Бетховена?©
Был у меня приятель — Миша. Как-то в уже не очень сопливом возрасте, лет так в 16-17, подходит он к папе и спрашивает:
— Папа, а как звали Бетховена?
Папа, пожилой интеллигентный еврей, начинает на Мишу брызгать слюной:
— Миша, да как ты можешь! Ты же интеллигентный человек! Ты учишься в школе! Мы тебя воспитывали! Просто позор в таком возрасте этого не знать! Каждый должен впитать это с молоком матери!..
Ну и так далее. Потом, выговорившись, назидательным тоном:
— Запомни, Миша, Бетховена звали Иоганн… Себастьян… (Садится на стул, делает паузу секунд на 10...)… Бах.
©
«Каждый должен учиться программированию, потому что оно учит думать.»

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

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

В этом направлении есть отличные лекции по динамическому программированию. Можно поискать «Игорь Клейнер» на Ютубе.
У меня как уже иностранца в голове засел встречный вопрос — почему русскоязычники/люди-из-СНГ в среднем лучше кодят/соображают чем их собратья по цеху?

Жизнь такая .) Потому что собратья из СНГ воспитаны поколением, которому ничего нельзя было купить. Кто-то развивал коммуникативные навыки для добычи "того что нельзя достать", а кто-то искал альтернативные варианты решения задачи. Отсюда образ мышления, передавшийся с поколением. Первая мысль не "где я могу это купить", а "как я могу это сделать из говна и "

Так «кодят» или «соображают»? Это несколько разные вещи :)

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

А кроме ваших слов, это как-то еще подтверждается?
Мои умозаключения основаны на моем опыте — слышал от других, читал, замечал(живу в Европе). А по факту — единственное, что на ум ещё приходит это та же ежегодная олимпиада по программированию, где Россия занимает 7 лет подряд первые места
та же ежегодная олимпиада по программированию
Если вы про IOI, то там Россия, конечно, среди лидеров, но не на первом месте: таблица медалей, таблица выдающихся участников. А если вы про ACM ICPC, то там хорошо видно, что у нас есть лишь некоторые яркие школы, а средний уровень не так уж и высок: таблица лучших ВУЗов, там же чуть ниже — таблица числа чемпионств по странам.
Про ACM ICPC. Спасибо за обзор) А что про русских хакеров тогда? Они хотя бы в топе?
Я от этой темы далек. Ближайший ко мне специалист по компьютерной безопасности — бывший моссадовец. Но да, он этнический русский.
Может 70 лет тирании, диктатуры и идиотизма, а потом и последовавшие 15 лет нищеты, повысили шизоидность народа?

Э… А где здесь урок?


Лекцию мотивировочную вижу. А примеры, упражнения, разбор конкретных задач?

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

—  Hacker Rank (2018 Developer Skills Report)

Как неожиданно. Сайт с задачками утверждает, что главное в карьере — задачки…
То что мы каждый день делаем на работе это тоже задачи. И смысл в том, что надо понимать их суть в том числе со стороны бизнеса, и уметь разобраться и декомпозировать. А сайты с задачками как раз и помогают улучшать эти навыки.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории