Begin /* Очевидность

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

Когда же код, написанный личной мной, начал попадать в бой и к коллегам, то стало понятно, что код то в основном пишут как раз не те люди, которые публикуют книги и статьи, а вот такие же джуны. Средний кодер любого, сколь угодного крупного и серьезного проекта по определению джун. Их просто больше. Да, где-то мельком встречаются кусочки написанные более опытными товарищами, но их откровенно мало и они то чаще всего и представляют из себя скорее какие-нибудь библиотечки и фреймворки - не бизнес логика, не конкретные реализации и не все эти кошмарные базы данных.

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

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

Как выйти из такого порочного круга не очень очевидно. Можно сделать над собой усилие и привести всё в порядок лично, потратив столько же, а может больше времени. Однако, непонятно кто за это будет платить, и не окажется ли так, что сам сеньор слишком много о себе думает, и еще через десять лет окажется, что и эту работу придется переделывать. Я даже уверен, что так оно часто и оказывается.

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

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

С другой стороны, есть и с этим определенная проблема. Ну, во-первых, встает вопрос повышения порога вхождения. Всё-таки очень сложные концепции лучше вносить постепенно. Нельзя сразу объяснить первокурснику, что школьная алгебра это только одна из многих придуманных позднее, что геометрий тоже несколько. А значит, нужно подходить к этому как-то системно и методично, а не путем составления ревью с замечанием к каждой строке кода. При неверном подходе можно наоборот сделать только хуже, отправляя джуна каждый раз в нокаут. Так можно и Паркинсона заработать.

Это порождает вторую проблему. Сеньору придется заниматься просветительской деятельностью практически профессионально. Иначе говоря, нужна специальная методика, знакомство с основами педагогики и психологии, практика выступлений и проведения семинаров. Классическая такая профессура. И это всё дополнительно к прямым обязанностям. Кто за это заплатит тоже не совсем очевидно. Должны ли входить такие вещи в должностные инструкции или это отдельно оплачиваемая деятельность.

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

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

*/
End.

Источник: https://habr.com/ru/articles/760004/


Интересные статьи

Интересные статьи

Краткий отчет по результатам. Сообщают, что льготной ипотекой воспользовалось несколько тысяч специалистов по всей стране. Много это или мало оценивать не возьмусь, но в паре крупных банков, не будем ...
В российском сегменте разработки программного обеспечения исторически сложилось так, что молодой разработчик подспудно считает, что программа написанная по заказу российской компании и для российского...
Всегда забавляют разные формулировки на тему нужна ли программисту математика. Учитывая что алгоритмы и логика, собственно и есть математика в самой её основе, тут впору поставить вопрос о том, что яв...
Оглядываясь вокруг нельзя не заметить, что отношение отечественных разработчиков к результатам собственного труда довольно сильно отличается от того чем руководствуются западные их коллеги. Меня могут...
Одна из самых простых и базовых концепций в программировании игр — это идея игрового цикла. При запуске вашего проекта происходит его инициализация, после чего игровой ци...