Найти в Дзене

Дневник Python-разработчика. Неделя #12: Как смена подхода к языку заставила меня переписать весь код

Эту неделю я начал с непростого решения. Вместо того чтобы дорабатывать старую программу для изучения слов, я практически полностью её переписал. Причина - радикальная смена подхода к самому языку: я отказался от слов в пользу речевых фрагментов, "чанков". Переход на чанки оказался на удивление быстрым. За неделю я восстановил почти весь прежний функционал, но уже в новой логике. Осталось только добавить упражнения - и можно идти дальше. Я только начинаю погружаться в изучение языка через чанки, но уже могу сказать: этот подход мне нравится больше, чем зубрёжка отдельных слов и правил. Теперь я меньше думаю о том, как учить, и больше - о самом языке. Процесс стал естественнее, хотя и приходится ломать старые привычки - например, перестать выделять грамматику в отдельную тему. Всю прошлую неделю я готовился к практике: составлял план занятий и описывал, что буду делать. Главный вывод: практики должны быть максимально простыми, чтобы наконец-то начать заниматься, а не только планироват
Оглавление
Иллюстрация интерфейса до переделки программы и после
Иллюстрация интерфейса до переделки программы и после

Эту неделю я начал с непростого решения.

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

Причина - радикальная смена подхода к самому языку: я отказался от слов в пользу речевых фрагментов, "чанков".

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

Итоги недели:

1. Тестирование подхода к изучению языка при помощи речевые фрагменты (чанки).

Иллюстрация чанк в сравнении с отдельными словами
Иллюстрация чанк в сравнении с отдельными словами

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

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

Процесс стал естественнее, хотя и приходится ломать старые привычки - например, перестать выделять грамматику в отдельную тему.

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

Главный вывод: практики должны быть максимально простыми, чтобы наконец-то начать заниматься, а не только планировать.

За пару дней я собрал около 30 чанок - в основном на тему знакомства и приветствия.

На следующей неделе займусь их запоминанием и подробно расскажу о самом подходе в отдельном посте.

2. Добавление чанок в программу.

Так же просто красивая иллюстрация, без особого смысла.
Так же просто красивая иллюстрация, без особого смысла.

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

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

За неделю я восстановил почти весь функционал, который раньше работал для слов.

Опирался на уже написанный код, так что переход прошёл безболезненно.

Сейчас в программе можно:

  • добавлять чанки.
  • начинать изучение.
  • заполнять всю необходимую информацию о них.
  • присваивать им теги разных типов.

Осталось только добавить упражнение на запоминание - и можно двигаться дальше.

3. Смена подходов в разработке.

Иллюстрация интерфейса программы до смены подходов в разработке
Иллюстрация интерфейса программы до смены подходов в разработке
Иллюстрация интерфейса программы после смены подходов в разработке
Иллюстрация интерфейса программы после смены подходов в разработке

За эту неделю я сделал для себя ещё несколько важных открытий, которые в разы ускоряют разработку.

1. Сначала интерфейс, потом логика.

Теперь я сначала делаю интерфейс для конкретной задачи, потом - контроллеры, затем - сервисы и данные.

Так результат виден сразу, а мотивация не падает.

2. Отложить "красиво" на потом.

Я полностью отказался от разработки красивого интерфейса на старте.

Раньше мог потратить час-два на стили для одного модуля, сейчас уходит 10–20 минут.

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

3. Дробить интерфейс на объекты

В предыдущей версии программы, я поместил весь интерфейс для работы со словами в один класс - и написал 893 строки кода.

Я окончательно запутался в собственной логике, и продолжать разработку в таком виде стало невозможно.

Теперь для каждой части программы я создаю отдельный интерфейс в Qt Designer и отдельный класс в Python.

Коротко о том, почему я решил переписать код?

Так же просто иллюстрация.
Так же просто иллюстрация.

Нельзя сказать, что я писал всё с нуля. Я использовал всё, что мог, из старой версии. Например, система тегов осталась почти без изменений.

Но два фактора всё же заставили меня взяться за переделку:

1. Изменение предметной области.

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

2. Проблема монолитной структуры.

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

Итоги недели.

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

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

А как вы относитесь к радикальным изменениям в проектах?

Присоединяйтесь!

Иллюстрация; "Ну как тут можно не присоединиться?"
Иллюстрация; "Ну как тут можно не присоединиться?"

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

Если у вас есть опыт, мысли или вопросы по поводу перехода на изучение языка через чанки - оставляйте комментарии! Давайте обсудим разные подходы, поделимся мнениями и найдём лучшее решение вместе.

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