Опыт энтузиаста-инженера, возглавляющего команду, помогающую некоммерческим организациям

Как инженеры, мы посещаем конференции и мероприятия в основном для того, чтобы учиться, общаться, получать бесплатные подарки (моя любимая часть) и, конечно же, развлекаться. Помимо участника, есть много других ролей, в том числе волонтер или организатор, на которые он может взять на себя. Недавно у меня была возможность возглавить команду Ruby for Good 2017. Поскольку моя компания, XO Group, была спонсором, я был полон решимости приложить все усилия, и я здесь, чтобы поделиться своим опытом руководства этой командой.

Для тех из вас, кто не слышал о Ruby for Good, R4G, это длинное мероприятие на выходных за пределами Вашингтона, округ Колумбия, где программисты с разным уровнем опыта собираются, чтобы создавать приложения или автоматизировать процессы для некоммерческих организаций, которые в противном случае не смогли бы позволяют разработчикам и во многих случаях даже не знают, как специализированное программное обеспечение может помочь им заменить трудоемкую работу. Я узнал о мероприятии в прошлом году в Rails Camp, когда познакомился с Шоном Марсией, основателем R4G. Размышляя о моем посещении в прошлом году, я хотел подтолкнуть себя к развитию в новых областях. Став руководителем группы, я знал, что буду оказывать большее влияние, помогая некоммерческим организациям.

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

Управление ожиданиями проекта требует, чтобы вы были основным коммуникатором с заинтересованной стороной, которая является непосредственным ответственным лицом в некоммерческой организации, инвестирующей в продукт, создаваемый в течение долгих выходных. Как разработчики, мы часто отстраняемся от разговоров с заинтересованными сторонами, которые могут быть решающими двигателями в направлении функций приложения. Это противоположно тому, когда вы ведете проект с R4G. Вы инициируете обсуждение требований и возможностей с организацией за несколько недель до мероприятия и переводите их потребности в истории, которые может построить ваша команда, тогда как в XO Group эту роль играет технический менеджер или менеджер по продукту.

Организация SCAN, с которой мне пришлось работать несколько недель, стремится остановить жестокое обращение с детьми в Северной Вирджинии посредством обучения и защиты. Первый из этих разговоров с заинтересованным лицом, Сэмом, в SCAN начался с перечисления требований. Им нужна была платформа для пожертвований, которая позволила бы им быстро собирать информацию о донорах во время мероприятий по сбору средств и синхронизировать эти данные с Salesforce, инструментом, который они используют для управления всеми своими донорами и потенциальными клиентами. Одной из особенностей, которую они хотели сохранить при нынешней настройке Square, были размер ридера и простота использования. Однако программное обеспечение Square взимает комиссию в размере 2,75% от общей суммы транзакции, которую они надеялись минимизировать.

Задача после сбора требований заключалась в том, чтобы определить функции, которые необходимо создать, после исследования рынка и путей, выбранных SCAN. Это включало исследование того, как работает Square, ее API, продуктов и API конкурентов, а также альтернативных картридеров. Собрав и разделив информацию на преимущества и недостатки Square по сравнению с их конкурентами, такими как Stripe или Shopify, Сэм передала сообщение инвесторам организации и своему начальству. Это сообщение, передаваемое между нашими беседами, было упражнением в планировании и эффективном общении. Я беспокоился о том, чтобы получить ответы вовремя для других последующих встреч, потому что я хотел убедиться, что я полностью понимаю их потребности и разбил технические возможности для того, что можно было бы достичь за длинные выходные. Из представленных вариантов SCAN предпочла остаться с Square, что ограничивало наши возможности помочь им минимизировать затраты, настроить поток данных и синхронизировать его в выходные дни.

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

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

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

Мероприятие началось с того, что каждый руководитель группы представил свой проект. На этом шаге было время представить проект и привлечь нужных вам талантов, перечислив используемые технологии и удобство для младших разработчиков. Некоторые ведущие принесли в прошлом году выпечку, такую ​​как блонди и печенье, а в этом году ириски и еще несколько печений (эти руководители были на более высоком уровне с бесплатными подарками). Во время презентации я привлек инженера, который работает в компании, которую приобрела Salesforce. Он был знаком с их продуктом и их уникальным языком запросов SOQL. Кто знал, что у них есть собственный язык запросов? Каждый последующий разработчик, приходивший к нам за столиком, был убежден в том, что он может внести свой вклад, исходя из своих навыков и интересов. К концу мы заполнили все нужные роли. Очередное участие в череде счастливых событий.

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

Через три дня наша команда из восьми человек написала запуск микросервиса для задания cron для перевода данных из Square в Salesforce, создала API для хранения пользователей и этограмм, интерфейс Vue.js для генерации этограмм, и веб-сайт в Webflow для систематизации информации о сохранении сорокопутов-сорокопутов.

Конечно, я могу продолжать восхвалять конференцию, но понимание того, как навыки, полученные на одной из них, можно применить на вашем рабочем месте, гораздо более ценно для вас, читатель. Обсуждения архитектуры могут быть тонкой гранью в отношениях между командами. Умение практиковаться вне работы и наблюдение за тем, как другие разработчики за пределами вашего технологического стека выбирают время, чтобы быть гибким, а время - твердым, - это навыки хорошего инженера и лидера. Обсуждения за пределами технологий, используемых на вашем рабочем месте, также лучшее время, чтобы узнать о последних тенденциях. В прошлом году мы обсуждали React и Mithril, а в этом году мы пропустили это обсуждение и сразу перешли на Vue. Я слышал о новом фреймворке Vue.js, но не использовал его до R4G. Учитывая скорость внедрения фреймворков Javascript, полезно узнать мнения разработчиков, которые их уже использовали, и узнать, почему они предпочтительны. Кроме того, отзывы, которые я получил от участников, с которыми я работал в прошлом году, являются бесценным показателем того, насколько я вырос за год. Иногда бывает трудно получить ту же обратную связь, когда то же самое представление амортизируется в течение года. Все эти знания применимы, поскольку они сродни циклам и динамике компании.

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

И последнее, но не менее важное: я хотел бы поблагодарить XO tech и рекрутинг еще раз за спонсорство и R4G за хостинг. Если вам понравился этот пост, ознакомьтесь с другими здесь от наших инженеров. Если вам интересно работать со мной и другими нашими замечательными разработчиками, загляните на нашу страницу вакансий. Особая благодарность организаторам Ruby for Good за их постоянную приверженность некоммерческим организациям и стремление сделать мир лучше. Если вы хотите помочь и внести свой вклад в проекты с открытым исходным кодом, ознакомьтесь с проблемами, перечисленными в репозиториях организации Ruby for Good. Решите один или несколько из них и отправьте запрос на перенос или добавьте проблему для запросов функций или обнаруженных ошибок.

* Мега-команда:

Спасибо Шону Липкину и Шону Марсии за вычитку многих моих черновиков. Они придали посту дополнительные детали и позитив, в которых он нуждался.