Расскажу про то, как в настоящее время происходит программирование. Неважно на каком проекте, неважно на каком языке программирования. Опишу лишь общую концепцию программирования.
Так получилось, что я руковожу программистами. Боясь показаться хвастуном скажу, что я отлично знаю программирование. Но при этом я абсолютно не понимаю, зачем программисты-профессионалы используют слишком сложные способы программирования. Потому что зачастую их способы приводят к полному или частичному фиаско. В этой статье поясню почему.
Если устроить конкурс между мной и профессиональным программистом на написание кода, то код профессионала получится длиной 20 строк. А мой код будет в десять раз длинее — под 200 строк. Почему? Я не использую сложные способы программирования.
Намного лучше написать пятьдесят условий if и сотню циклов, чем сделать рекурсивную хитро закрученную функцию со сложным наследованием, завёрнутую в штопор логики. Потому что при смене компилятора (версии программного обеспечения), такой код перестанет работать. Да, такой код компактнее. И можно поспорить над тем, что он лучше читается. Но чтобы его модифицировать, надо переписывать всё с нуля. А если появится баг в виде непредвиденного поведения — это вообще боль, которая не пройдёт ещё долго, потому что найти проблему будет сложно.
Для работы программистов профессионалов я могу придумать аналогию. Представьте, что Вы их попросили облегчить процесс подъёма по ступенькам лестницы. Невероятно умные ребята программисты начали последовательно выполнять задачу. Сначала они предложили сделать перила, за которые можно держаться при подъёме на лестницу. Идея отличная!
Но программисты не остановились, потому что задача выполнена не до конца — всё ещё можно сильнее облегчить процесс подъёма. Для этого они предложили повесить сверху верёвочную лестницу, за жерди которой нужно цепляться второй рукой. Одной рукой держишь перила, а второй жердь. Двумя руками намного легче цепляться и тянуть, чем одной.
Вы можете согласиться. Пускай будет верёвочная лестница. Если кто-то не хочет за неё цепляться, то пусть берётся за поручень. Либо используют оба способа. Но программисты возразят. Ведь нужны правила подъёма, чтобы пользователи на нанесли вред сами себе! Для этого все должны держаться и за поручень, и за лестницу одновременно. А чтобы все делали это, программисты поставили рядом с лестницей мужика с электрошокером, который будет пропускать разряд через людей, если они не держатся двумя руками. Ведь они могут навредить себе ещё больше, если упадут.
Но и на этом программисты не остановятся. Они скажут, что все должны идти с одинаковой скоростью, чтобы система не сломалась. Если один будет подниматься по лестнице быстрее остальных, то будет давка. Чтобы решить эту проблему, программисты попросили мужика с электрошокером использовать боксёрский приём и отправлять в нокаут пользователя, который создаёт такую давку. Причем бить так, чтобы он падал с лестницы вниз и в полёте не задевал других.
После всего сделанного программистами, Вы внимательно смотрите на них и спрашиваете: «А может всё-таки остановимся на обычных перилах?». После чего сразу ловите на себе гневные взгляды: «Мы — программисты. А ты — идиот, который ничего не понимает». Вы успокаиваете их и думаете: «Да, скорее всего я не прав. У меня недостаточно опыта, а они программисты-профессионалы». Затем оставляете программистов на неделю, уходя по личным делам.
Через неделю Вы хотите сдать проект заказчику, приходите на место работ и видите картину: лестница, поручень, верёвочная лестница сверху. Рядом довольный мужик с электрошокером и набитым до красноты кулаком. Под лестницой распласталась груда тел программистов-профессионалов с исковерканными от боксёрского удара лицами. На лестнице обугленные тела программистов-профессионалов, от которых медленно поднимается серый дымок, и проскакивают электрически разряды. Никто не двигается. Проект не сделан. Работа не идёт. Полный штиль.
Мораль: программистов-профессионалов надо останавливать, как только необходимые и достаточные условия с точки зрения адекватного человека были выполнены.