Я сам являюсь поклонником мастерства разработки программного обеспечения и прочитал множество его определений. Будь то работы таких профессионалов, как Роберт С. Мартин (дядя Боб), Сандро Манкузо, или даже сотрудников и руководителей моей собственной организации. И хотя мы гордимся тем, что поддерживаем и развиваем культуру мастерства, как и любую другую культуру, она тоже должна развиваться как в своих темах, так и в форме. Иногда одни и те же старые метафоры и фразы могут превратиться в белый шум и не суметь должным образом передать важную идею. Итак, моя цель с этой идеей «Восстановления программного обеспечения» — дать новый и свежий взгляд на тему, с которой мы знакомы, и, возможно, узнать что-то новое в процессе.

Что стоит за программным мастерством?

Программное мастерство — это термин, который мы часто используем в отношении профессионализма. Мне нравится определять это как сочетание профессионализма и ответственности. Как разработчики программного обеспечения, мы склонны понимать ответственность. В его отсутствие некоторые из нас склонны терять интерес. Я считаю, что чувство смысла пропорционально степени ответственности, которую мы берем на себя. Этот принцип применим не только к области разработки программного обеспечения, но и к нашей личной жизни. Тогда кажется, что ответственность глубоко связана со смыслом и целью. Это понятие очень хорошо согласуется с моим взглядом на мастерство программного обеспечения. Целью этого является создание этической базы высокотехнологичной области. Это то, что вы принимаете как индивидуальность, хотя и на благо команды. Software Craftsmanship рассказывает об обмене знаниями, работе в команде, об индивидуальной ответственности. Темы, которые вызывают чувство гордости и значимости в области, которая обычно очень краткая и сухая. Мастерство программного обеспечения — это не то, почему вы начинаете разработку программного обеспечения, это то, почему вы остаетесь в ней.

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

Как проведение параллелей может улучшить Ремесло?

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

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

Уважение к произведению искусства

Если вы никогда не видели, как профессиональный реставратор ухаживает за произведением искусства, я настоятельно рекомендую вам подарить ему часы. Одним из примеров реставратора изобразительного искусства, который публично делится своим рабочим процессом, является Джулиан из Baumgartner Fine Art Restoration. В настоящее время Джулиан управляет старейшим бизнесом по реставрации произведений искусства в Чикаго. Интересно, однако, что он считает, что, развивая личные отношения с каждым клиентом и произведением искусства, можно достичь наилучших результатов, что, безусловно, является общей целью для разработчиков программного обеспечения. Мы возьмем ремесло Джулиана в качестве примера для рисования сходства. Наблюдая за работой Джулиана, вы быстро увидите, с какой тщательностью он выполняет свои задачи. Профессиональные реставраторы с большим уважением относятся к своим произведениям искусства. Рассмотрим затем типичный программный проект. Скорее всего, если вы разработчик, вы бы точно не сказали, что относитесь к своей кодовой базе с таким уважением. Если вообще уважать. Во всяком случае, средняя кодовая база является объектом насмешек.

Можно возразить, что произведение искусства, безусловно, более деликатный предмет. Ведь любое неправильное обращение с ним может привести к необратимой утрате оригинального произведения искусства. Как разработчики программного обеспечения, у нас есть системы контроля версий, такие как `git`, чтобы уберечь нас от такого необратимого ущерба. И хотя мы действительно могли бы быть в значительной степени защищены от немедленного ущерба, наша небрежность не лишена недостатка. Это может (и в большинстве случаев) в конечном итоге привести к системе, которая настолько запутана и пронизана техническим долгом, что мы практически не можем продолжать дальнейшее развитие. Разве наш кодекс не требует такого же уровня уважения и заботы?

Быть частью истории

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

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

Сохранение произведения искусства

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

Тогда возникает вопрос, можем ли мы реализовать защитные слои в наших кодовых базах? Можем ли мы использовать методы, которые по своей сути обратимы? Разве это не должно быть частью нашей общей цели? Хотите верьте, хотите нет, но наши собственные лучшие практики уже включают эту идею. Мы понимаем проблематичную природу связи и зависимости. Мы знаем, к чему приводит тяжелая связь. В нашем случае это программное обеспечение, которое останавливается в разработке и в конечном итоге перестает быть полезным. В области художественной реставрации это потеря культурного объекта. Если реставратор плохо справляется с сохранением предмета, он быстрее потребует обслуживания или может привести к необратимому повреждению. Хотя программное обеспечение, безусловно, развивается быстрее, применяется тот же принцип. Плохая работа по обслуживанию приведет к техническому долгу, который необходимо оплатить. Вы можете оплатить его раньше, или это может в конечном итоге привести к нашей собственной версии необратимого ущерба, неподдерживаемой кодовой базы и постоянно растущей стоимости разработки.

Уважение к другим полям

Будучи гораздо более старой и зрелой профессией, профессиональные реставраторы имеют согласованный и модерируемый Кодекс этики и практические рекомендации Американского института охраны природы (AIC). Одним из этих Руководящих принципов, определенных AIC, является:

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

Это, по словам Джулиана из Baumgartner Fine Art Restoration, можно интерпретировать как:

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

Мне кажется, что это недостающая часть профессионализма. Особенно коллегиальность, сотрудничество и общая доброжелательность по отношению к другим. Нарушения этого принципа, безусловно, предполагают непрофессиональное поведение. Джулиан, однако, продолжает говорить:

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

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

... некоторые из лучших советов и приемов, которые я почерпнул, исходили от людей, не занимающихся вопросами охраны природы. Вещи, которые я адаптировал к своей работе.

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

Джулиан имеет дело с проблемой, которая, как вам может показаться, особенно актуальна в разработке программного обеспечения. То есть, с людьми, которые до него плохо справились с конкретной работой. Решение, однако, состоит не в обычном (непрофессиональном) пыхтении и бесконечной игре «мерзавец виноват». Эти профессионалы спокойно решают вопросы напрямую. И они это делают, опять же словами Джулиана:

медленно и уверенно, с большим терпением и множеством перерывов...

Заключительное заявление

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

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