На выходных я посетил Global Day of Code Retreat. Мы провели один в нашем офисе в Олдгейт и приветствовали 11 участников.⁰ Мы писали около 45 минут за сеанс, и на каждом сеансе были свои ограничения. Цель дня состояла в том, чтобы попрактиковаться в написании кода вдумчиво, с помощью тестов и небольшими шагами. Решением, которое мы искали, было программное обеспечение для запуска Игры Жизни, игры с нулевым игроком, которая демонстрирует эмерджентные свойства.

(То есть, как и жизнь среди нас, людей, она начинается с семени и иногда растет, иногда умирает, иногда остается прежним, но — вот в чем дело — ее нельзя торопить. Единственный способ выяснить, как шаблон будет выглядеть на шаге 4,255, 903, чтобы пройти все эти шаги.

Как и в жизни, единственный способ узнать, что произойдет, это подождать)

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

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

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

Я думаю, что стал немного старше, даже не осознавая этого.

Думаю, так у всех бывает.

Если вы просмотрите коммиты, вы увидите моментальный снимок того, о чем я думал в тот момент. Я действительно предпочитаю эти длинные истории коммитов искусственно сжатым и переписанным — по крайней мере, в качестве учебного пособия. Например, мой класс Cell начинался так:

class Cell:                                          
    def __init__(self, alive: bool = False):
        self.alive = alive
    def die(self):
        self.alive = False
    def resurrect(self):
        self.alive = True

и закончилось так:

class Cell:
    def __init__(self, alive: bool = False):
        self.alive = alive
    
    def black_or_white_square(self):
        return u"\u25A0" if self.alive else u"\u25A1"

потому что по пути я понял, что класс Cell не должен умирать. На самом деле, я мог бы даже полностью свести его к значению True или False и вообще не беспокоиться о создании объектов.

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

Итак, теперь вы подверглись воздействию моего. Что вы думаете?

⁰ 24 человека зарегистрировались, поэтому мне любопытно узнать, как этот процент отказов сравнивается со средним показателем
¹ Если вы попали на этот блог, потому что посетили его, вам следует проверить вакансии, которые у нас есть что мы предлагаем и навыки, которые мы ожидаем от вас в качестве младшего специалиста по данным или младшего разработчика программного обеспечения.