Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Про гребцов и программистов, или аналог…

Про гребцов и программистов, или аналогии в академической гребле и бизнесе по разработке программного обеспечения

03 Мар 2014

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

0239_Rowers_ru/image1.png

Рисунок 1 - Евгений Рыжков

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

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

Академическая гребля – очень интересный вид спорта. Википедия говорит нам:

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

Если мы посмотрим на фотографии гребцов, то заметим интересную вещь.

0239_Rowers_ru/image2.png

Рисунок 2 – Парная гребля

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

А если в одной лодке сидит четверо или, тем более, восемь гребцов, то у них появляется в команде еще один человек: рулевой или впередсмотрящий. Ничего не напоминает из программирования?

0239_Rowers_ru/image3.png

Рисунок 3 - Восьмерка

Когда программист работает над задачей один или с коллегой, они прекрасно могут справиться самостоятельно. Но как только в проекте появляется чуть большее количество человек, сразу должен появиться так называемый руководитель проекта. Или project manager (PM) в английской терминологии. В отличие от технического лидера команды, который принимает технические решения, руководитель проекта нужен для другого. Во-первых, он определяет "направление движения": какие функции стоит добавить в продукт, а какие нет. А, во-вторых, он задает "ритм гребков": с какой частотой выпускать новую версию продукта. Проще говоря, отвечает на вопрос: "Когда релиз?" А если речь идет о заказной разработке программного обеспечения, то еще и общается с заказчиком.

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

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

Приведу несколько примеров.

В ходе работы над продуктом программист получает задачу – реализовать некоторую функцию. В процессе реализации программист понимает, что можно сделать еще и вот такую функцию, причем совсем легко, потратив лишь пару дней. Он принимает решение быстренько реализовать и ее, ведь по мнению программиста он молодец, сам сделал "классную штуку", за которую его обязательно похвалит начальник! Правда, в процессе реализации выяснилось, что одна базовая вещь работает не совсем так, как ожидается, поэтому он быстро (всего за неделю!) ее переписал. Ну ведь молодец же, нет?

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

Другой пример. Потенциальный клиент интересуется продуктом. Он даже готов его купить, но вот поведение одной функции ему не нравится, и он просит ее переделать. Программист с радостью ее переделывает (ведь он помог человеку!), сделка проходит (программист уже ждет премию!), а в итоге руководитель проекта ругает программиста за то, что он сделал. Почему? Да потому что изменив поведение этой функции под одного клиента, программист забыл, что сломал ее работу для 100 других существующих клиентов. Конечно и в этом примере виноват руководитель проекта, что дал инициативу программисту.

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

Популярные статьи по теме
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

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

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

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

Комментарии (0)

Следующие комментарии

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