- PVSM.RU - https://www.pvsm.ru -

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

Повторение для программиста: почему важно решать схожие проблемы - 1

От переводчика: сегодня публикуем для вас статью [1] начинающего разработчика Эми Хаддад. В ней рассказывается, почему программистам стоит возвращаться к уже решенным проблемам.

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

Skillbox рекомендует: двухлетний практический курс «Я — веб-разработчик PRO» [2].

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

Знать то, что я не знаю

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

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

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

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

Старые проблемы, новые способы решения

Даже когда я помню свои действия при работе над задачей в первый раз, во второй я пытаюсь найти новый способ решения, чтобы улучшить навыки. К примеру, одну из проблем в коде я решила при помощи Loop. Во второй раз я нашла новое решение, а код стал более логичным и читаемым. Мне удалось на 50% уменьшить его объем на проблемном участке, и в итоге я получила не просто понимание того, как все должно работать, но и разобралась в нюансах процесса.

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

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

Изучение написания тестов

Сейчас я в третий раз читаю книгу Брайана Хогана Exercises for Programmers. Я разбираю его примеры и каждый раз стараюсь найти новое решение. На этот раз практикуюсь в написании собственных тестов.

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

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

Постоянное повторение упражнений позволяет формировать паттерны, которые откладываются в голове. Далее их можно использовать в качестве ментальной модели для решения новых проблем. Кстати, этот совет я видела в книге Джорджа Поля How to Solve It. Он советует при решении новой проблемы поискать связь с каким-либо уже имеющимся опытом.

«Подумайте о том, что помогло вам в аналогичной ситуации в прошлом. Поищите что-то знакомое в текущей проблеме, попробуйте использовать свой опыт».

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

Проработка проблем дает программисту много полезного. Мы формируем новые концепции, укрепляем старые и создаем базу знаний, которая затем является основой работы.

Skillbox рекомендует:

Автор: fokus-lop

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/302986

Ссылки в тексте:

[1] статью: https://medium.freecodecamp.org/why-i-recycle-programming-problems-7785e04e451d

[2] «Я — веб-разработчик PRO»: https://iamwebdev.skillbox.ru/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=WEBDEVPRO&utm_content=articles&utm_term=problemsrecycling

[3] «Мобильный разработчик PRO»: https://skillbox.ru/agima/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=AGIMA&utm_content=articles&utm_term=problemsrecycling

[4] «Профессия frontend-разработчик»: https://skillbox.ru/frontend-developer/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=FRENDEV&utm_content=articles&utm_term=problemsrecycling

[5] «PHP-разработчик с 0 до PRO»: https://skillbox.ru/php/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=PHPDEV&utm_content=articles&utm_term=problemsrecycling

[6] Источник: https://habr.com/post/433902/?utm_campaign=433902