Блог о том, как терпение и труд всё перетрут. Дмитрий Моисеев расскажет о важном обучении на курсах » Шаблоны корпоративных приложений»
Вот и закончились долгие два месяца обучения, результатами которых стало не столько получение сертификата об окончании курса, сколько знания и бесценный опыт в разработке корпоративных приложений.
Почему я пошел на курсы?
Сергея Немчинского, ведущего курса, заочно я знаю достаточно давно. Наткнулся на его видео, касающихся чистого кода, разработки корпоративных приложений, внутреннего маркетинга разработчика и т.п. Уже тогда его слова казались весьма полезными, потому что давали ответы на вопросы, которые так сильно волновали. А когда открылся набор на курс “Шаблоны корпоративных приложений”, я не смог пройти мимо.
Как вы наверное уже знаете, я работаю ведущим программистом в web-отделе ГК Март. Занимаюсь организацией технической части разработки всех web-приложений фирмы. Сюда входит декомпозиция предметной области (формализация того, что нужно сделать) и создание архитектуры системы (наиболее общее описание основных узлов и взаимодействий будущей программы), также создание конкретных задач для разработчиков, проверка их решений и выгрузка на боевой сервер.
Знаний в области архитектуры мне очень не хватало, а обратиться за советом было не к кому. Кроме того, в Марте достаточно большое количество разных систем, многие из которых весьма запутанные. Очень хотелось научиться приводить их в порядок и писать приложения так, чтобы они работали надежно, а разработка была качественной и быстрой.
Что это за курс?
“Шаблоны корпоративных приложений” — первый online-курс от компании, в которой работает Сергей. Ранее он проводился в очном режиме, и спустя некоторое время, разработчики решили выпустить его online-аналог. Подробнее о курсе можно прочитать тут.
Организация работы достаточно простая: есть личный кабинет (сайт на основе Moodle) в котором содержится сам курс, разбитый на блоки, а они на лекции и задания. Заходим, смотрим видео с лекцией по теме, отвечаем на вопросы и т.д. После ответов на вопросы, задания проверяются, выставляется оценка. Двигаемся дальше. Для общения с организатором и другими участниками курса используется slack — в нем есть общий и приватные чаты.
Практическая часть организована, наверное, наиболее удобным для программистов образом: issue — branch — merge request — discussion — close. Для тех, кто не очень знаком с данными определениями — все просто. Есть репозиторий где лежат исходные коды проекта. Для решения какого-то задания (issue) создается независимая ветка (branch), в ней ведется вся работа. Когда все сделано, создается заявка на слияние веток в общий репозиторий (merge request). Ответственный человек проверяет код, если что-то не так, создает дискуссии (discussion) на которые нужно ответить или отмечает что необходимо исправить. После того как все дискуссии закрыты, ветка сливается и merge закрывается (close). Настоятельно рекомендую всем, кто собирается заниматься программированием, познакомиться с этим процессом, т.к. практически все сообщество данной отрасли работает именно так (могут быть варианты в системе контроля версий, но в общем процесс одинаковый).
Мои впечатления
Несмотря на то, что это было первое знакомство с курсами такого рода, впечатления остались только положительные!
Объем материала в курсе достаточно большой. Это около 10-ти часов нарезанных видеолекций и 90 заданий. Цена же, наоборот, очень демократичная. Для меня, совершившего предзаказ, она оказалась почти в 2 дешевле чем курсы с GeekBrains, на которых 8 полуторачасовых занятий.
Очень много практической части. Из 90 занятий почти все — это “применить шаблон в таком-то проекте” вследствие чего кода писать нужно много. И это хорошо! Ближе к концу курса я начал потихоньку забывать первые шаблоны, страшно подумать, что было бы без практики. Благо материалы останутся со мной навсегда.
Сам материал построен на одной очень известной книге, и можно было бы сказать “зачем идти на курсы, если можно прочитать книгу?”. И я вам отвечу: в таком случае, у вас не будет учителя! Запомнить информацию не составляет труда, а кто проконтролирует ваше понимание? Ведь можно прочитать, неправильно понять и десятилетия использовать полученные данные неверно, не понимая почему ничего не получается. Курс же построен таким образом, что вначале вам расскажут о шаблоне, как и зачем его можно использовать на конкретных примерах. А затем, в ходе проверки вашего кода, укажут на неверное понимание шаблона, если такое будет. Также есть задания, контролирующие понимание, в них нужно ответить текстом на вопрос. Там вы не сможете сжульничать, ведь учитель быстро поймет что к чему.
Тема курса достаточно общая и применять знания можно в совершенно различных ситуациях. Так я, уже в первой трети обучения, стал использовать шаблоны при проектировании систем. Да, первые попытки были весьма неуклюжие и, возможно, избыточные. Это было не зря. Я (и надеюсь наша команда), теперь стал лучше понимать устройство фреймворков, которые мы используем, и почему они именно такие. Впереди еще очень большой путь шлифовки знаний и поиска оптимальных сочетаний, но теперь стало понятнее в каком направлении идти.
В заключении хочу сказать, что курс очень сильно повлиял на наш отдел уже сейчас. Стало намного больше “умной” терминологии, которая упрощает процесс коммуникации между разработчиками. Сейчас легче пишется архитектура проектов, особенно небольших, теперь она занимает пару абзацев, вместо огромных UML-диаграмм на несколько листов (см. пример).
В дальнейшем есть планы завести online-систему для обучения (на основе Moodle), в которой могут проходить занятия для наших сотрудников, новых учеников и, возможно, для всех желающих.
Таким образом, я могу смело утверждать, что мое негативное отношение к online-курсам начало меняться. Они могут быть полезными, если вы к этому готовы и нашли “правильного” учителя.