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

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

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

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

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

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

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

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

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

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

Сначала хотел просто поменять в коде логин «Вася» на «Маша», но потом подумал, что Маша тоже долго не продержится и появиться кто-то другой. И тут на нашего гения снизошло озарение! Он понял, что всех пользователей нужно разделить на группы и раздавать права доступа строго по группам. Тогда можно будет просто всех неумех включать в группу «Стажеры».

Так появилось следующее разделение:

Администраторы – могут все.

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

Работники – могут все, но только со своими записями.

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

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

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

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

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

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

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

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

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

Все вы играли в «Морской бой» или «Шахматы». Есть ось X и Y. На поле мы располагаем корабли или шахматные фигуры, а чтобы определить местоположение достаточно знать всего два значения X и Y.

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

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

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

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

Но это уже история про микросервисы, про которые я расскажу в следующих главах.

Вывод

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

Когда предприниматель до атома понимает, что движет тем или иным процессом, а главное, как на это можно повлиять, тогда появляется тот самый рычаг для «поднятия Земли». И пусть на это уйдет десять или двадцать лет, но шанс не быть смытым конкурентами при очередном кризисе возрастает, когда ты действуешь не как 99% компаний на рынке.