SlideShare a Scribd company logo
1 of 56
Взаимоотношения в коллективе
разработчиков программного обеспечения:
     ложь, предательство и зависть

                                   Сергей Борисов
                              проектный менеджер
                                       ТомскСофт
Об авторе
В настоящее время:
- руководитель проекта в
ТомскСофт
- ст. преп. в ТУСУР, каф. КСУП

Ранее:
- SmaartMobile

- SiberLogic

- ЭлеСи

- ТМЦДО ТУСУР

- НИИ АЭМ


Стаж в разработке ПО: 19 лет
Стаж в высшем образовании: 15 лет
                                    Сергей Борисов
                                                     2
Disclaimer

Все совпадения названий, имен и ситуаций
случайны

Все аналогии ложны

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




                                                      3
Текст песни полностью:

…
Три пули мне отлили до утра
Мои друзья – они вчера так звались.
Три пули:
            ложь,
             предательство
                             и зависть.
…

Ирина Орищенко, Три пули.




                                                                   4
Зависть



          5
Ситуация №1 (зависть)




Вася:                          Петя:
40 000 руб                     45 000 руб




                                            6
Ситуация №1 (зависть)




Вася:                          Петя:
40 000 руб                     45 000 руб




                                            7
Почему зарплата может различаться

• Коля выполняет ту же самую работу, но качественнее

• Коля выполняет ту же самую работу, но быстрее

• Начальство считает, что Коля выполняет работу быстрее и/или
качественнее

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

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

• У Коли “более тесные” отношения с начальством



                                                                   8
9
Что это было?

• Реальные ситуации, которые могли случиться в
реальной компании

• Стереотипы




                                                 10
Как можно избежать зависти



                             11
Скрывать размер зарплат
Pro:
В этом случае, Вася (теоретически) просто не узнает
зарплаты Коли и поэтому, у него не будет поводов для
зависти.

Contra:
• любая попытка скрыть что-то всегда приведет к
обратному эффекту

• сотрудники будут делиться информацией

• сотрудники будут подозревать друг-друга

                                                       12
Вводить формальные критерии

• качество кода

• знание технологий

• количество строк исходного кода

• скорость и качество решения поставленных задач
…




                                                   13
Качество решения задач
Тикет:
название: Сериализация и десериализация
Важность: высокая


               Назначена

                      Реализован
                                              Принято
                      о
                      Отклонено

        Вася:                      Саня: QA
        разработчик                инженер




                                                        14
Качество решения задач



Разработчик   Задач сделано   Задач       Качество
                              отклонено
Петя          10              0           100%
Вася          20              1           95%
Даша          15              3           80%
Миша          16              8           50%
Лена          5               2           40%




                                                     15
Качество решения задач



               У тебя бага в задаче.




               Да? Точно! Ну ты не
               переводи тикет в баг
               треккере, я сейчас
Петя:          быстренько поправлю,    Саня: QA
разработчик    там мелочевка.          инженер




                                                  16
Знание технологий
Тикет: Сериализация и              Тикет: Приложение падает, при
десериализация                     поиске в пустом хранилище
Тип: фича                          Тип: бага
Первичная технология: С++          Первичная технология: С++
Вторичная технология: XML          Вторичная технология:
Сложность: средняя                 Сложность: низкая
Объем работы: 20 часов             Объем работы: 2 часа



Тикет: Оптимизация хранилища       Тикет: Время поиска по полю “имя”
Тип: фича                          растет линейно от числа
Первичная технология: С++:boost    элементов
Вторичная технология: algorithms   Тип: бага
Сложность: высокая                 Первичная технология: С++:boost
Объем работы: 40 часов             Вторичная технология: algorithms
                                   Сложность: средняя
                                   Объем работы: 4 часа
                                                                   17
Качество решения задач



Задача       C++:boost C++        XML         algorithms   ИТОГО
Задача 1                20*4=80   20*4/2=40                120
Задача 2     40*5=100                         40*5/2=50    150
Задача 3                2*2=4                              4
Задача 4     2*4=8                            2*4/2=4      12
Задача ...




                                                                   18
Качество решения задач



Технология   C+         C++       XML        algorithms   ИТОГО
             +:boost
Значимость   10         5         15         20           50
Петя         100*10/5   80*5/50   40*15/50   50*20/50     50
             0
Вася         8*10/50    4*5/50               4*20/50      3.6




                                                                  19
Все критерии ложны!



Как только появляется формальная табличка
“крутости” разработчика, от которой зависит зарплата
все начинают работать на табличку, а не на результат.




                                                        20
Мерило: ответственность




   http://goo.gl/U6nf9    21
Предательство



                22
Ситуация №2 (предательство)
Проект провалился. Извечный русский вопрос — кто виноват?




 Саня: QA
 инженер                Вася:
                        разработчик

                                                 Оля:
                                                 менеджер
                                                 проекта

 Петя:
                        Даша:
 разработчик
                        разработчик
                                                            23
Так кто же виноват?

• Если проект успешен, то это успех всей команды

• Если проект провален, то в этом виноват только
менеджер




                                                   24
Ситуация 3 (сцена 1)

Разработчик Вася утром, примерно, в 9:55 подходит к техническому
писателю, которого зовут, пускай для определенности, Катя. И говорит:




       Вася:                           Катя: технический
       разработчик                     писатель


– Катя, я тебе вчера вечером документик выслал на полторы странички
на перевод. Когда сделаешь?

                                                                        25
Ситуация 3 (сцена 2)

– Что вы тут ходите все с утра пораньше!? Я еще почту не всю
разобрала! (формально в этой компании до 10:00 нужно разбирать почту,
время 9:55). Разберу — напишу.




Вася в непонятках ушел. Бывает.
– ОК, решил Вася, подойду через пару часов.




                                                                        26
Ситуация 3 (сцена 3)

Через час Катя сама прибежала с шоколадкой и извинениями.




Катя утром поссорилась со своим МЧ, а туалетная вода, которой
пользуется Вася, совершенно случайно оказалась точно такая же как у ее
МЧ…




                                                                         27
Ситуация 3 (а если бы?)

• А если бы Вася был МЧ Кати.

• А если Катя, при этом, ПМ, а Вася разработчик в ее проекте?!

• А если Вася, правда тормоз и подводит проект?

• А если Катя поступит как нормальный ПМ и выбросит Васю из проекта?




                                                                       28
Ложь



       29
Ситуация 4 (понедельник)
            Тикет:
            название: Сериализация и
            десериализация
            Важность: высокая
            Срок: к пятнице




Катя:                                  Вася:
проектный                              разработчик
менеджер


                                                     30
Ситуация 4 (среда)

                                   Тикет:
                                   название: Сериализация и
                                   десериализация
            Как дела по задаче?    Важность: высокая
                                   Срок: к пятнице




            Все отлично!
            Основное работает,
            осталось немного
Катя:       мелочей                Вася:
проектный                          разработчик
менеджер


                                                              31
Ситуация 4 (пояснение)
ПМ запланировал на следующий понедельник отдать этот компонент на
QA инженерам:
• Подготовить эталонные входные и выходные данные.
• Реализовать тесты через чтение и запись данных
• Для этого и нужна была сериализация

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




                                                                       32
Ситуация 4 (пятница, вариант №1)
                 Нет ли у тебя не
                 закоммиченных              Тикет:
                 изменений – мы будем       название: Сериализация и
                                            десериализация
                 бранчить транк для новой   Важность: высокая
                                            Срок: к пятнице
                 версии?




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

                                                                       33
Что не так?
• Изменения, которые будут сделаны в рамках новой функциональности
затронут все классы компонента

• Если начать делать новую функциональность и сериализацию в разных
ветках, то потом смержить их будет очень непросто.

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

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




                                                                        34
Ситуация 4 (пятница, вариант №1)
                 Нет ли у тебя не
                 закоммиченных              Тикет:
                 изменений – мы будем       название: Сериализация и
                                            десериализация
                 бранчить транк для новой   Важность: высокая
                                            Срок: к пятнице
                 версии?




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

                                                                       35
Ситуация 4 (пятница, вариант №1)
                &^$^&*^ &^^%%$%^%&
                &*^&$^% *&^&*%$^&            Тикет:
                %&*^*&                       название: Сериализация и
                                             десериализация
                                             Важность: высокая
                                             Срок: к пятнице




Катя:                                Вася:
Начала грязно                        способен придумать
материться                           100500 миллионов
                                     слов в свое опрадание

                                                                        36
Ситуация 4 (пятница, вариант №2)
                 Нет ли у тебя не
                 закоммиченных              Тикет:
                 изменений – мы будем       название: Сериализация и
                                            десериализация
                 бранчить транк для новой   Важность: высокая
                                            Срок: к пятнице
                 версии?



                  Неа, у меня все
                  закоммиченно



Катя:                                       Вася:
проектный                                   разработчик
менеджер


                                                                       37
Ситуация 4 (понедельник, вариант №2)

              - Я закоммитил в транк   Тикет:
                                       название: Сериализация и
              сериализацию             десериализация
                                       Важность: высокая
                                       Срок: к пятнице
              - Я закоммитил в транк
              “небольшие.
              последние правки” к
              сериализации.




Катя:                                  Вася:
проектный                              разработчик
менеджер


                                                                  38
Ситуация 4 (пятница, вариант №1)

                     &^$^&*^ &^^%%$%^%&   Тикет:
                                          название: Сериализация и
                     &*^&$^% *&^&*%$^&    десериализация
                     %&*^*&               Важность: высокая
                                          Срок: к пятнице




Катя:                                     Вася:
Осуждена на 10 лет                        покоится с
за убийство в                             миром
состоянии аффекта

                                                                     39
Почему разработчик врал?
В среду:
• С понедельника по четверг Вася все еще доделывал предыдущую
задачу
• Так как не хотел показаться тормозом (что он медленно
разрабатывает), а то вдруг ему премию урежут.

В пятницу (при варианте 1):
• Неудачаная отмазка, но сказал (почти) правду

В пятницу (при варианте 2):
• Соврал, по той же причине, что и в среду




                                                                40
Как нужно было поступить разработчику?
В понедельник (или даже на прошлой неделе):

• Нужно было сказать правду о том, что предыдущая задача не сделана.

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




                                                                       41
Ситуация 5 (пятница)

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




Катя:                                   John:
проектный    ОК. Бат ит релли сэд.      заказчик
менеджер


                                                   42
Ситуация 5 (вторник)
       Заголовок




Классно мы погуляли вчера!
      Да уж! Неплохо! А кто-то вообще на
      работу пришел с утра?

      Я не смогла! Я только к обеду. А
      вообще надо как нибудь повторить :)

      Да вы чо то рано ушли. Мы с
      пацанами потом еще в боулинг
      поперлись.

                                            43
Не надо врать!
Если уже нет объективной причины, лучше не называть никаких причин.
Просто «нет» и все.

Лучше ничего не говорить, чем придумывать отмазки.




Только смерть может быть достаточно уважительной отмазкой, но и она
не является оправданием.
    (автор неизвестен)




                                                                      44
не
Взаимопонимание



                  45
Ситуация 6 (вариант ситуации 4, среда)

                                        Тикет:
                                        название: Сериализация и
                                        десериализация
               Как дела по задаче?      Важность: высокая
                                        Срок: к пятнице




               Все отлично!
               Основное работает,
               осталось немного
Катя:          мелочей                 Вася:
проектный                              разработчик
менеджер


                                                                   46
Почему Вася не услышал менеджера
                      (Вариант 1)

У Васи В Google Chrome :
• Десять закладок exist.ru
• Сайт знакомств
• Поисковый запрос: “чем лечить…”

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

Можно ли заниматься личными проблемами на работе?

Что делать ПМ в этой ситуации?




                                                                        47
Почему Вася не услышал менеджера
                      (Вариант 2)
…Как молью изъеден я сплином…

Посыпьте меня нафталином,

Сложите в сундук и поставьте меня на чердак,

Пока не наступит весна.




                                               48
Почему Вася не услышал менеджера
                      (Вариант 2)
…Как молью изъеден я сплином…

Посыпьте меня нафталином,

Сложите в сундук и поставьте меня на чердак,

Пока не наступит весна.

Группа “Сплин”,
Альбом “Пыльная быль”
1994-го год
Песня: “Под сурдинку”




                                               49
Почему Вася не услышал менеджера
                      (Вариант 2)
…Как молью изъеден я сплином…

Посыпьте меня нафталином,

Сложите в сундук и поставьте меня на чердак,

Пока не наступит весна.

Группа “Сплин”,                        Поэт серебрянного века,
Альбом “Пыльная быль”                  Саша Черный
Песня: “Под сурдинку”                  (Александр Михайлович
1994-й год                             Гликберг),
                                       Стихотворение: “Под Сурдинку”
                                       1909-й год




                                                                       50
Почему Вася не услышал менеджера
                      (Вариант 2)
Наши знания о мире, как правило, не совпадают с реальностью

Знания каждого человека не совпадают с реальностью

И уж тем мировосприятие двух человек не совпадают друг с другом




                                                                  51
Ситуация 7 (что говорит ПМ)
               Нужно сделать бранч от
               транка



                Нужно сделать
                сериализацию


                Нужно сделать
                сериализацию до бранча
                от транка

Катя:                                    Вася:
проектный                                очень
менеджер                                 внимательный
                                         разработчик

                                                    52
Ситуация 7 (как воспринимает разработчик)
              Нужно сделать бранч от
              транка



               Нужно сделать
               сериализацию


               Нужно сделать
               сериализацию до бранча
               от транка

Катя:                                       Вася:
проектный      Кому то что-то нужно         очень
менеджер       сделать, вот пусть.          внимательный
               кто-то это что-то и делает
                                            разработчик

                                                       53
Ситуация 7 (как могло бы быть)
            Петя, ты в следующий
            понедельник будешь
            делать бранч от транка и
            там делать.
            новую функциональность.
                                        Петя

            Вася, ты будешь делать
            сериализацию. Это
            обязательно нужно
            сделать до четверга,
            потому что в понедельник
            Петя будет
Катя        делать бранч в котором      Вася
            будет делать новую
            функцональность и ему
            там уже необходима
            сериализация.
                                               54
Заключение
• Общего рецепта нет.

• Мы все разные. Мы по-разному воспринимаем окружающий мир.

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

• Зависть это плохое чувство :)

• Врать не надо. Никогда!




                                                                      55
Благодарю за внимание
http://risik.info/?p=251
                                Сергей Борисов
                           проектный менеджер
                                    ТомскСофт
                             bsi@tomsksoft.com

                            Смешные рожицы:
                                 Ю.Ф. Алгина
                             http://pingva.info




                                             56

More Related Content

Similar to Взаимоотношения в коллективе разработчиков ПО: ложь, предательство и зависть

Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...
Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...
Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...ScrumTrek
 
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераномКурс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераномAndrey Rebrov
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Andrey Karpov
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgWG_ Events
 
Роль тестировщика в Lean. Светлана Федянина
Роль тестировщика в Lean. Светлана ФедянинаРоль тестировщика в Lean. Светлана Федянина
Роль тестировщика в Lean. Светлана Федянинаqasib
 
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)PCampRussia
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteautomated-testing.info
 
Роман Неволин «Провайдеры типов без боли и магии»
Роман Неволин «Провайдеры типов без боли и магии»Роман Неволин «Провайдеры типов без боли и магии»
Роман Неволин «Провайдеры типов без боли и магии»SpbDotNet Community
 
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...Conformato
 
Test Automation Canvas - не наступайте на глабли автоматизации
Test Automation Canvas - не наступайте на глабли автоматизацииTest Automation Canvas - не наступайте на глабли автоматизации
Test Automation Canvas - не наступайте на глабли автоматизацииAndrey Rebrov
 
Использование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияИспользование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияSQALab
 
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...Lviv Startup Club
 
SAST, борьба с потенциальными уязвимостями
SAST, борьба с потенциальными уязвимостямиSAST, борьба с потенциальными уязвимостями
SAST, борьба с потенциальными уязвимостямиAndrey Karpov
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”HYS Enterprise
 
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...Lviv Startup Club
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
SKAZKA: Как не потерять самое важное?
 SKAZKA: Как не потерять самое важное? SKAZKA: Как не потерять самое важное?
SKAZKA: Как не потерять самое важное?DevGAMM Conference
 

Similar to Взаимоотношения в коллективе разработчиков ПО: ложь, предательство и зависть (20)

Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...
Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...
Владимир Завертайлов. Требовательность, мозгоклюйство и провокации: уровни уп...
 
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераномКурс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
Курс молодого бойца-автоматизатора - как остаться в живых и стать ветераном
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Петрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.orgПетрова Ксения - Data mining на практике - dmlabs.org
Петрова Ксения - Data mining на практике - dmlabs.org
 
Роль тестировщика в Lean. Светлана Федянина
Роль тестировщика в Lean. Светлана ФедянинаРоль тестировщика в Lean. Светлана Федянина
Роль тестировщика в Lean. Светлана Федянина
 
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
От идеи до 10 миллионов скачиваний: King of Thieves (Олег Якубенков, Zeptolab)
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestComplete
 
Роман Неволин «Провайдеры типов без боли и магии»
Роман Неволин «Провайдеры типов без боли и магии»Роман Неволин «Провайдеры типов без боли и магии»
Роман Неволин «Провайдеры типов без боли и магии»
 
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
4,5 года на Elance: история Mobindustry или Как перестать продавать по $8 и н...
 
Test Automation Canvas - не наступайте на глабли автоматизации
Test Automation Canvas - не наступайте на глабли автоматизацииTest Automation Canvas - не наступайте на глабли автоматизации
Test Automation Canvas - не наступайте на глабли автоматизации
 
Использование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестированияИспользование игровых элементов и методов в процессе тестирования
Использование игровых элементов и методов в процессе тестирования
 
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...
Дов Німрац “Що таке проблемний продукт і як з цим боротись?” Kharkiv Project ...
 
SAST, борьба с потенциальными уязвимостями
SAST, борьба с потенциальными уязвимостямиSAST, борьба с потенциальными уязвимостями
SAST, борьба с потенциальными уязвимостями
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Why it is not working
Why it is not workingWhy it is not working
Why it is not working
 
“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”“QA job interview: life hacks and scripts for success”
“QA job interview: life hacks and scripts for success”
 
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...
Дов Німрац "“Що таке проблемний продукт і як з цим боротись?" Lviv Project Ma...
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
SKAZKA: Как не потерять самое важное?
 SKAZKA: Как не потерять самое важное? SKAZKA: Как не потерять самое важное?
SKAZKA: Как не потерять самое важное?
 

Взаимоотношения в коллективе разработчиков ПО: ложь, предательство и зависть

  • 1. Взаимоотношения в коллективе разработчиков программного обеспечения: ложь, предательство и зависть Сергей Борисов проектный менеджер ТомскСофт
  • 2. Об авторе В настоящее время: - руководитель проекта в ТомскСофт - ст. преп. в ТУСУР, каф. КСУП Ранее: - SmaartMobile - SiberLogic - ЭлеСи - ТМЦДО ТУСУР - НИИ АЭМ Стаж в разработке ПО: 19 лет Стаж в высшем образовании: 15 лет Сергей Борисов 2
  • 3. Disclaimer Все совпадения названий, имен и ситуаций случайны Все аналогии ложны Если Вам кажется, что Вы знаете кто именно был в таких ситуациях, и когда они произошли, то это не совсем так 3
  • 4. Текст песни полностью: … Три пули мне отлили до утра Мои друзья – они вчера так звались. Три пули: ложь, предательство и зависть. … Ирина Орищенко, Три пули. 4
  • 6. Ситуация №1 (зависть) Вася: Петя: 40 000 руб 45 000 руб 6
  • 7. Ситуация №1 (зависть) Вася: Петя: 40 000 руб 45 000 руб 7
  • 8. Почему зарплата может различаться • Коля выполняет ту же самую работу, но качественнее • Коля выполняет ту же самую работу, но быстрее • Начальство считает, что Коля выполняет работу быстрее и/или качественнее • Коля просто дольше работает в этой компании, и он уже заслужил повышение за лояльность к компании • Коля работает совсем недавно, но когда он пришел работать, он договорился с начальством на более высокую зарплату • У Коли “более тесные” отношения с начальством 8
  • 9. 9
  • 10. Что это было? • Реальные ситуации, которые могли случиться в реальной компании • Стереотипы 10
  • 12. Скрывать размер зарплат Pro: В этом случае, Вася (теоретически) просто не узнает зарплаты Коли и поэтому, у него не будет поводов для зависти. Contra: • любая попытка скрыть что-то всегда приведет к обратному эффекту • сотрудники будут делиться информацией • сотрудники будут подозревать друг-друга 12
  • 13. Вводить формальные критерии • качество кода • знание технологий • количество строк исходного кода • скорость и качество решения поставленных задач … 13
  • 14. Качество решения задач Тикет: название: Сериализация и десериализация Важность: высокая Назначена Реализован Принято о Отклонено Вася: Саня: QA разработчик инженер 14
  • 15. Качество решения задач Разработчик Задач сделано Задач Качество отклонено Петя 10 0 100% Вася 20 1 95% Даша 15 3 80% Миша 16 8 50% Лена 5 2 40% 15
  • 16. Качество решения задач У тебя бага в задаче. Да? Точно! Ну ты не переводи тикет в баг треккере, я сейчас Петя: быстренько поправлю, Саня: QA разработчик там мелочевка. инженер 16
  • 17. Знание технологий Тикет: Сериализация и Тикет: Приложение падает, при десериализация поиске в пустом хранилище Тип: фича Тип: бага Первичная технология: С++ Первичная технология: С++ Вторичная технология: XML Вторичная технология: Сложность: средняя Сложность: низкая Объем работы: 20 часов Объем работы: 2 часа Тикет: Оптимизация хранилища Тикет: Время поиска по полю “имя” Тип: фича растет линейно от числа Первичная технология: С++:boost элементов Вторичная технология: algorithms Тип: бага Сложность: высокая Первичная технология: С++:boost Объем работы: 40 часов Вторичная технология: algorithms Сложность: средняя Объем работы: 4 часа 17
  • 18. Качество решения задач Задача C++:boost C++ XML algorithms ИТОГО Задача 1 20*4=80 20*4/2=40 120 Задача 2 40*5=100 40*5/2=50 150 Задача 3 2*2=4 4 Задача 4 2*4=8 2*4/2=4 12 Задача ... 18
  • 19. Качество решения задач Технология C+ C++ XML algorithms ИТОГО +:boost Значимость 10 5 15 20 50 Петя 100*10/5 80*5/50 40*15/50 50*20/50 50 0 Вася 8*10/50 4*5/50 4*20/50 3.6 19
  • 20. Все критерии ложны! Как только появляется формальная табличка “крутости” разработчика, от которой зависит зарплата все начинают работать на табличку, а не на результат. 20
  • 23. Ситуация №2 (предательство) Проект провалился. Извечный русский вопрос — кто виноват? Саня: QA инженер Вася: разработчик Оля: менеджер проекта Петя: Даша: разработчик разработчик 23
  • 24. Так кто же виноват? • Если проект успешен, то это успех всей команды • Если проект провален, то в этом виноват только менеджер 24
  • 25. Ситуация 3 (сцена 1) Разработчик Вася утром, примерно, в 9:55 подходит к техническому писателю, которого зовут, пускай для определенности, Катя. И говорит: Вася: Катя: технический разработчик писатель – Катя, я тебе вчера вечером документик выслал на полторы странички на перевод. Когда сделаешь? 25
  • 26. Ситуация 3 (сцена 2) – Что вы тут ходите все с утра пораньше!? Я еще почту не всю разобрала! (формально в этой компании до 10:00 нужно разбирать почту, время 9:55). Разберу — напишу. Вася в непонятках ушел. Бывает. – ОК, решил Вася, подойду через пару часов. 26
  • 27. Ситуация 3 (сцена 3) Через час Катя сама прибежала с шоколадкой и извинениями. Катя утром поссорилась со своим МЧ, а туалетная вода, которой пользуется Вася, совершенно случайно оказалась точно такая же как у ее МЧ… 27
  • 28. Ситуация 3 (а если бы?) • А если бы Вася был МЧ Кати. • А если Катя, при этом, ПМ, а Вася разработчик в ее проекте?! • А если Вася, правда тормоз и подводит проект? • А если Катя поступит как нормальный ПМ и выбросит Васю из проекта? 28
  • 29. Ложь 29
  • 30. Ситуация 4 (понедельник) Тикет: название: Сериализация и десериализация Важность: высокая Срок: к пятнице Катя: Вася: проектный разработчик менеджер 30
  • 31. Ситуация 4 (среда) Тикет: название: Сериализация и десериализация Как дела по задаче? Важность: высокая Срок: к пятнице Все отлично! Основное работает, осталось немного Катя: мелочей Вася: проектный разработчик менеджер 31
  • 32. Ситуация 4 (пояснение) ПМ запланировал на следующий понедельник отдать этот компонент на QA инженерам: • Подготовить эталонные входные и выходные данные. • Реализовать тесты через чтение и запись данных • Для этого и нужна была сериализация А паралельно Пете дать задачу по оптимизации скорости работы данного компонента. При этом, радикально изменится существующая структура внутренних данных компонента, но не изменится формат ввода-вывода и внешняя функциональность. 32
  • 33. Ситуация 4 (пятница, вариант №1) Нет ли у тебя не закоммиченных Тикет: изменений – мы будем название: Сериализация и десериализация бранчить транк для новой Важность: высокая Срок: к пятнице версии? Тут такое дело… Ну в общем… Я столкнулся с неожиданными сложностями. Катя: В общем, я не успеваю Вася: проектный сегодня сделать. разработчик менеджер Давай я в отдельной ветке доделаю… 33
  • 34. Что не так? • Изменения, которые будут сделаны в рамках новой функциональности затронут все классы компонента • Если начать делать новую функциональность и сериализацию в разных ветках, то потом смержить их будет очень непросто. • Фактически, сериализацию для новой версии компонент нужно будет делать заново. • Стопроцентной гарантии, что сериализация новой версии компонент будет сделана в точности совместимой со старой версией компонент нет. 34
  • 35. Ситуация 4 (пятница, вариант №1) Нет ли у тебя не закоммиченных Тикет: изменений – мы будем название: Сериализация и десериализация бранчить транк для новой Важность: высокая Срок: к пятнице версии? Тут такое дело…. Ну в общем…. Я столкнулся с неожиданными сложностями.. Катя: В общем, я не успеваю Вася: проектный сегодня сделать.. разработчик менеджер Давай я в отдельной ветке доделаю… 35
  • 36. Ситуация 4 (пятница, вариант №1) &^$^&*^ &^^%%$%^%& &*^&$^% *&^&*%$^& Тикет: %&*^*& название: Сериализация и десериализация Важность: высокая Срок: к пятнице Катя: Вася: Начала грязно способен придумать материться 100500 миллионов слов в свое опрадание 36
  • 37. Ситуация 4 (пятница, вариант №2) Нет ли у тебя не закоммиченных Тикет: изменений – мы будем название: Сериализация и десериализация бранчить транк для новой Важность: высокая Срок: к пятнице версии? Неа, у меня все закоммиченно Катя: Вася: проектный разработчик менеджер 37
  • 38. Ситуация 4 (понедельник, вариант №2) - Я закоммитил в транк Тикет: название: Сериализация и сериализацию десериализация Важность: высокая Срок: к пятнице - Я закоммитил в транк “небольшие. последние правки” к сериализации. Катя: Вася: проектный разработчик менеджер 38
  • 39. Ситуация 4 (пятница, вариант №1) &^$^&*^ &^^%%$%^%& Тикет: название: Сериализация и &*^&$^% *&^&*%$^& десериализация %&*^*& Важность: высокая Срок: к пятнице Катя: Вася: Осуждена на 10 лет покоится с за убийство в миром состоянии аффекта 39
  • 40. Почему разработчик врал? В среду: • С понедельника по четверг Вася все еще доделывал предыдущую задачу • Так как не хотел показаться тормозом (что он медленно разрабатывает), а то вдруг ему премию урежут. В пятницу (при варианте 1): • Неудачаная отмазка, но сказал (почти) правду В пятницу (при варианте 2): • Соврал, по той же причине, что и в среду 40
  • 41. Как нужно было поступить разработчику? В понедельник (или даже на прошлой неделе): • Нужно было сказать правду о том, что предыдущая задача не сделана. • Если есть не сделанная задача, то предложить менеджеру расставить приоритеты. Что делать вперед, что потом. 41
  • 42. Ситуация 5 (пятница) Обещанная сериализация не может быть доставлена в понедельник. Потому, что возникли непредвиденные технические трудности в реализации. Катя: John: проектный ОК. Бат ит релли сэд. заказчик менеджер 42
  • 43. Ситуация 5 (вторник) Заголовок Классно мы погуляли вчера! Да уж! Неплохо! А кто-то вообще на работу пришел с утра? Я не смогла! Я только к обеду. А вообще надо как нибудь повторить :) Да вы чо то рано ушли. Мы с пацанами потом еще в боулинг поперлись. 43
  • 44. Не надо врать! Если уже нет объективной причины, лучше не называть никаких причин. Просто «нет» и все. Лучше ничего не говорить, чем придумывать отмазки. Только смерть может быть достаточно уважительной отмазкой, но и она не является оправданием. (автор неизвестен) 44
  • 46. Ситуация 6 (вариант ситуации 4, среда) Тикет: название: Сериализация и десериализация Как дела по задаче? Важность: высокая Срок: к пятнице Все отлично! Основное работает, осталось немного Катя: мелочей Вася: проектный разработчик менеджер 46
  • 47. Почему Вася не услышал менеджера (Вариант 1) У Васи В Google Chrome : • Десять закладок exist.ru • Сайт знакомств • Поисковый запрос: “чем лечить…” Люди просто заняты своими личными проблемами и им нужно просто скорее от ПМ отмахнуться. То есть они просто действительно не слышат. Можно ли заниматься личными проблемами на работе? Что делать ПМ в этой ситуации? 47
  • 48. Почему Вася не услышал менеджера (Вариант 2) …Как молью изъеден я сплином… Посыпьте меня нафталином, Сложите в сундук и поставьте меня на чердак, Пока не наступит весна. 48
  • 49. Почему Вася не услышал менеджера (Вариант 2) …Как молью изъеден я сплином… Посыпьте меня нафталином, Сложите в сундук и поставьте меня на чердак, Пока не наступит весна. Группа “Сплин”, Альбом “Пыльная быль” 1994-го год Песня: “Под сурдинку” 49
  • 50. Почему Вася не услышал менеджера (Вариант 2) …Как молью изъеден я сплином… Посыпьте меня нафталином, Сложите в сундук и поставьте меня на чердак, Пока не наступит весна. Группа “Сплин”, Поэт серебрянного века, Альбом “Пыльная быль” Саша Черный Песня: “Под сурдинку” (Александр Михайлович 1994-й год Гликберг), Стихотворение: “Под Сурдинку” 1909-й год 50
  • 51. Почему Вася не услышал менеджера (Вариант 2) Наши знания о мире, как правило, не совпадают с реальностью Знания каждого человека не совпадают с реальностью И уж тем мировосприятие двух человек не совпадают друг с другом 51
  • 52. Ситуация 7 (что говорит ПМ) Нужно сделать бранч от транка Нужно сделать сериализацию Нужно сделать сериализацию до бранча от транка Катя: Вася: проектный очень менеджер внимательный разработчик 52
  • 53. Ситуация 7 (как воспринимает разработчик) Нужно сделать бранч от транка Нужно сделать сериализацию Нужно сделать сериализацию до бранча от транка Катя: Вася: проектный Кому то что-то нужно очень менеджер сделать, вот пусть. внимательный кто-то это что-то и делает разработчик 53
  • 54. Ситуация 7 (как могло бы быть) Петя, ты в следующий понедельник будешь делать бранч от транка и там делать. новую функциональность. Петя Вася, ты будешь делать сериализацию. Это обязательно нужно сделать до четверга, потому что в понедельник Петя будет Катя делать бранч в котором Вася будет делать новую функцональность и ему там уже необходима сериализация. 54
  • 55. Заключение • Общего рецепта нет. • Мы все разные. Мы по-разному воспринимаем окружающий мир. • Не возможно придумать систему распределения благ, которая устроит всех. • Зависть это плохое чувство :) • Врать не надо. Никогда! 55
  • 56. Благодарю за внимание http://risik.info/?p=251 Сергей Борисов проектный менеджер ТомскСофт bsi@tomsksoft.com Смешные рожицы: Ю.Ф. Алгина http://pingva.info 56