Послание будущим поколениям. Инженерный юмор

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

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

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

Я не знаю, по какому пути пойдет эволюция в дальнейшем, но хочу отметить еще один важный, на мой взгляд, момент. В наше время, несмотря на явную утилитарность кибернетических систем, среди ряда специалистов разработчиков наблюдается т.н. «тяга к прекрасному». Т.е. программа, по мнению разработчика должна не только выполнять требуемые функции, но и отвечать определенным эстетическим критериям. Что характерно - набор критериев весьма размыт, несмотря на многочисленные попытки формализовать красоту кода. Причем данная особенность существует не благодаря, а вопреки всей системе разработки, требующей в первую очередь результат и внешний лоск. Внутренняя гармония приносится в жертву грубой функциональности, внешней красоте интерфейса и подчас сложнейшей и громоздкой системе контроля пользовательских ошибок. Как результат – многие программы неплохо выглядят, выполняют свою работу, не дают пользователю даже малейшей возможности совершить ошибку (как впрочем, и любое нестандартное действие), но внутри ужасны. Даже их создатели, с глухой тоской озирая свое детище, приходят в уныние от испытываемого комплекса Франкенштейна.

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