Эту неделю я начал с непростого решения.
Вместо того чтобы дорабатывать старую программу для изучения слов, я практически полностью её переписал.
Причина - радикальная смена подхода к самому языку: я отказался от слов в пользу речевых фрагментов, "чанков".
Переход на чанки оказался на удивление быстрым. За неделю я восстановил почти весь прежний функционал, но уже в новой логике. Осталось только добавить упражнения - и можно идти дальше.
Итоги недели:
1. Тестирование подхода к изучению языка при помощи речевые фрагменты (чанки).
Я только начинаю погружаться в изучение языка через чанки, но уже могу сказать: этот подход мне нравится больше, чем зубрёжка отдельных слов и правил.
Теперь я меньше думаю о том, как учить, и больше - о самом языке.
Процесс стал естественнее, хотя и приходится ломать старые привычки - например, перестать выделять грамматику в отдельную тему.
Всю прошлую неделю я готовился к практике: составлял план занятий и описывал, что буду делать.
Главный вывод: практики должны быть максимально простыми, чтобы наконец-то начать заниматься, а не только планировать.
За пару дней я собрал около 30 чанок - в основном на тему знакомства и приветствия.
На следующей неделе займусь их запоминанием и подробно расскажу о самом подходе в отдельном посте.
2. Добавление чанок в программу.
Я не стал встраивать чанки в старую версию, потому что они поменяли саму философию обучения. Пришлось начать почти с нуля.
Да, я понимал, что снова рискую забросить проект, но в этот раз справился и продолжаю работу.
За неделю я восстановил почти весь функционал, который раньше работал для слов.
Опирался на уже написанный код, так что переход прошёл безболезненно.
Сейчас в программе можно:
- добавлять чанки.
- начинать изучение.
- заполнять всю необходимую информацию о них.
- присваивать им теги разных типов.
Осталось только добавить упражнение на запоминание - и можно двигаться дальше.
3. Смена подходов в разработке.
За эту неделю я сделал для себя ещё несколько важных открытий, которые в разы ускоряют разработку.
1. Сначала интерфейс, потом логика.
Теперь я сначала делаю интерфейс для конкретной задачи, потом - контроллеры, затем - сервисы и данные.
Так результат виден сразу, а мотивация не падает.
2. Отложить "красиво" на потом.
Я полностью отказался от разработки красивого интерфейса на старте.
Раньше мог потратить час-два на стили для одного модуля, сейчас уходит 10–20 минут.
Программа выглядит просто, но функционал растёт быстро.
3. Дробить интерфейс на объекты
В предыдущей версии программы, я поместил весь интерфейс для работы со словами в один класс - и написал 893 строки кода.
Я окончательно запутался в собственной логике, и продолжать разработку в таком виде стало невозможно.
Теперь для каждой части программы я создаю отдельный интерфейс в Qt Designer и отдельный класс в Python.
Коротко о том, почему я решил переписать код?
Нельзя сказать, что я писал всё с нуля. Я использовал всё, что мог, из старой версии. Например, система тегов осталась почти без изменений.
Но два фактора всё же заставили меня взяться за переделку:
1. Изменение предметной области.
Раньше система работала с отдельными словами, но после перехода на чанки часть архитектуры перестала быть релевантной. Например, больше не нужна система для отработки грамматики - в подходе через чанки она усваивается естественно.
2. Проблема монолитной структуры.
Весь интерфейс в одном классе на 900 строк - это лабиринт, в котором теряешь понимание связей. Дальнейшее развитие стало практически невозможным без переписания кода.
Итоги недели.
Мне нравится, что я могу гибко менять подходы и без сожалений отказываться от решений, которые работают неэффективно.
Раньше я считал это слабостью - думал, что постоянная смена стратегий мешает прогрессу. Но на самом деле именно эта гибкость позволяет двигаться вперёд осознанно.
А как вы относитесь к радикальным изменениям в проектах?
Присоединяйтесь!
Подписывайтесь на мой Дзен-канал, где я делюсь итогами недели и ключевыми идеями по разработке.
Если у вас есть опыт, мысли или вопросы по поводу перехода на изучение языка через чанки - оставляйте комментарии! Давайте обсудим разные подходы, поделимся мнениями и найдём лучшее решение вместе.
Если пост оказался для вас полезным - поставьте лайк. Так я пойму, в каком направлении двигаться дальше, и буду чаще рассказывать о подобных практиках.