kiss листы что такое
Что такое принцип KISS и как использовать его в повседневной жизни?
Наверное, каждому из нас хоть раз в жизни приходилось слышать в свой адрес расхожее: «Будь проще, и люди к тебе потянутся!»
Но что на практике может означать «быть проще» — не грузиться, не сомневаться, не задирать нос?
Чтобы получить работающее руководство к упрощению собственного отношения к жизни, предлагаю применить известный в конструкторских кругах принцип KISS.
KISS — это акроним фразы «Keep It Simple, Stupid» (в вольном переводе это звучит как «Будь проще, идиот»). Другие версии расшифровки не столь обидны. Например: «Keep It Sweet & Simple» (Пусть будет просто и сладко), «Keep It Short & Simple» (Коротко и ясно), «Keep it Simple, Sweetheart» (Короче, дорогуша!), и даже «Keep it Simple, Sherlock» (на русский адекватнее всего было бы перевести эту фразу как «Элементарно, Ватсон!»).
Автор этого универсального совета доподлинно не известен, соответственно, которая из расшифровок акронима KISS является оригинальной, неясно.
По одной из легенд, столь интересную интерпретацию философского принципа «бритвы Оккама» дал Томас Эдисон (изобретатель, обладатель около четырех тысяч патентов). Бытует такая история: Эдисон принимал на работу молодого инженера и в качестве тестового задания попросил определить объем сосуда замысловатой формы. После нескольких часов напряженных раздумий претендент представил формулы расчетов, на что Эдисон посоветовал просто наполнить сосуд водой, а затем вылить ее в емкость, объем которой известен (скажем, в литровую банку). Якобы тогда же Эдисон посоветовал инженеру-новичку «быть проще».
Итак, делая выбор (чем мы, собственно, и занимаемся каждое мгновение нашей жизни), необходимо убедиться, действительно ли найденное решение — наиболее простое из возможных, действительно ли оно решает проблему, а не усложняет ситуацию. Здесь пригодятся некоторые правила KISS:
1. Предпринятое действие должно решать самую главную проблему самым простым способом. Если вас беспокоит стена отчужденности, возникшая между вами и другом (друзьями), начните «выяснение отношений» прямо с этого вопроса, а не с обходных маневров вроде: кто из вас дольше занят на работе и кто последний раз не вымыл ванную.
2. Не надо делать решение сложнее, чем исходная проблема. Друзья захотели собраться на вечеринку у вас дома? Прекрасно. Но не надо делать из этого мероприятия костюмированный бал с тремя переменами блюд и фейс-контролем на входе.
3. Не меняйте правила игры. Не требуйте от людей освоить новый вид деятельности (выучить язык, научиться водить автомобиль, кататься на лыжах) для того, чтобы они имели честь общаться с вами.
4. Решение должно быть гибким. Если встретиться (поболтать) с вами можно только при соблюдении многих ограничений — во времени, пространстве, ресурсах — с вами действительно непросто иметь дело.
5. Придерживайтесь правила 90/90. Нельзя нравиться всем. Максимум, что возможно, — устраивать 90% своих знакомых и друзей на 90%. Оставьте за собой право на недостатки!
«Сейчас система работает как флешка». Что таксопарки думают про КИС «АРТ»?
Месяц назад в Москве и области наконец заработала комплексная информационная система «Аналитика работы такси» — КИС «АРТ». Ее цель — контролировать состояние водителей такси и их автомобилей. От этого, по словам властей, должны выиграть и пассажиры, и все участники рынка. Мы пошли к таксопаркам и узнали, как на них сказались нововведения.
Для справки: что такое КИС «АРТ» и почему про нее столько говорят
Работа водителей такси с одним агрегатором заказов в течение 8-10 часов, а потом с другим — такой же продолжительности и без отдыха — была стандартной схемой. Она позволяла водителям больше зарабатывать за смену. Но их состояние никто не контролировал, и количество ДТП с участием такси росло.
В 2019 году московские власти анонсировали введение системы КИС «АРТ». Она объединяет разрозненные данные от таксопарков и агрегаторов в единую базу и устанавливает суточный лимит рабочего времени для водителей — восемь часов. Кроме того, они должны проходить ежедневные осмотры: медицинский и технический.
Чтобы подключиться к системе, каждый водитель Москвы и Подмосковья должен получить КИС «АРТ» ID — единый для работы со всеми агрегаторами и парками. Для этого нужна подтвержденная учетная запись на Госуслугах. ID — это своеобразный цифровой профиль водителя, в котором хранятся данные о действующих правах, лицензия на перевозку пассажиров, информация о штрафах и наличии судимостей. Туда же подгружаются данные о прохождении медосмотров. Предусматривается возможность получения временного ID сроком действия 30 дней, а для продолжения работы его необходимо заменить на постоянный.
Новость о введении системы встревожила экспертов и работников отрасли. Они предсказывали, что необходимость проходить ежедневные осмотры приведет к дополнительным расходам.
Игорь Катков, совладелец таксопарка Mixi
Mixi начал работу в 2018 году. Он предоставляет в аренду водителям автомобили класса «Комфорт+» — сейчас в автопарке 35 собственных автомобилей Kia Optima без задействования лизинга.
Как только сказали, что можно зарегистрироваться в КИС «АРТе», мы сразу подали заявку — не хотели пропустить момент, когда это станет обязательным. Но нас не могли зарегистрировать полгода, до 13 августа. Система думала, будто мы уже зарегистрированы, а техподдержка не работала. Мы писали официальные обращения и пост в фейсбуке с отметкой «Московского транспорта» — не знаю, что из этого в итоге помогло. В общем, идея системы — повышение безопасности — хорошая, но пострадала реализация.
Со штрафами мы еще не сталкивались, то есть система на данный момент есть, но штрафов нет. Если человек едет с бумажным путевым листом, его не будут штрафовать.
Тем не менее, нововведения уже сильно сказались на рынке. Многие таксопарки не допускали водителей до работы без КИС «АРТ» ID, и иностранные таксисты (например, из Киргизии и Белоруссии), зная, что ID у них никогда не появится, просто ушли: у них нет СНИЛСа, а для его получения — полного комплекта документов для легального проживания в России. В результате на рынке сильно сократилось число водителей. Есть куча свободных автомобилей, куча желающих передвигаться на такси и мало таксистов.
Система на данный момент есть, но штрафов нет.
У нас ушли около 40% водителей. В июле, до этой истории, утилизация таксопарка составляла 92%. Все машины уже были сданы. Когда 14 августа мы сказали водителям, что ездить без ID нельзя, остались человек десять, успевших его получить. И утилизация таксопарка просела до 30% — остальные люди просто ушли и не стали арендовать машины. Некоторые прошли квест и потом вернулись к нам, часть ушла на новые места, наверное, потому что по КИС «АРТ» ID штрафов сейчас нет. Мы же нашли новых водителей с цифровым профилем. Сейчас утилизация выросла до 72%, и это очень хороший показатель по нынешним временам.
Никаких дополнительных расходов из-за КИС «АРТа» не появилось, у нас и раньше был договор с медицинской организацией для путевых листов. Но для рынка появилась угроза серьезного убытка: количество несданных автомобилей из-за сокращения количества водителей. Выручка упала, а обязательства перед кредиторами никуда не делись.
Появилась угроза серьезного убытка из-за несданных автомобилей.
Доход водителей после старта системы упал на 30-35%. Тарифы немного выросли, но на зарплаты это особо не повлияло. Водители предсказуемо плохо приняли новость о нововведении. Раньше у них была свобода выбора: можно было ездить хоть сколько — два, восемь, 15 часов, люди сами рассчитывали свои силы. У нас водители работали пять дней в неделю по 12 часов, с обедом, нельзя сказать, что они сильно уставали. Сейчас выбора нет.
Думаю, это продлится ближайшие шесть-девять месяцев, а потом рынок придет в равновесие. Станет очевидна нехватка работников, а тарифы хорошие, и количество водителей вырастет, а цена поездки снизится.
Денис Курочкин, руководитель таксопарка Roxi Taxi
Таксопарк работает с 2017 года. В нем 35 тыс. водителей в нескольких таксопарках по всей России — от Калининграда до Владивостока. Работают со всеми тарифами, от «Эконома» до «Бизнеса».
У нас никаких проблем с регистрацией не было, ничего сложного в ней нет. Большинство наших водителей уже зарегистрировались, потому что без этого работать сейчас нельзя. Некоторые получили временный ID, но дальше они должны самостоятельно пройти процедуры, чтобы получить постоянный цифровой профиль.
Такая система, конечно, нужна — и не только в Москве, а везде. Речь идет и о безопасности, и о контроле. Чем больше можно проконтролировать отношения между участникам рынка, тем прозрачнее он становится. Нужно показать связь между теми людьми, которые выдают лицензии, и теми, кто реально ездит. Кроме того, система исключит некоторую часть недобросовестных водителей.
Такая система, конечно, нужна — и не только в Москве.
Скорее всего, уйдут меньшие тарифы — не исключаю, что в «Экономе» работа совсем остановится — это просто невыгодно. На тарифах «Комфорт», «Комфорт+» цена автомобиля выше, заработок больше, поэтому появятся дополнительные издержки: от 50 до 100 руб. в день, или 3 тыс. в месяц, водитель будет передавать людям, которые сделают для него электронные путевые листы. Соответственно, зарплаты уменьшатся на эту сумму. Если взять в расчет, что еще ограничат время возможного нахождения на линии, то цена заказа увеличится. Заплатит в любом случае потребитель, но, скорее всего, стоимость с ним разделит водитель.
Система в основном направлена на то, чтобы контролировать лицензии на автомобиль. То есть на автомобиле должен быть путевой лист, путевой лист выдается только той компании, которая получила лицензию. Тут могут возникнуть дополнительные затраты из-за контрактов с компаниями только из регламентированного списка. Произошла такая монополизация этой сферы. В результате водители будут платить чуть больше денег, чтобы получать эти путевые листы.
Заплатит в любом случае потребитель, но, скорее всего, стоимость с ним разделит водитель.
Никакой трагедии в связи с введением системы я не вижу. Все новое всегда воспринимается в штыки. На самом деле, система хорошая, вводится очень планомерно, не болезненно, все давно о ней знают, все уже смирились. PR-кампания этой системы проведена очень хорошо.
Олег Семибратов, основатель сервиса автоматизации бизнес-процессов таксопарков mozen.io
Компания работает с 2017 года. Ежемесячный оборот по транзакциям — около 4 млрд рублей.
КИС «АРТ» только усложняет работу. И идет вразрез с интересами самого же Дептранса. Он субсидирует отрасль такси, компенсирует авансовые платежи на лизинг, расходы компании на лизинг таксомоторной деятельности, при это он сам же обрезает доступ водителей к этой системе. Это происходит и из-за новых правил типа «не допустить водителей с иностранными удостоверениями», и просто потому, что водителям непонятно, как зарегистрироваться. Я, человек, у которого есть все необходимые документы для работы в московском такси, ради эксперимента решил зарегистрироваться. Я не смог это сделать с телефона, несмотря на то, что у меня компания, которая занимается разработкой, — настолько там все плохо.
Система далека от реалий рынка. В ней заложены такие рудименты, как ежедневная отметка механика. Срок эксплуатации транспортного средства в такси — три года. Дальше они амортизируются и больше не живут, и возраст контролируют агрегаторы. Такие автомобили априори безопаснее, чем средний автомобиль на дорогах России, потому что они как минимум новее. Но проходить техника придется дважды в сутки.
Система далека от реалий рынка.
Или медосмотр. Врач не является барьером выхода на линию пьяного человека. Кейс из жизни: крупный таксопарк в Петербурге, водитель пришел на смену, отлично прошел медика, механик проверил машину, выпустили, ровно через двести метров машина оказалась на столбе, а водитель пьяный вдрызг. Он выпил сразу после осмотра. Как медик от этого защитит? Никак.
Да и потом, в Москве в режиме онлайн за рулем 300 тыс. водителей транспортных средств, не только такси, но и грузовиков, курьерских и специальных служб — все, кого контролирует наш Дептранс. Представьте, что с утра этим 300 тыс. человек надо пройти медосмотр, который в нормальном режиме занимает 10-15 минут. Какое количество медработников нужно, чтобы водители вышли в 8 утра на линию? Во сколько они должны проснуться? Это физически невозможно.
Все это старые нормы, которые сегодня не особо применимы. Дептранс сам стреляет себе в ногу, закручивая гайки, снимая с себя ответственность и вводя очевидно избыточные барьеры для водителей в виде верифицированного профиля на Госуслугах. В результате доступность заказа легкового такси снизится, потому что станет меньше водителей, а стоимость поездки сильно вырастет. На одной новости о введении КИС «АРТ» многие таксисты ушли, а цены увеличились на 30% — и пока это без жестких мер со стороны агрегаторов. То ли еще будет.
Дептранс сам стреляет себе в ногу, вводя очевидно избыточные барьеры.
Все это вынудит водителей уходить в серое поле и пересаживаться обратно на частные машины. Снова появятся заказы «от бордюра», разовьются нелегальные агрегаторы, которые работают по P2P-схеме, когда водитель соединяется с пассажиром. Такую модель работы можно выстроить в любом мессенджере. Получается база заказов или даже биржа попутчиков. Такая схема остается за рамками законодательства — это не системное извлечение прибыли, а местечковая история, когда ты по пути в свой бизнес-центр везешь кого-то. До таких агрегаторов Дептранс не дотянется. Кому и зачем это надо — не совсем понятно.
Андрей Попков, председатель Координационного совета профсоюза работников общественного транспорта «Таксист»
Профсоюз создан в 2011 году. Есть представители в Общественном совете Минтранса России и Госдуме. Активный член ООПН «Безопасная столица».
Система нормальная, политически правильная, она нужна — никто не спорит, всеми руками за. Но технически она была не доработана. Не все сначала могли в ней зарегистрироваться, она висела. Потом власти заявили, что всех водителей внесли, — наверняка, они кого-то наняли и вручную ввели данные. Проблемы были очевидные.
Систему не получилось запустить с 1 августа, как они хотели. Вряд ли получится и в ближайшее время — думаю, в лучшем случае к Новому году. Пока ни одна медицинская компания не смогла интегрироваться в эту систему. Все зарегистрировались, но интеграции нет. Сейчас она работает как флешка, накопитель информации. А позже станет регуляторной гильотиной.
Все зарегистрировались, но интеграции нет. Сейчас система работает как флешка.
Власть хочет видеть, сколько денег на рынке. Данным от агрегаторов не доверяют и сами хотят собирать информацию: кто кого куда везет, сколько денег, сколько заплатили с этого налогов. Хотят прозрачности, которой нет, к сожалению. В теории, цены должны повыситься, количество таксистов сократится, на рынке останется половина от имеющегося количества. Но как это будет на практике — так как у нас теория от практики отличается — не могу загадывать.
KISS — принцип проектирования, содержащий все остальные принципы проектирования
Если проект прост, его легко понять… Разработать простой проект не так легко. Для этого нужно время. Для всякой сколько-нибудь сложной программы окончательное решение получается в результате анализа огромного объема информации. Когда код хорошо спроектирован, кажется, что он и не мог быть иным, однако возможно, что его простота достигнута в результате напряженного умственного труда (и большого объема рефакторинга). Сделать простую вещь сложно. Если структура кода кажется очевидной, не надо думать, что это далось без труда.
Итак, принцип проектирования KISS (keep it simple and straightforward) провозглашает, что простота кода – превыше всего, потому что простой код – наиболее понятный.
Практически все принципы проектирования направлены на достижение понятности кода. Нарушая какой-либо принцип проектирования, вы уменьшаете понятность кода. Непонятный код автоматически вызывает у человека ощущение того, что код сложный, так как его сложно понимать и модифицировать. При нарушении любого из этих принципов также нарушается и принцип KISS. Поэтому можно говорить, что KISS включает почти все остальные принципы проектирования.
Патерны проектирования описывают наиболее удачные, простые и понятные решения некоторых проблем. Если вы используете паттерн проектирования там, где нет проблемы, которую решает данный паттерн – то вы нарушаете KISS, внося ненужные усложнения в код. Если вы НЕ используете паттерн проектирования там, где есть проблема, соответствующая паттерну – то вы опять-таки нарушаете KISS, делая код сложнее, чем он мог бы быть.
На мой взгляд, принцип KISS может быть полезен лишь для начинающих проектировщиков, которые не знают или не понимают основных принципов проектирования. KISS защищает от неверного использования принципов проектирования и паттернов. Поскольку принципы и паттерны предназначены для увеличения понятности кода, то их правильное использование не может привести к уменьшению понятности кода. Однако если вы неверно понимаете принцип проектирования (например, истолковываете «не плодите лишних сущностей» как «плодите как можно меньше сущностей»), или соблюдая один принцип нарушаете десяток других, то KISS может стать для вас надёжной подушкой безопасности. В остальных случаях от KISS-а мало толку, т.к. он слишком общий и абстрактный. Остальные же принципы более конкретны и содержат более явные пути к достижению понятности и простоты кода.
Всвязи с тем, что представления разных людей о таком понятии как «простота» могут различаться, приобрели широкое распространение следующая заблуждения относительно KISS-a:
Заблуждение 1. Если считать, что простой код – это такой код, который проще всего написать, то можно истолковать, что принцип KISS призывает писать первое что взбредёт в голову, вообще не задумываясь о проектировании.
Заблуждение 2. Если считать, что простой код – это такой код, для написания которого требуется как можно меньше знаний, то можно истолковать, что принцип KISS призывает не использовать паттерны проектирования.
Пример на C#
Задача: При пересечении фигур необходимо заштриховать область их пересечения.
Так как разработать универсальный алгоритм штриховки для разных сочетаний
фигур (прямоугольник-прямоугольник, прямоугольник-многоугольник,
многоугольник-многоугольник, эллипс-многоугольник, эллипс-эллипс) довольно
сложно и он скорей всего будет не очень эффективным, то реализуем для каждого
вариант свой алгоритм.
Как выглядит первое что приходит в голову:
Однако этот код противоречит двум пунктам из определения простоты: самый естественный и легко доступный для понимания. Код не естественный, потому что есть некий искусственный класс IntersectionFinder. Код не является легко доступным для понимания, потому что человеку, незнакомому с кодом, нужно будет просмотреть все места использования IShape, чтобы понять, реализован ли функционал вычисления пересечения фигур и как именно им воспользоваться. В проектах, насчитывающих несколько десятков (или даже сотен) тысяч строк кода это может оказаться не быстрым занятием. Есть ещё один неприятный момент, добавляющий трудностей к работе с классом IntersectionFinder: количество функций с именем FindIntersection возрастает в виде арифметической прогрессии от количества фигур, в результате чего класс IntersectionFinder очень быстро «раздувается» и при большом количестве фигур поиск нужной функции в нём становится затратным по времени занятием. Поэтому перенесём FindIntersection в IShape.
Отлично, теперь незнакомому с кодом программисту не придётся искать по всему проекту способ сделать пересечение двух фигур. Исчезла лишняя сущность «Вычислитель Пересечений». Код стал более естественным и легко доступным для понимания, а значит — более простым. Теперь при создании нового типа фигуры не нужно вносить изменения в ранее созданные классы, а значит добавление новых типов фигур также упростилось. Проще найти конкретный алгоритм поиска пересечения, так как теперь не нужно искать его в гигантском классе среди множества методов с одинаковыми именами.
Но теперь замечаем, что способ принятия решения, какую конкретно функцию вычисления пересечения нужно вызывать, не лишён искусственности. Более естественный подход звучал бы так: вызвать функцию с именем FindIntersection, тип аргумента которой совпадает с типом второй фигуры.
Как видно, из каждого конкретного класса фигуры исчезли методы public IShape FindIntersection(IShape shape), общее количество строк кода сократилось. Теперь добавлять новые типы фигур стало ещё проще. Метод FindIntersection(Shape shape) теперь находится в базовом классе и выглядит более просто и естественно (декларативно). Добавился новый класс MethodFinder, однако программисту не нужно знать его внутреннее устройство, т.к. он имеет понятный интерфейс и не реализует понятия из предметной области (а значит причины для его изменений будут редки), поэтому сложность кода практически не возросла при его добавлении.
Тут может возникнуть мысль, что рефлексия — медленная штука, и для ускорения можно, например, кэшировать делегаты, динамически сформированные посредством ExpressionTree, однако KISS призывает писать как можно более простой код, поэтому стоит воздержаться от этой мысли до тех пор, пока быстродействие метода FindIntersection(Shape shape) действительно не станет узким местом программы, создающим проблемы для пользователя. Но вот что не следует откладывать, так это создание юнит-теста, который через рефлексию узнаёт всех наследников класса Shape и проверяет, что программист не забыл реализовать алгоритмы поиска пересечения для всех пар фигур.
Сравнив взглядом первый и третий пример, может показаться не очевидным, что третий пример проще. Однако давайте, представим, что типов фигур не 3, а 30. Тогда количество функций сравнения фигур — 465 (сумма арифметической прогрессии (1+30)*30\2). В первом случае механизм выбора нужной функции будет скрыт за 465 if-ами (или, как вариант, за контейнером с 465-ю указателями на методы, что не сильно лучше), и среди этого нагромождения if-ов незнакомому с кодом программисту нужно будет усмотреть некую систему. Тогда как в 3-м случае подход декларативен и не зависит от количества типов фигур. Этот пример хорош тем, что значительной части программистов может показаться, что третий пример является плохим решением, так как в нём используется рефлексия для доступа к приватным переменным (что является своеобразным табу в среде программистов), потому что они слышали из авторитетных источников, что использовать рефлексию для таких целей плохо, но не могут объяснить, почему это плохо. Этот психологический феномен называется фиксированностью ценностей.
Этот пример наглядно демонстрирует, как, используя KISS и стремясь сделать код более простым, можно придти к лучшему решению проблемы, даже если ваше неверное понимание тех или иных принципов или табу приказывает вам использовать «костыль» вместо декларативного кода, полностью отражающего намерение разработчика.
Немного истории.
Принцип KISS зародился в авиастроении и исторически переводится как «Keep it simple stupid» и расшифровывается как «сделайте это до идиотизма простым». В истории авиастроения известны случаи, когда слишком усердные рабочие прибивали на самолёт лишние пластины брони, чтобы сделать самолёт более живучим в бою, в результате чего масса самолёта становилась больше расчётной и самолёт попросту не мог взлететь. Кроме того, квалификация многих рабочих была низкой. В таких условиях конструкции самолётов, которые пьяный неквалифицированный рабочий не смог бы собрать неправильно, даже если бы захотел, обладали особенной ценностью. Один из отголосков конструкторских решений того времени — невозможность перепутать и воткнуть неверный штекер в гнездо внутри компьютера. Однако, если результатом труда авиа-инженера является чертёж, по которому будет создан продукт, то в случае с программистом продуктом является сам чертёж (образно выражаясь). В случае программиста он должен написать код так, чтобы пьяный неквалифицированный программист смог внести в него изменения в соответствии с изменившимися бизнес-требованиями (то есть изменить чертёж, а не собрать самолёт). В силу различий в специфике авиастроения и программирования, расшифровка «Keep it simple stupid», подходящая в авиастроении, уже не так хорошо отражает суть принципа для программиста. Многие ленивые программисты расшифровывают «сделайте это до идиотизма простым» как «не утруждайте себя проектированием» (сравните, например, описание принципа KISS в этой статье с вот этим описанием). К счастью, у KISS есть ещё и некоторые другие расшифровки, одна из которых, на мой взгляд, лучше всего отражает суть KISS в программировании — «keep it simple and straightforward». Straightforward переводится как простой, честный, прямолинейный, откровенный. «Keep it simple and straightforward», таким образом, можно вольно перевести как «Сделайте это простым и декларативным», а для достижения декларативности требуется проектирование.
За пример следует благодарить Hokum, который подал первоначальную идею для примера, которую я немного изменил.