Когда Брэндон Дафф присоединился к Mavenlink в качестве инженера-программиста сразу после колледжа, он был новичком в парном программировании. Он объясняет, как совместная работа и акцент Mavenlink на обучении дают ему возможность изучать новые технологии бок о бок с опытными коллегами и даже обучать самостоятельно.

Расскажите нам немного о своей роли в Mavenlink.

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

Можете ли вы описать свое прошлое до этой работы и что привело вас сюда?

Я изучал философию и информатику в Университете штата Юта, и мне повезло найти Mavenlink прямо перед выпуском. Во время собеседования мне понравились несколько вещей: мне понравилась технология, которую они использовали, и их философия разработки, а также то, что я буду частью нового офиса здесь, в Солт-Лейк-Сити. Кроме того, компания быстро растет, и я знал, что будет много возможностей для роста вместе с ними.

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

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

"Я знаю, что учусь больше и быстрее, чем где бы то ни было, потому что мы постоянно адаптируем технологию для решения новых интересных задач".

Как происходит обучение в Mavenlink?

Я знаю, что учусь больше и быстрее, чем где бы то ни было, потому что мы постоянно адаптируем технологию для решения новых интересных задач. Например, наш JavaScript-интерфейс полностью перешел с Backbone.Marionette на React с тех пор, как я присоединился к компании. Когда мы прорабатываем такие изменения, наши знания в области программирования обязательно углубляются. А поскольку мы работаем в паре, мы постоянно черпаем друг у друга новые идеи. Когда я работаю в паре с более опытными людьми, я узнаю причины использования различных техник и технологий, а не просто прошу кого-то диктовать, какую из них использовать.

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

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

Можете ли вы рассказать нам о том, как работает коучинг в Mavenlink?

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

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

«Я не могу переоценить, насколько полезно время с моим тренером; это помогает мне ставить цели и напоминает мне, что люди вокруг меня заботятся о моем росте».

Поговорим о парном программировании. Каким было ваше первоначальное впечатление и изменилось ли оно?

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

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

Вы всегда работаете с более опытными людьми?

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

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

Создает ли сопряжение какие-либо проблемы?

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

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

«Инженеры Mavenlink не соответствуют вашим стереотипным представлениям о программистах — они более общительны и общительны, и они изучали литературу, биологию и все, что между ними».

Что-нибудь удивило вас в работе в Mavenlink?

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

Есть ли проект, над которым вы сейчас работаете, который вам особенно нравится?

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

Хотите присоединиться к команде?

Познакомьтесь с разделом Инженерные роли Mavenlink в S.F. и Солт-Лейк-Сити, или обратитесь к Дж. Б. Стедману (старший вице-президент по проектированию) по адресу [email protected].