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

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

На мероприятии Progressive HackDay я вместе с другим разработчиком программировал производственное веб-приложение Ruby on Rails для Коалиции Нью-Йорка. Мой партнер был опытным и отличным разработчиком, но плохо знаком с экосистемой Ruby. Я новый разработчик, но хорошо знаком с Ruby. Вместе мы дополняли друг друга в работе и добились больших успехов в решении поставленных задач. Я считаю, что это также помогло разрушить ложную дихотомию между более старшими и младшими разработчиками. И младшие, и старшие разработчики постоянно учатся, и у обоих есть знания и навыки, которыми они могут поделиться друг с другом.

Что я могу сделать по итогам хакатона?

Это возможно. Да, можно!

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

Что было особенно удивительно на этом этапе, так это то, что я столкнулся с кодом, которого я раньше не знал. Разработчики этого проекта создали красивое и элегантное приложение. В ActiveRecord были ключевые слова, с которыми я не был знаком, и которые сэкономили бы мне время в моих собственных проектах, если бы я знал о них! Например, :dependent позволяет указать связанные записи, которые следует удалить при удалении основной записи. Это отличный способ сохранить ваш код СУХИМ и выполнять сразу несколько задач.

Парное программирование - лучшее

До хакатона я не тратил много времени на парное программирование. Весь день я сотрудничал с другим разработчиком, и это было фантастически. Это напомнило мне годы, которые я провел в ешиве, где метод обучения заключается в обучении в парах (havruta [ חברותא ] на иврите) большую часть дня. В обучении с другим человеком есть динамизм. Возможность бороться с идеями с другим живым человеком перед вами несравнима. Такой же воодушевляющий опыт для меня произошел вчера во время парного программирования.

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

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

Это не имеет особого значения, если у вас разный уровень навыков. Ваш партнер может быть младшим разработчиком с большим опытом работы с Python, а вы можете быть старшим разработчиком, который знает Java как свои пять пальцев, но если проект находится на Python, этот младший разработчик сможет много рассказать о том, как двигаться вперед. Речь идет не столько о разных уровнях навыков, сколько о готовности постоянно разговаривать друг с другом, чтобы создавать красивый код.

С великой силой…

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

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

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

Пойду ли я на еще один хакатон? Абсолютно! Кто знает, что хорошего будет на следующем?