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

Кто-то может назвать его «смелым» или «мужественным».

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

Вот почему я хотел бы посвятить этот пост мужеству.

Решение стать разработчиком было вызвано потребностью в интеллектуальной стимуляции. В процессе это была не совсем прогулка по парку. Временами он был наполнен неуверенностью в себе и умственной усталостью. Возможно, поэтому мне понравилось читать ценности и принципы, изложенные в книге Кента Бека «Объяснение экстремального программирования». Мне это напомнило множество способов, которыми мы проявляем небольшие проявления мужества в нашей повседневной жизни. Хотя я еще не закончил книгу, мне нравится то количество самоанализа, которое Бек предлагает нам, читателям и коллегам-разработчикам. На сегодняшний день я прочитал несколько книг, связанных с программным обеспечением, во время моего ученичества. Эти книги побуждают нас писать наш код определенным образом для создания надежного и расширяемого программного обеспечения, и, конечно же, все это имеет смысл.

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

Я не думаю, что люди часто воспринимают разработчиков как «смелых». Так что же такое мужество в этом контексте? Бек упоминает случай, когда команда разработчиков, обнаружив недостаток в архитектуре, активно работала над его устранением и исправлением. Он также говорит о том, чтобы выбросить свой код, с чем я смирился. На прошлой неделе для моей размещенной игры в крестики-нолики у меня было две истории, связанные с настройкой игры: 1) пользователь может выбрать маркер по своему выбору и 2) пользователь может выбрать, идти ли ему первым. Для обеих историй я хотел выяснить, как лучше всего этого добиться. В те моменты, когда у меня не было рабочего решения или казалось, что подход не работает, я возвращался к чертежной доске. Я больше не боюсь git checkout -- .. Конечно, вы можете приложить столько усилий для написания кода и его тестирования. Но удивительно, насколько неправильное действие может помочь прояснить ваше мышление. На самом деле, это чертовски освобождает сказать: «Я пробовал это, и это не работает. Давайте двигаться дальше."

И поскольку наши принципы включают пересекающиеся ценности, я часто стремлюсь к простоте (еще одна ценность, которую обсуждает Бек). Каков самый простой способ реализовать это? Как это можно сделать с помощью bTest, который подойдет для сегодняшних целей? Давайте помнить, что просто не легко, как упоминали и Бек, и создатель Clojure Рич Хикки.

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

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

* Это было в течение очень короткого периода во время моего первого года в колледже.