Как разговаривать с программистами на одном языке

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

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

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

Неправильная оценка сроков

«3.03. Обсуждали сроки. Выпили 3 ящика пива. Петрович говорит, что тут всей работы на 4 месяца. Значит, на самом деле 8. В итоге в контракте записали 12, хотя раньше, чем за 16, вряд ли управимся».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

Это обычное дело для программиста (на самом деле, для кого угодно). Никто не умеет оценивать сроки, пока не попрактикуется достаточно.

Решение. Использовать классные методологии разработки и оценки трудоемкости. Если вы менеджер проектов, вы уже и так знаете про Agile и Scrum. Если не знаете — найдите ближайшего менеджера проектов и спросите у него, он поделится книжками, статьями и расскажет все о гибких методологиях.

Если рядом нет ни одного менеджера проектов, найдите книжку Майка Кона «Agile: оценка и планирование проектов», и начните ее читать. Когда разберетесь в основах, прочитайте «Вальсируя с Медведями: управление рисками в проектах по разработке программного обеспечения» Тома ДеМарко и Тимоти Листера. Эта книга не для новичков, но хорошо помогает понять нюансы управления проектами.

Если на книги времени нет, и вы ничего не понимаете в разработке, задайте тимлиду простой вопрос: «Из чего состоит эта оценка?». Если вам все разложили по полочкам и объяснили, почему так — оценка близка к адекватной.

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

Плохая реакция на критику

«2.10. Петрович добрался до пятого этажа. Горд собой. Обратили его внимание на тот факт, что его стена наклонена под углом 40 градусов. Он ругался, кричал, что мы ламеры и ничего не понимаем. Потом обещал подумать».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

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

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

  1. Давайте обратную связь, когда вас об этом просят.
  2. Говорите о делах, а не личности человека.
  3. Будьте конкретными — используйте факты, а не оценки.
  4. Сбалансируйте хорошее и плохое. И начинайте с хорошего, потом плохое, потом снова хорошее.
  5. Подбирайте стиль обратной связи в зависимости от сотрудника. Кому-то можно в лоб и прямо, а кому-то только окольными путями.

Срочно переписать весь чужой код

«5.10. Петрович признал, что со стеной действительно имеется проблема. Говорит, что неправильно положил какой-то кирпич. Но чтобы понять, какой именно, надо перебрать их все. Проще все снести и построить заново».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

Чужой код обычно достается по наследству и не всегда работает хорошо. Конечно же, его хочется сразу переписать. Конечно же, на Super.Express.Double.G.Ultra.js (см. следующий пункт).

Решение. Найти баланс между задачами бизнеса и разработки. Поговорите с тимлидом программистов, уточните, нет ли чего-то критичного в старом коде. Если он не мешает работе над продуктом — работайте над продуктом дальше и программисту об этом расскажите.

Выбор неподходящей, но интересной лично программисту, технологии

«Приходил заказчик. Спрашивал, нельзя ли внести в проект небольшие изменения. В частности, вместо 12-этажного дома построить поселок из деревянных коттеджей, соединенных туннелями. Он прочитал, что на Западе сейчас так модно. Нейтрализовали Алекса прежде, чем тот успел открыть рот, и вежливо, но твердо объяснили заказчику, что он не прав».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

Вышел новый Super.Express.Double.G.Ultra.js? Отлично, теперь на нем срочно нужно сделать загрузчик фото, а весь остальной проект на реакте подождет.

Решение. Мягко намекнуть разработчику на то, что фреймворк клевый — вы это вчера читали на «Хабре», — но проект уже послезавтра запускать, и времени на эксперименты вот вообще никак совершенно нет.

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

Исправлять ошибки неинтересно

«4.02. Алекс доказывает, что он не виноват. Просто 12 этажей Сидорова на 4 метра выше и на 5 метров шире, чем 12 этажей Петровича. Выяснилось, что они строили из разных панелей. Но Алекс все равно ламер, поскольку его крыша не подходит по размеру ни одному из вариантов. Его шахта лифта, кстати, тоже».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

Потому что кодить интересно, а поддерживать — нет. То же самое с техническим заданием — иногда заказчик что-то не уточнил в задании до конца, а программист сделал как было написано и уже переключился на другой проект или пошел осваивать Super.Express.Double.G.Ultra.js. А вам вот уже точно никак без баннера, который нужен для запуска рекламной кампании, а его нет.

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

Не уточнили задачу и сделали не то

«Первый этаж готов! Показали его заказчику. Он интересовался, почему в разных комнатах разная высота потолков, почему из стен вываливаются кирпичи и почему в доме нет подъезда, а влезать приходится через окно. Объяснили ему, что это специальные ограничения демо-версии. Уходим на праздники, гордые собой».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

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

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

Сделали не то и до последнего не могут это признать

«3.03. Убедили заказчика, что нам нужен еще день для финального тестирования. М-да, ну мы вчера и наработали… А в общем, не все так страшно. Ну что с того, что некоторые двери находятся в полу или в потолке, либо ведут с десятого этажа прямиком на улицу, в некоторые квартиры в принципе невозможно попасть, санузел кое-где совмещен с кухней, в половине дома нет воды, в другой половине — электричества, канализация обрывается на шестом этаже, а лестницу между восьмым и девятым пришлось сделать веревочной? Главное — провести заказчика правильным маршрутом. И еще — успеть до завтра развесить на месте исчезнувших окон картинки с изображением заоконных пейзажей».

Из рассказа «Если бы программисты строили дома», автор неизвестен.

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

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

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

Читайте также:

Комментарии
Генеральный директор, Москва
Владимир Зонзов пишет:
Евгений Равич пишет (05 сентября 2020, 20:49):
мы пытаемся в этой дискуссии назвать одним словом слишком многое или слишком многих. Возможно, автор статьи (напомним, что это коллекция шуток) говорит о программистах как о чем-то однородном и как о едином целом. Отсюда и возник полушутливый вопрос, на каком же языке нам с ними общаться, когда это понадобится.

 .

Да. Согласен.

Есть две стороны:

  • Сторона заказчика, которому нужна компьютерная программа (комплекс программ), с помощью которой должна решаться его определённая проблема;
  • Сторона подрядчика, которая создаёт программу по п.1.

Каждая из сторон – это несколько и более человек. Основа непонимания между сторонами – в том, что оно (непонимание) есть и между людьми, относящимися к одной стороне.

Абсолютно правильно. Это неизбежно.

Могу добавить, что, даже если получается сформировать какие-то общие позиции (очень редко - консенсус) в начальной фазе проекта, то со временем позиции сторон могут меняться по объективным или субьективным причинам. Известные мне лекарства - жесткое следование процессу, постоянное документирование и регулярные рабочие встречи участников с необходимыми полномочиями (project review). Так можно избежать крупных проблем и ошибок в дальнейшем.

Менеджеры проекта с обеих сторон должны работать качественно и эффективно.

Я сожалею, что стал участвовать в дискуссии по, мягко говоря, несостоятельной статье. Вспоминаю, что программа на каком-либо алгоритмическом языке (в 1970-80-е годы) начинались с определения величин, в ней участвующих. А мы обсуждаем статью, в которой не определено кто с кем разговаривает. А сразу идёт речь о языке общения между ними.

Кстати. На запрос «непонимание между заказчиком и программистами» Яндекс выдал 7 млн.результатов.  В советские времена каждый автор был обязан сделать следующее:

  1. Сделать литературный обзор.
  2. На основе п.3 описать состояние области знаний, к которой относится публикация.
  3. Указать «пробел» в области знаний по п.4.
  4. Пообещать, что предлагаемая к публикации статья заполняет пробел по п.5.

Содержание п.1-п.4 оформлялось как «Введение». По нему предполагаемый читатель принимал решение, тратить ли ему деньги и время на статью.  Если в результате чтения статьи обнаруживалось, что обещание по п.4 оказалось невыполненным, то наказывался и издатель и автор. Издания первого переставали покупать. Статьи второго переставали читать.

Но, в нынешние времена огульной безнаказанности, вышеизложенная практика подавлена мутным потоком плагиатов. К ним относится и обсуждаемая статья, на которую мы напрасно тратим своё время.

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

Руководитель, Москва

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

Директор по производству, Украина

Со времён Эвклида люди строили «Вавилонскую башню знаний». Она строилась успешно, пока строители придерживались определённых правил.
Но, пришли времена «глобализации». Правила были подавлены. Каждый полез тулить в «Вавилонскую башню знаний» всё, что ему вздумается. В результате, мы – современники-свидетели её обрушения.

Генеральный директор, Москва
Владимир Зонзов пишет:

Со времён Эвклида люди строили «Вавилонскую башню знаний». Она строилась успешно, пока строители придерживались определённых правил.
Но, пришли времена «глобализации». Правила были подавлены. Каждый полез тулить в «Вавилонскую башню знаний» всё, что ему вздумается. В результате, мы – современники-свидетели её обрушения.

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

Инженер, Омск

С виду действительно кажется, что это реферат студентки 2-го курса факультета "Управления и менеджмента" какого-нибудь ОмГУ, но никак ни менеджера, и тем более контент-менеджера с опытом.  

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

И решение одно: Нужно радикально менять практику менеджмента проектов. 

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

И первое, что нужно сделать - это перейти от таймлайнов к нормальным road map-ам и призентовать проекты только по их готовности. Что сделали, то и презентавали, не успели или в beta-тестирование - просто сказали об этом. Так делают все ведущие мировые высокотехнологические компании, и особенно ведущие IT-компании. 

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

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

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

Уменьшать степень рутинной работы написания кода, внедряя BIM-технологии разработки, последнее уже в инженерии приобретают повсеместный характер, и только некоторые "архаисты" предпочитают заполнять десятки листов A2 и A3 для чертежей, вместо более наглядного и удобного виртуального 3D-макета.

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

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

Инженер, Омск
Владимир Зонзов пишет:
Очень и очень многие спецы, не желают выходить за рамки своих профессий. Поэтому, им нужно излагать не проблему, а задачу.

Золотые слова. Как говориться, ни добавить, ни убавить. 

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

А я бы посоветовал вам посмотреть как такие вопросы решаются уже сейчас. Всё о чем вы говорите уже давно нормальная международная практика в разработке стандартов, технологических решений и низкоуровневого API. И решаются они одним и тем же маршрутом: через спецификации по протоколам и механизму работы и функциональному набору библиотек (он же API, в комплекте поставки - SDK, в функциональной основе для смежных решений - Framework). 

Инженер, Омск
Владимир Зонзов пишет:
Но, в нынешние времена огульной безнаказанности, вышеизложенная практика подавлена мутным потоком плагиатов. К ним относится и обсуждаемая статья, на которую мы напрасно тратим своё время.

Действует пункт 0: Смело послать все требования на три весёлых буквы и писать так, как совести приятно. 

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

Вице-президент, зам. гендиректора, Москва

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

Аналитик, Москва

Прокомментирую сразу два сообщения.

Евгений Равич пишет:
Анатолий Курочкин пишет:
Про ОСТ. Совсем недавно один довольно большой руководитель ИТ- разработок спросил меня, что такое ЕСКД.

Программисты - профессионалы (другие не нужны), зачем ими командовать? Кто-то командует скрипачами или духовыми в симфоническом оркестре?

Про ОСТ: бывает всякое, опыт работы в отрасли приходит не сразу. Редко, когда кто-то начинает с изучения стандартов, если этого не требуют должностные обязанности. Кстати, автор статьи перечислила несколько книг и важных тем, но не упомянула PMBoK (или любой другой BoK), APM, ISO, CCPM и другие отраслевые источники и концепции.

Александр Ковалёв пишет:

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

...

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

Я, собственно, каким-то образом перекликаюсь с Александром. Системной разработки нет. Приходящие руководители ловят тренды, но не хотят заниматься системой. Не начав с ГОСТ, схватились за Agile, но редко кто внедряет эту методологию обдуманно. Над разработчиками, как правило, довлеет тот, кто будет продавать продукт. Это жизнь, с этим трудно спорить. Но в результате, Александр прав, "менеджеров волнует отчётность". Но не уровень разработки, не качество. 

 

 

 

 

Оставлять комментарии могут только зарегистрированные пользователи
Статью прочитали
Обсуждение статей
Все комментарии
Дискуссии
Все дискуссии
HR-новости
Количество повысивших зарплату компаний в РФ выросло в два раза

По состоянию на начало января заработная плата персоналу была повышена в течение последнего полугодия уже в 36% предприятий и организаций.

Красота стала реже влиять на трудоустройство и карьеру

Сказывается распространенность удаленной работы.

В «Ленте» будет трудиться робот-уборщик

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

68% российских компаний используют труд роботов

ИИ применяют в ритейле, банках, промышленности и телекоме для оптимизации работы с клиентами, бизнес-процессов и производства.