Пусть всё и закончилось провалом, но в процессе я получил крутой опыт. Я был ответственен за данные тысяч пользователей и понимал, что если их потеряю — не каждый захочет разбираться и большая часть аудитории просто перестанет пользоваться ботом.
А ещё я узнал многое о коде. Например, благодаря одной архитектурной идее однажды мне удалось выбросить около двух тысяч строк кода из проекта всего за один вечер, ничего не потеряв. Бот работал как и прежде. А ещё позже я понял, что сделал это зря :D Я получил более «сухую» кодовую базу, но вместе с этим потерял в гибкости: код стало очень сложно менять и поддерживать.
Для маленького проекта гибкость изменений куда важнее «сухости» кодовой базы. О том, как и зачем я нарушаю принцип DRY, читайте другой мой
материал в блоге «Девмана».
Будучи новичком, я пытался писать как можно более «сложный» код. Он будто кричал: «Мой создатель столько всего умеет! Возьмите его на работу!». Но со временем понял, что
простой код лучше, чем сложный. Со сложным кодом тяжело работать, его тяжелее поддерживать и в нём выплывают неожиданные ошибки. И к чему сложность, если от неё только хуже? Оказывается, к этому заключению пришёл не только я, но и многие другие опытные разработчики, о чём я узнал уже позже — в своих первых рабочих командах.
Бот дал крутой буст моему резюме. Разработчик, который уже делал продукты и на вопросы об архитектуре отвечал не выученными формулировками из гугла, а выстраданными часами личного опыта, выглядел сильнее других кандидатов. Опыт чистоты кода, набитый на своих ошибках, а не на книге Роберта Мартина «Чистый код», выглядел убедительнее.
А ещё это было интересно. Я получал удовольствие от развития своего продукта, какое не получишь ни на какой лекции или вебинаре.
Спустя время я работаю на
онлайн-курсе по Python, который учит начинающих программистов на практике. Мы решаем ту самую проблему, о которой я говорил в начале: предлагаем ученикам интересные, но при этом посильные проекты. А чтобы ученик не упустил «шишки», которые должен был набить, в конце его код смотрит опытный программист. Понятно, что, если ученик прислал задачу на проверку, код уже должен работать. Ревьюер смотрит на качество кода и указывает ученику на ошибки, подобные тем, что я описал в этой статье.