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

Конечно, все определяет ваш стиль управления. Если вы предпочитаете авторитарные решения, то можете просто указать властным перстом, куда всем следует идти. И не беда, если кто-то противится садиться лицом в стену или друг к другу. Однако со времен отмены крепостного права в 1861 году такой стиль в нашей стране планомерно теряет популярность. И если вы все же озабочены комфортом сотрудников, то стоит собрать и как-то учесть их предпочтения. Но вот тут-то и подкрадывается дьявол, тот самый, который в деталях: как собрать, как учесть, кому отдавать предпочтение и т.д.

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

Всем не угодишь или все-таки...?


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

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

Наш путь к идеальной рассадке


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



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

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

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

Получилось так: если человека посадили на место из его списка ТОП-1, то штраф 2; если из списка ТОП-2 — штраф 4, ТОП-3 — 8, ТОП-4 — 16 и так далее. Я не утверждаю, что эта метрика оптимальная, но выглядит разумной.

Я написал простую программу на Python — в нее вводятся приоритеты от коллег, и она рассчитывает варианты расстановки с минимальным штрафом. Алгоритм объявил коллегам заранее (как я был наивен!). Списки все публиковали в открытую, чтобы иметь возможность при желании договориться.

Однако, увидев расчеты, некоторые сотрудники поняли, что можно попробовать подобрать свою «заявку», чтобы получить искомое место. Датасайентисты такие датасайентисты!:)

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

Собрав заявки со второго тура, я прогнал программу уже финально. Фуфх! Вроде все довольны.

Вместо P.S.


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

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

Николай Князев, руководитель группы машинного обучения «Инфосистемы Джет»

Код на GitHub

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


  1. pallada92
    19.04.2019 12:11
    +2

    Работал над похожим проектом в habidatum. Мы проанализировали переписку в Slack и сделали веб-приложение, где можно было расставить столы и получить метрику удобства этой расстановки. Поверх столов накладывался граф количества сообщений, у которого можно брать срезы по времени суток.
    Метрика — сколько километров в день пройдёт в среднем сотрудник, если вместо отправки сообщения он будет ходить до адресата пешком.
    После того, как мы подобрали оптимальное расположение столов, мы задумались: может быть, полезнее если сотрудники будут больше двигаться, то есть метрику лучше максимизировать?


    1. Hokum
      19.04.2019 14:20
      +1

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


      1. reinvent
        20.04.2019 12:14

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


  1. CryptoPirate
    19.04.2019 12:35

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

    Получилось так: если человека посадили на место из его списка ТОП-1, то штраф 2; если из списка ТОП-2 — штраф 4, ТОП-3 — 8, ТОП-4 — 16 и так далее. Я не утверждаю, что эта метрика оптимальная, но выглядит разумной.


    Хм, а почему за ТОП-1 штраф 2? Если квадратичный штраф, то 1 должно быть, нет?
    И потом, зачем вообще штраф >0 за ТОП-1? Если посадили на самое любимое место, то можно поставить штраф 0. Разве нет?


    1. iRumata Автор
      19.04.2019 14:26

      Просто, чтобы писать меньше кода с точки зрения функции можно просто вычесть из всего 2, меня скорее интересовала скорость разработки:)


    1. mk2
      20.04.2019 00:38
      -2

      Как по мне, это вообще больше похоже на экспоненциальный штраф, т.е. 32 за ТОП-5, 64 за ТОП-6 и т.п.
      А всё потому, что 2 за ТОП-1 и 8 за ТОП-3 вместо 1 и 8 соответственно.


  1. KonstantinSpb
    19.04.2019 12:38

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


    1. dididididi
      19.04.2019 12:50
      +1

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


      1. JustDont
        19.04.2019 14:27

        Да, это огромнейший фактор дискомфорта. Даже если ты идеальный сотрудник, и от звонка до звонка у тебя 100% времени занятно рабочими задачами во благо конторы. Всё равно дискомфорт.

        А если еще и сидеть монитором к двери, то можно умножать на два.


      1. Perlovich
        19.04.2019 16:54

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


        У меня было совершенно наоборот. Когда я сидел в опенспейсе, я занял себе угловой стол так, что все видели, что у меня на мониторах, но я не видел ничего кроме стены с одной стороны и окна с другой (стол был угловой).

        Я работал под музыку в наушниках и вообще забывал, что я не у себя дома, а где-то в офисе. Это было для меня самое комфортное место посадки в опенспейсе)


      1. Stas911
        20.04.2019 06:06

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


        1. merhalak
          20.04.2019 11:48

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


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


  1. Igor_Shumilov
    19.04.2019 13:05

    У нас эта задача решалась по таком алгоритму:
    1. Определение физического расположения столов в помещении. Чтобы за каждым столом было удобно сидеть, никто не упирался локтями в стены, не бился спинками стульев и т.д.
    2. Определение сотрудников, к которым чаще всего приходят коллеги. Таких мы сажали поближе к двери, чтобы посетители не мешали своим хождением другим;
    3. Дальше принимались в расчёт организация команд внутри отдела. Чтобы они находились рядом друг с другом;
    4. Затем начиналась игра с психологией людей. Не все любят сидеть спиной ко входу и вообще к местам прохода людей. Чувствуют себя неуютно от того, что к ним могут заглянуть в монитор. Зато другим на это пофиг. Хотя котиков на Ютьюбе все смотрят примерно одинаковое количество рабочего времени.
    5. Ну а в случае возникновения спорных вопросов включалась дедовщина. Кто дольше работает, у того и приоритет при прочих равных.

    В итоге все расселись, и конфликтов не происходит. Даже на места уволившихся сотрудников никто не пересаживается, привыкли к своим.


    1. iRumata Автор
      19.04.2019 14:52

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


      1. Igor_Shumilov
        19.04.2019 14:55

        У нас было около 10 сотрудников в отделе, которые находятся в одном помещении.


  1. shiko_1st
    19.04.2019 14:35

    По состоянию на 17.04 вместо кофе тоже сидел человек!


    1. iRumata Автор
      19.04.2019 14:51

      Мнение тех, кто пришел позже программой уже не учитывалось


      1. shiko_1st
        19.04.2019 14:52

        Нет ли в этом дискриминации? ;-)


        1. algotrader2013
          19.04.2019 17:31

          Нет. Все логично. Тот, кто пришел позже, имеет возможность ознакомиться со всеми условиями (в том числе. какой стул ему достанется) и принять или не принять оффер, исходя из этого.


          1. qw1
            20.04.2019 10:34

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


            1. algotrader2013
              20.04.2019 21:59
              +1

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


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


  1. axtrace
    19.04.2019 18:35

    Недавно думал, как бы к этой задаче применить теорию игр, в частности, ru.wikipedia.org/wiki/Задача_о_соседях_по_комнате


  1. Nexus7
    19.04.2019 21:19
    +2

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


    1. iRumata Автор
      19.04.2019 22:42
      +1

      не всем нравится когда на них смотрят все рабочее время, и к тому-же за спиной у сидящих придется ходить, что тоже не очень комфортно, и тот кто сидит около окна будет к нему спиной=> ему в монитор будет солнце светить


      1. Nexus7
        19.04.2019 23:06
        +1

        не всем нравится когда на них смотрят все рабочее время

        А так они будут знать, что на них смотрят, машут руками и зовут на чай или обсудить какой-нибудь вопрос.

        и к тому-же за спиной у сидящих придется ходить, что тоже не очень комфортно

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

        и тот кто сидит около окна будет к нему спиной=> ему в монитор будет солнце светить

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

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


        1. iRumata Автор
          20.04.2019 00:44

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


          1. Nexus7
            20.04.2019 01:29

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

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

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


  1. Looka
    19.04.2019 22:42

    А не рассматривали принципиально другой подход к вопросу размещения в офисном пространстве.
    Когда у сотрудника нет постоянного рабочего места.
    Есть пул рабочих мест М и пул сотрудников С.
    Часть сотрудников регулярно работает на везде и в командировках, часть в отпусках, поэтому М < C на 20-30% (различное для разных компаний может быть).
    На кануне человек делает заявку на раб место, система регистрирует и случайным образом выделяет рабочее место. По реализации могут быть варианты, но принцип думаю понятен.
    Собственно у самих грядет переезд и вот обсуждается такой вариант.
    Есть у кого такой опыт?


    1. iRumata Автор
      19.04.2019 22:45
      +1

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


      1. splatt
        20.04.2019 11:53

        Можно сделать как в Valve, у которых все рабочие столы мобильные.


        1. Stas911
          21.04.2019 01:59

          И каждый раз подключать стол к розетке? Или как они с мониторами и зарядками?


          1. splatt
            21.04.2019 02:19

            Мониторы и зарядки в сетевой фильтр, а его в розетку?


    1. Stas911
      20.04.2019 06:08

      У нас так на работе. Выделенных мест нет — все места имеют одинаковые столы, огромные мониторы и докстанции (благо у всех одинаковые ноуты и втыкать приходится только один провод, чтобы сразу получить зарядку, монитор, мышь и клаву). Места не резервируются — кто пришет первый — тот и сел. Для личных вещей есть локеры. Очень важно сразу определить и строго поддерживать порядок пользования (все личные вещи в конце дня уборщица относит в Lost&Found, еда выкидывается и все места приводятся к первоначальному состоянию). Поскольку приезжаю я довольно рано — то в 90% занимаю одно и то же место по факту. Начальство тоже как-то тяготеет к определенным местам, но если пришел и занял — никто слова не скажет.


    1. ggo
      22.04.2019 10:36

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