Так зачем же мы пишем этот плохой код, который изо дня в день замедляет нашу работу?
Потому, что мы тогда вынуждены были сделать что-то быстрее!
Я оставлю вас наедине с это логической несостыковкой…
На одной из лекций Роберта Мартина
У нас на DevConf будет не самый обычный мастер-класс. Там не будут рассказывать о новых технологиях или хайлоаде. Будут говорить о коде. Хорошем, плохом. Называется он Принципы хорошего кода на реальных примерах. Расспросим немного автора.
Что тебя побудило на такой мастер-класс?
Удрученность текущей ситуации в отрасли. Все одержимы технологиями. В последнее время облачными. Читаешь вакансию, перечисляют используемые технологии, необходимый опыт(который почти никогда, на самом деле, не нужен). Очень круто звучит на собеседованиях. Приходишь на проект. Смотришь на код… и он печально говорит тебе: «Пристрели меня». Смотришь глубже и понимаешь всю его печаль. Он смертельно болен. Как раковые опухоли разрослись классы, которые кто-то, словно в шутку, назвал контроллерами. Как метастазы везде расползлись копипасты. На психологию кода давит то, что он лишь жалкая обвязка для крутых облачных технологий. Но пристрелить дорого.
Мы тут прерывались на хабракат, но ты продолжай
Приходится засучить рукава и убирать копипасты, уменьшать контроллеры до пары-тройки методов с 3-4 строками. Раскидывать логику, инфраструктуру по нужным классам. Хорошо хоть менеджмент проектов всегда одобрял такие правки. Но приходишь на новый проект и там опять тоже самое. Я боюсь, что эта проблема становится все глубже. Я работал 6 лет в большой компании(>1000 сотрудников), которая много вкладывала в обучение своих сотрудников. И это совсем не то обучение, которое нужно! Все эти курсы опять-таки про технологии. Правильно писать код там не учат, даже наоборот. Смотришь примеры кода, которые там показывают и это тот самый, зараженный код, который грозит превратиться в вышеописанный.
Что видит человек, только собирающийся стать программистом? Видит список технологий, которые необходимо изучить. И все! Изредка кто-то поумнее все-таки посоветует прочесть Рефакторинг или Совершенный код. Но этого недостаточно.
Что же ты предлагаешь?
Предложить мне пока особо нечего. Я поделюсь тем, с чем мне приходилось сталкиваться на проектах. Что побудило так написать. Как это исправить и самое важное — как так не писать. Примерный план: для чего и как отделять логику от инфраструктуры, валидация где и когда, неиспользуемая мощь эксепшенов, паттерны, юнит-тесты, etc. Я, если честно, пока не представляю сколько материала я смогу уместить, поэтому этот план весьма примерный.
Есть ли у нас какой-то шанс на светлое будущее?
Я надеюсь. Отрасль потихоньку выходит из хаоса. Создаются специальные обучающие IT-институты. Когда-нибудь сформируется стандарт обучения, где подобно шаблонам проектирования, но гораздо шире и глубже охватят стандартные задачи и пути их решения. Я был бы чрезвычайно рад, если бы были созданы и стали популярны сервисы, подобно Codility, но проверяющие не способность быстро решать задачи олимпиадного типа, а способность грамотно написать код для обычной задачи, автоматически проверив правильность разделки задачи по частям(классам). Чуть более интеллектуально, чем параметры типа cyclomatic complexity.
Если есть желание, приходите послушать. DevConf в этом году проводится совместно с YiiConf.
16 июня пройдет YiiConf.
17 июня — DevConf.
18 июня — день мастер-классов для обеих конференций.
Программа YiiConf уже сформирована. По докладам DevConf пока идет голосование. Успейте приобрести билеты по майским ценам.
Автор: DevConf