Принципы SOLID и основы построения коммерческой организации
Привет, дорогой друг!
Сегодня я тебе объясню принципы SOLID максимально понятным способом.
Для того чтобы совсем упростить задачу, в этом тексте не будет ни единой строчки кода.
Представь себе, что ты решил заняться бизнесом.
Первым делом ты организуешь небольшую торговую компанию. Ты только начинаешь свой путь в бизнесе, и поэтому всё делаешь сам. И закупаешь товар, и развозишь его по точкам, и ведёшь учёт, и ремонтируешь грузовую газель.
Но заказы растут, обороты увеличиваются, и вот ты уже нанимаешь менеджера по закупкам, чтобы покупал, менеджера по продажам, чтобы продавал, ремонтника, чтобы чинил, и бухгалтера, чтобы считал.
Людей в твоей команде немного, все друг друга знают, вы как одна большая дружная семья. И нет-нет, но периодически, кто-нибудь из сотрудников пытается взять себе дополнительные полномочия из чужой области. То ремонтник порывается съездить на рынок и закупить товар (ему же по дороге), то продажник научить ремонтника как правильно чинить технику (он всё детство провёл в гараже, где они с друзьями чинили папину волгу), то бухгалтерша Галина Петровна решает всех построить и взять на себя часть руководящих функций.
В результате никто не знает, кто за что отвечает, ответственность размывается, и люди перестают понимать, где находятся границы их зоны ответственности.
Но ты стоишь на страже интересов бизнеса! Железной рукой ты пресекаешь безобразия и вводишь жёсткий принцип — каждый сотрудник отвечает только за своё поле деятельности, у каждого своя ответственность, и никто в чужой огород лазать не смей. Закупщик — только закупает. Продажник — только продаёт. Каждый сотрудник должен иметь только одну зону ответственности.
Поздравляю. Ты на собственной шкуре постиг необходимость внедрения принципа Единственной ответственности он же Single Responsibility Principle.
* * *
Но рост компании не остановить!
Номенклатура товаров и даже отрасли бизнеса становятся всё шире и шире. И вот твои менеджеры уже не справляются с навалившимся объёмом работы. Ведь ты завоёвываешь всё новые рынки, а у каждого рынка своя специфика.
Тогда своих менеджеров ты назначаешь руководителями отделов, а в каждом отделе организуешь отдельные направления.
Возьмём, к примеру, отдел продаж. Руководитель отдела продаж сам уже не ведёт переговоры с клиентами, а занимается общей организацией деятельности своих менеджеров и следит, чтобы отдел работал нормально. А за каждое отдельное направление продаж отвечает свой собственный менеджер. Есть менеджер по продаже ковров и менеджер по продаже шкафов, есть менеджер по продаже игрушек и менеджер по продаже подушек, есть менеджер по продаже воды и менеджер по продаже еды.
И если ты решишь расширить свой бизнес и завоевать новый рынок, то тебе не нужно будет нагружать этим руководителя отдела продаж. Он и так много на себе тащит. Тебе будет достаточно лишь нанять нового менеджера, который будет отвечать за новое направление. Функции руководителя не изменились. Отдел продаж расширился.
И да, прими мои поздравления, ты только что изобрёл принцип Открытости-закрытости, он же Open closed Principle.
* * *
Тем временем, компания растёт и развивается.
И тут ты замечаешь, что сотрудники хотят отдыхать. И уходят в отпуск. Или заболевают. Или берут отгулы.
Если в отпуск уходит рядовой сотрудник — ничего страшного. Как ушёл, так и вернётся. А вот если в отпуск уходит кто-то из руководителей, от действий и решений которого зависит бесперебойная работа компании, здесь уже могут возникнуть трудности чисто организационного порядка.
Ясно, что чтобы компания работала в таких случаях без ограничений, у каждого такого руководящего сотрудника должен быть заместитель, который обладает теми же полномочиями.
И вот представьте, ситуация! В отпуск ушёл финансовый директор, оставив за себя заместителя. Оставил ему ключ от сейфа, в котором лежат наличные (ведь платежи должны совершаться бесперебойно). А ключ от системы банк-клиент забрал с собой.
Тут возникает срочная необходимость провести незапланированный платёж. А денег в кассе не хватает. И заместитель финансового отдела и рад бы заплатить, да сделать ничего не может.
А в соседнем отделе другая проблема. Ушёл в отпуск начальник склада, оставив за себя своего помощника. А помощник решил проявить инициативу, и помимо стандартной доверенности на получение ТМЦ, стал требовать от покупателей визу от начальников финансового отдела, отдела продаж и службы безопасности
В результате отгрузки стоят, продажи падают, цена на акции твоей компании на чикагской бирже стремительно идёт вниз.
Но ты, как всегда, стоишь на страже интересов бизнеса и железной рукой издаёшь приказ:
Заместитель не может иметь полномочий меньше чем начальник, и не должен требовать от клиентов больше, чем начальник.
Вот таким образом, чуть не вызвав срыв поставок и платежей, ты на своей шкуре убедился в необходимости примененияпринципа Подстановки Варвары Лисковой, он же Liskov substitution Principle.
* * *
Новые вызовы требуют новых решений.
И вот ты решаешь нанять нового руководителя отдела продаж. Тебе его очень хвалили. Очень эффективный. Из бывших военных.
Сначала всё идёт нормально. Дисциплину подтянули, опоздания сократились.
Но проходит несколько месяцев, и ты замечаешь, что продажи падают, текучка кадров в отделе увеличилась, а лучшие продажники на грани увольнения.
Приходится идти с инспекцией в отдел.
Что же выяснилось?
Сначала новый руководитель отдела постановил, что у всех продажников должны быть водительские права. Это действительно было нужно для тех сотрудников, которые сами выезжали к клиентам. Но совершенно не нужно тем, кто работал только из офиса.
Дальше он постановил, чтобы каждый продажник владел английским языком на уровне не ниже B2, и потребовал предоставить соответствующий сертификат. Менеджерам по внешней торговле это было ок. Но несчастные специалисты по холодным звонкам внутри России впали в тоску от безысходности.
Руководитель уже хотел было заставить всех своих сотрудников пройти сертификацию на знание складской логистики, управлением CRM системами и сдать экзамен на знания основных нормативных и правовых актов в сфере гражданской обороны и чрезвычайных ситуаций.
Но тут явился ты и своей личной авторитарной волей избавил сотрудников отдела продаж от лишних и не нужных им требований.
В результате было принято решение: Не следует заставлять сотрудника обладать теми навыками, которые не нужны ему в рамках выполнения им своей работы. Сотрудник должен уметь производить только те операции, которые необходимы для осуществления им его функций.
Ну, а ты внедрил в своей компании принцип Разделения интерфейсов, он же Interface Segregation Principle.
* * *
Пока ты разбирался с тем, что там наворотил новый руководитель отдела продаж, остальные сотрудники опять отбились от рук, и вместо того, чтобы делать так, как правильно, стали делать так, как им удобно.
Если условному Васе из отдела логистики, нужно было попросить что-то у условной Маши из бухгалтерии, то Вася напрямую к ней и обращался, минуя главбуха (Никогда так не делайте. С главбухами шутки плохи!).
В результате главбух не знает, что делает бухгалтер Маша, которая занята поручением Васи, а также бухгалтер Света, которую о чём-то попросил финансист Серёжа, а также бухгалтер Люба, которая, как выяснилось, куда-то уехала по поручению Николая Ивановича.
Пришлось тебе опять взять управление в свои руки и издать приказ: сотрудник одного отдела не может напрямую давать поручение сотруднику другого отдела. Действовать можно только через его начальника. А там уже сам начальник распределит нагрузку на своих подчинённых.
Вот таким образом ты на своей шкуре убедился в необходимости внедрения принципа Инверсии зависимостей, он же Dependency Inversion
Поздравляю! Теперь ты можешь управлять транснациональной корпорацией. (Ну, или написать простенькое приложение на Java, если назовёшь начальников интерфейсами, а сотрудников — классами).