Статьи

Три ключа к тому, чтобы стать продуктивным разработчиком программного обеспечения

Что делает успешный инженер-программист?

В этом эпизоде ​​«Показа версий» один на один Дэвид и Тим рассказывают о том, что значит быть продуктивным разработчиком программного обеспечения. Они обсуждают ключевые факторы релевантности (сосредоточенность на том, что важно), качество (обеспечение того, чтобы ваш код делал то, что ему нужно) и время (наличие места для кода без перерывов), а также поддерживающие культуры, анализ кода, избегание (слишком много) встреч, перелистывания птиц и La-Z-Boys.

Показать заметки

Основные моменты разговора

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


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


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


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


если я сконцентрируюсь на продуктивной работе, которую я выполняю, я собираюсь инвестировать в качество работы. Быть продуктивным не всегда о скорости.


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


в некоторых ситуациях, в некоторых сценариях, просто невозможно быть продуктивным.


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


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


Я думаю, что хорошая встреча — это то, что предотвратит десять других плохих встреч.


Непрерывное время работы — это то, что инженеру нравится больше всего.


Недавно я принял решение быстро переходить в социальные сети, потому что заметил, что у меня была тенденция прерывать свой день случайными маленькими проверками в Твиттере и Фейсбуке, чтобы посмотреть, что там происходит.


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

Шоу версий: продуктивный инженер-программист

расшифровка

Дэвид:

Эй, как дела у всех? Это М. Дэвид Грин …

Тим:

… а это Тим Эвко …

Дэвид:

… и вы слушаете Эпизод 28 подкаста версий.

Тим:

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

Дэвид:

Сегодня мы с Тимом немного поговорим о производительности как инженера — что это значит, что это значит для нас, то, что мы видели, работает, и то, что мы видели, не работает. Итак, давайте продолжим и начнем эту версию.

Тим:

Дэвид, нам нужно задать философский вопрос.

Дэвид:

Я думаю, что очень хороший философский вопрос: что означает производительность?

Тим:

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

Дэвид:

Что ж, учитывая, что мы договорились, что собираемся сделать эпизод о производительности, я рад, что вы подумали об этом.

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

Это подходит для меня. Это дает нам три фактора. У нас есть качество, у нас есть отношение, а затем у нас есть фактор времени.

Тим:

Я пытаюсь придумать юридическое определение, за которое мы не могли придумать предостережения.

Дэвид:

[Смеется] Давайте начнем с этого и посмотрим, не столкнемся ли мы с какими-то проблемами.

Тим:

Все в порядке. Итак, во-первых, я считаю, что актуальность.

Дэвид:

Хорошо, актуальность как фактор того, что продуктивно?

Тим:

Когда я думаю об актуальности, я работаю в компаниях, где я вижу коллег, которые все время очень заняты, будь то втягивание в сторонние встречи или ответы на кучу электронных писем или волонтерство для выполнения неординарных задач. Большинство людей на работе всегда очень заняты, но я действительно чувствую, что если вы хотите выполнить работу и быть продуктивной, вам необходимо убедиться, что работа, которую вы выполняете, имеет конкретное отношение к конкретному набору задач. Это значит, что я не могу идти на работу в понедельник и говорить себе: «Я собираюсь сделать многое сегодня». Я хочу пойти, пойти на работу в понедельник и сказать: «Я собираюсь сделать Х» сегодня ». Это означает, что работа, которую я хочу выполнять, — это не отвечать на электронные письма или, может быть, рассматривать целую кучу запросов на выборку, или участвовать в тысячах различных встреч, или добровольно вызываться, чтобы взять командный ланч. Я хочу убедиться, что работа, которую я выполняю, чтобы быть продуктивной, имеет отношение к этому конкретному набору задач.

Дэвид:

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

Тим:

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

Давид [3:57] :

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

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

Тим:

Я думаю, что это имеет смысл. Итак, как мы можем определить, что нам нужно сделать?

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

Прежде всего, я бы сказал, что если вы слушаете, и вы работаете в непродуктивной организации, не надо себя мучить, если вы обнаружите, что сами испытываете трудности с производительностью на работе. Если вы работаете на себя, ну, я не собираюсь ничего говорить об этом! [Смех] Если вы работаете в компании, и вам трудно справляться с поставленными задачами, это может быть организационной проблемой, и в этом случае сидеть здесь и пытаться записать уроки для повышения производительности не будет большой помощью. В такой ситуации есть смысл поговорить с кем-то, поговорить с высшим. Поговорите со всеми, кого вы можете в своей организации, и нарисуйте: «Эй, слушай, мы непродуктивны. Он встроен в компанию, и мы должны это исправить ».

Дэвид:

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

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

Тим [7:50] :

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

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

Дэвид:

Что мешает вам быть продуктивным, когда у вас есть эти пять задач? Почему у тебя пять, а не один?

Тим:

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

Дэвид:

Я был здесь.

Тим:

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

Дэвид:

Это интересный подход. Позвольте мне прийти к этому немного по-другому. Позвольте мне спросить вас, для меня это звучит как одна из ваших задач — то, что вы определили для меня здесь, на самом деле звучит для меня как две задачи. Один из них — это качество кода, а второй — разработка кода.

Тим:

Да.

Дэвид:

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

Тим:

Конечно.

Дэвид:

Если вы не выполняете их в среде парного программирования, что я также настоятельно рекомендую. Но мне любопытно, когда вы говорите о производительности и об этом, чувствуете ли вы, что вы не продуктивны, когда проводите время за просмотром чужого кода?

Тим:

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

Дэвид:

Кричать на людей всегда весело.

Тим:

Нет, но то, что я на самом деле имею в виду, это когда я вижу шаблоны кода, которые могут привести к плохой базе кода, например, написанию вложенных операторов if . Я нахожусь на этой теме утверждения сейчас, я не знаю почему, но, например, если я вижу, если условие, и внутри этого, если условие два, а затем внутри этого, если условие 1 и условие 2, но не условие 3 Я собираюсь посмотреть на это и сказать: «Эй, возможно, есть лучший способ, которым мы можем это сделать». И причина, по которой я это говорю, не в том, что я педантичен. Это потому, что если это шаблон, который продолжается в остальной части кодовой базы, в конце концов кто-то собирается взглянуть на это и не иметь представления о том, что происходит, и испытать трудное время — потратить, возможно, дополнительные 15 минут — на то, чтобы его переварить, когда вместо этого они могли бы взглянуть на три отдельных и не включенных в него заявления и четко понимать, что происходит. поэтому я вижу в этом ряд преимуществ, но думаю, что наиболее важным является обеспечение того, чтобы чистая и лаконичная кодовая база оставалась такой, даже если над ней работает много людей.

Дэвид [12:02] :

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

Тим:

Ну, на самом деле я оставил комментарий сегодня, попросив коллегу измениться. Было присвоение переменной. Мы допустили, чтобы переменная X равнялась Y, а затем под ней, если какое-то другое условие истинно, пусть переменная X равна Z вместо Y. Я сказал: «Это идеальный случай для троичного оператора, потому что вместо условного переназначения этой переменной мы можем сделать все это в одной строке и сказать:« Эта переменная равна либо X, либо зависит от значения N это равно Y. »

Дэвид:

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

Тим:

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

Дэвид:

Ну, это интересно. Мы перешли, вроде. мы перешли от релевантности к качеству, что стало нашим вторым критерием производительности.

Тим:

ООО да.

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

Я думаю, что нам следует потратить несколько минут, чтобы поговорить об этом, потому что независимо от того, где вы находитесь в своей карьере, вы либо пережили такую ​​ситуацию, либо вы столкнетесь с такой ситуацией. Это не имеет значения, если вы работаете не по найму или не по найму, это случается. Опять же, как я уже сказал, мы всегда будем сталкиваться с этой ситуацией. Что сложно, так это то, что иногда нет другого выбора. Если ко мне подойдет мой менеджер и скажет: «Эй, это нужно сделать завтра. Вы никогда не видели этого раньше, это ново, это немного сбивает с толку, но это должно быть сделано завтра, удачи ». У меня может не быть выхода из этого. Это может быть пожарная тренировка и что-то, что просто должно произойти. Это будет ужасно. Скорее всего, это повлечет за собой технический долг, почти сразу, и это может быть или не быть тем, что вы получите для рефакторинга позже.

Давид [16:34] :

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

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

Тим:

Я хотел бы выдвинуть идею, Дэвид, и сказать мне, что вы думаете по этому поводу. Я бы сказал, что в случае, если вас отодвигают в сторону и дают что-то, что абсолютно необходимо выполнить за невероятное количество времени — [Дэвид смеется] — и у вас нет никакого способа отодвинуться назад, сама идея производительности думаю, выходит в окно.

Дэвид:

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

Тим:

Я думаю, что мы сделали очень важный прорыв здесь. Это идея, что в некоторых ситуациях, в некоторых сценариях, просто невозможно быть продуктивным. Теперь это во многом зависит от культуры на рабочем месте. Если вы работаете, например, в стартапе, и однажды Правление говорит: «Нам нужна эта функция, она нужна нам сейчас, чтобы это произошло», и по какой-то причине она просто ложится вам на плечи, это не так. сценарий, в котором вы можете быть продуктивным. Это может означать, что вы работаете до полуночи над функцией, которая просто должна выйти, и, скорее всего, она будет переписана неделями или месяцами позже. Это не тот сценарий, в котором вы должны подумать про себя: «Как я могу быть наиболее продуктивным в этом отношении?». Потому что вы настроены; Вам дают то, что по своей сути имеет непродуктивную природу.

Дэвид:

Мне это нравится, и я собираюсь отбросить этот ответ вам, потому что вы выдвинули интересный сценарий, потому что вы сказали: «Если вы работаете в стартапе». Существует ситуация, которая является полностью обоснованной и продуктивной. , в котором написание грязного, плохого кода, который привел бы к техническому долгу в среде производственного качества, — это не то же самое, что написание грязного, плохого кода, который позволит вам провести некоторое тестирование пользовательского опыта, что-то оценить, а затем что-то повторить, чтобы Затем можно решить, какой продуктивный код будет написан в будущем. В этом случае я бы предположил, что это возможно — написать то, что мы раньше называли хэштегом #holidaycode , чтобы что-то сделать и выйти на улицу, чтобы люди могли начать его использовать, и чтобы вы могли получать отзывы об этом — можете на самом деле быть продуктивным, а не с точки зрения создания вашей производственной кодовой базы, но это может быть продуктивно с точки зрения продвижения компании вперед к тому, чтобы они знали, что вы должны писать как производственный код качества в будущем.

Тим [20:02] :

Так что я бы сказал, мой контрапункт такой. Это азартная игра, потому что вы на самом деле не знаете, будет ли этот праздничный код, который вы пишете, что-то, что не нарушает основной функции, или что оно не вызывает интенсивных проблем с пользовательским интерфейсом, чтобы отвлечь пользователей от вашего продукта. Этот тип поведения случается часто? Часто ли пользователи заходят в ваши продукты, чтобы узнать, что было принято какое-то новое решение, которое не очень хорошо продумано и вызывает конфликты в их UX и отталкивает их от целей, которые вы ставите перед собой, перед пользователем. Я думаю, что есть много факторов, которые могут создать или сломать процесс праздничного кода. Теперь, если это что-то вроде, например: «Эй, давайте превратим объект захвата адреса электронной почты в всплывающую подсказку, а не в модал», и вы напишите какой-то грязный код, чтобы сделать это, ну, может быть, да. Возможно, в этом сценарии процесс, который был запущен, не перерастет в какой-то технический долг. Но если это сказывается на техническом долге, а не на каком-то итерационном и улучшающемся с течением времени процессе, то я бы сказал, что он все еще находится в этом непроизводительном состоянии.

Я думаю еще раз, в зависимости от того, как он представлен, это игра с точки зрения того, будет ли это на самом деле выгодно.

Дэвид:

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

Тим:

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

Дэвид:

Честно говоря, я могу сказать, что в производстве есть код, который я написал, чтобы он был временным еще в 2008 году [смеется] , и он все еще там. Вы можете зайти в домен и щелкнуть URL-адрес, и вы увидите этот код прямо в браузере. Временные очень трудно определить. Когда у вас что-то есть, оно будет оставаться там до тех пор, пока не найдется что-то, чтобы заменить это, если только кто-то не завладеет тем, что временная вещь будет заменена чем-то постоянным и надежным. Взять на себя ответственность за это является частью производительности, на мой взгляд.

Тим:

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

Дэвид:

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

Тим [24:16] :

У меня есть чем поделиться, и это может быть плохо, это может быть хорошо — мне придется положиться на тебя, Дэвид, чтобы сказать мне, если это плохо. Здесь это идет. Все, с кем я когда-либо работал, в прошлом и настоящем, знают, что я презираю встречи в самой сути своего существа. Я как бы допускаю, чтобы этот кусок обо мне сохранялся, потому что это означает, что я, по крайней мере, был приглашен на собрания как дополнительный, то есть если кто-то хочет, чтобы я присутствовал на собрании, он скажет: «Это необязательно, вам не нужно приходите », или это приходит сверху, и у меня просто нет оправдания, и мне нужно идти. Но это стратегия, которая сработала для меня. Это стратегия, которая гарантирует, что меня не просят посещать много собраний, только действительно важные, где обычно у меня нет выбора посещать или не посещать. Но это также то, что позволяет мне тратить гораздо больше времени на выполнение реальной работы.

Дэвид:

А в следующем году выйдет книга SetPoint « Как избежать приглашения на встречи » Тима Эвко.

Тим:

Это даже будет проиллюстрировано. Большинство иллюстраций будет мной, переворачивая столы.

[Смех]

Дэвид:

Или листать птицу.

Тим:

Ну что ж, посмотрим. Я не могу на самом деле рисовать руки, но мы попробуем.

[Смех]

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

Да я согласен. Я думаю, что хорошая встреча — это то, что предотвратит десять других плохих встреч.

Дэвид:

Да, встречи, которые исключают другие встречи, — это встречи, о которых я говорю. Идея о том, что никто не хочет присутствовать на собрании, потому что, за исключением людей, которые любят слушать, как они говорят, и рассматривают это как игру силы, встречи, как правило, не очень продуктивны для кого-либо. Непрерывное время работы — это то, что инженеру нравится больше всего. Я думаю — что сказали исследования? — если вы работаете над чем-то и концентрируетесь глубоко, но вас прерывает кто-то, кто просто хлопает вас по плечу и говорит: «Эй, вы хотите чашку кофе?», У вас будет 20 минут, чтобы получить себя обратно в то состояние потока, в котором вы были до того, как вас прервали.

Тим [28:20] :

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

Но в любом случае, это не просто встречи. Есть и другие вещи, которые… Ну, скажем так, если мы хотим сделать что-то очень пристально и уделить много внимания выполнению конкретной задачи, мы хотим назначить для себя, я не знаю, несколько часов фокус. Я просто собираюсь поработать над этим в течение двух или трех часов. После этого, возможно, я собираюсь сделать перерыв, возможно, пообедать, или просто — я не знаю — сделать то, что они делали в старые времена, и встать со своего места.

Дэвид:

Стоять — это хорошо во всех отношениях. Недавно я принял решение быстро переходить в социальные сети, потому что заметил, что у меня была тенденция прерывать свой день случайными маленькими проверками в Твиттере и Фейсбуке, чтобы посмотреть, что там происходит. Я понял, что попаду в эти крошечные маленькие водовороты, которые меня засосут, и после этого мой разум будет отвлечен увиденным, и я не смогу сосредоточиться на том, что я пытался придумать для себя. Работа.

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

Тим:

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

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

Чем больше я думал об этом, это не имеет никакого смысла. Если я работаю над кодированием какой-либо функции пользовательского интерфейса, проверяю запрос на извлечение или что-то, что я делаю, или если я нахожусь в середине одного из многих трехчасовых рабочих спринтов, которые я настроил для себя, чтобы выполнить определенную множество задач, я могу отпустить эти рабочие письма. Когда я закончу с этим трехчасовым блоком времени, посмотрите на электронные письма, которые мне нужны, потому что, если в какой-то момент кто-то придет ко мне на стол и скажет: «Привет, Тим, ты не видел письмо, которое я тебе отправил? 30 минут назад? »Я говорю:« Нет, прости. Я работаю над этой функцией ». Это похоже на справедливый ответ, потому что я делаю работу .

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

Дэвид [31:42] :

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

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

Я недавно взял интервью у парня. Он является независимым подрядчиком, и у него есть клиенты, подписывающие соглашение, когда он начинает работать с ними, что он просто не будет отвечать на любые запросы о работе, которые приходят по электронной почте. У него настроена система, с помощью которой они могут подавать заявку, и в ней должны быть определенные параметры. Когда этот билет поступит в систему, он будет направлен и будет обработан. Но если кто-то пишет ему по электронной почте, он не отвечает. Затем, когда они возвращаются к нему и говорят: «Эй, почему ты не вернулся к моим электронным письмам?», Он указывает: «Вы согласились на это. Это способ, которым мы согласились работать ». Наличие такого соглашения заранее имеет смысл.

Тим:

О да, я очень сильно хочу этого соглашения, а не потому, что у меня есть другая система. Просто потому, что электронные письма не весело.

Дэвид:

Ну, билеты на JIRA, например.

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

Да, безусловно. Я не уверен, есть ли какая-то наука, стоящая за этим, но я верю, что слушать музыку не обязательно вопрос мнения, но она отвлекает ваше внимание от стоящей перед вами задачи в различной степени. Если в музыке есть тексты песен, это наверняка привлечет больше вашего внимания. Если это для фоновой музыки или классической музыки, это привлечет меньше вашего внимания. Но я думаю, что существование этого только на заднем плане все еще немного отвлекает ваше внимание от того, что вы в настоящее время делаете.

Дэвид:

Конечно. Если я слушаю Frozen и начинаю плакать, то я буду отвлекаться.

Тим:

Да, и вы абсолютно не можете слушать Frozen и не отвлекаться. Это факт. За этим определенно стоит наука.

Дэвид:

Итак, хорошо, мы немного поговорили об этих факторах в производительности. К чему мы тогда пришли? Мы говорим об актуальности, мы говорим о качестве, и мы говорим о времени, верно?

Тим [35:36] :

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

Дэвид:

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

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

Это забавно. Недавно мы взяли интервью у Азата Мардана , и одной из упомянутых им книг была « Глубокая работа» , которая является хорошей классикой по этому предмету, и стоит прочитать об этом уровне внимания и о том, как этого достичь.

Тим:

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

Дэвид:

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

Тим:

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

Дэвид:

И иногда это место может быть и тогда, когда ты работаешь один.

Тим:

Да, именно поэтому я не работаю один.

[Смех]

Дэвид:

Ну, вот почему я использую доску Канбан, чтобы отслеживать свои собственные задачи, чтобы я сам не попал в такие ситуации.

Тим:

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

Дэвид [39:50] :

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

Тим:

Это действительно очень хороший момент. Потому что, опять же, я думаю, что когда мы говорим о производительности, все всегда думают: «О, я собираюсь сделать миллион вещей за 10 секунд». Это не обязательно так.

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

Итак, что мы хотели бы сделать позже, так это то, что мы хотели бы поделиться личными советами по продуктивности, имея в виду теперь, когда мы понимаем, что такое производительность, как мы можем на самом деле быть более продуктивными? Какие вещи мы можем… Каковы привычки — как ранее упоминал Дэвид триггерные привычки — какие привычки, которые мы могли бы использовать, позволят нам максимизировать нашу производительность?

Дэвид:

Знаешь, Тим, это звучит как хорошая тема для шоу само по себе.

Тим:

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

Дэвид:

Это, конечно, не значит, что вы не были продуктивными. Я также работал сегодня дома и, сидя здесь, в своем кресле La-Z-Boy, очень удобно создавал много кода. Не так уж много хорошего кода, но это был код, который я не смог бы создать иначе, и я могу вернуться и улучшить его.

Тим:

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

Дэвид:

Поэтому нам нужно найти кого-то, кто является экспертом по производительности, который может прийти и поговорить с нами. Если кто-то знает кого-то, кто может поделиться своими знаниями по этому вопросу, пожалуйста, напишите нам @VersioningShow и порекомендуйте его нам.

Тим:

Или отправьте нам письмо. Напишите нам рукописное письмо.

Дэвид:

Это правда. Мы также принимаем подарки.

Тим:

Да, мы принимаем подарки. Мы на самом деле не говорили об этом. [Смех] Типы подарков! Мы должны начать список пожеланий Amazon.

Дэвид:

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

Тим:

Да, в следующий раз

[Музыкальная интерлюдия]

Дэвид:

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

Тим:

Мы также хотели бы поблагодарить sitepoint.com и наших продюсеров Адама Робертса и Офели Лехат с помощью продюсера Ральфа Мейсона. Пожалуйста, не стесняйтесь, присылайте нам свои комментарии на Twitter @VersioningShow и дайте нам оценку на ITunes, чтобы сообщить нам, как мы делаем.

Дэвид:

Увидимся в следующий раз и надеемся, что вам понравилась эта версия.