IO.People Classification in IT

This post is an attempt to create a classification of how people consume information and how it affects their work.

Void: No input > No output

image

This person is a master of ignorance. He doesn’t read books that contain new knowledge, he doesn’t visit conferences, doesn’t watch videos, doesn’t do online courses. He stops learning right after graduation with a strong belief that he learnt everything he needs (and probably he’s right). 

If he reads something — it’s a fiction. It he watches something — it’s a TV-show or a blockbuster. If he visits YouTube channel — it’s Fail Army. All incoming information validated for a single purpose — entertain. Validation filter becomes very advanced with time and around forties there is close to zero chance to let new information in.

This type of person doesn’t do much. His work is usually unchallenging and somewhat repetitive. He likes huge corporations where political games and dark corners of ancient divisions allow to survive and even move up the ladder sometimes. 

Hot spot: Middle manager. 

Gut: Some input > Action output

image

Learn almost nothing, but somehow do things quite OK. Has supernatural ability to absorb information from the world via osmotic communication. He learns by doing and hates theoretical discussions. However, he do like examples and can somewhat generalize based on them. 

Hot spot: Middle QA engineer.

Abyss: Input > No output

image

This is a weird personality. He reads about everything and knows quite a lot. Unfortunately, all the knowledge carefully kept inside. He is quite lazy and doesn’t like challenging tasks. The information inside puts pressure on his mind. He always unhappy about everything and usually grumpy. Life sucks. Existential crisis is real. 

Hot spot: Bench.

Sponge: Input > .Squeeze > Output

image

Absorbs information like a sponge. In some special mood can be quite productive, but he should be squeezed to shine. Direct orders, gentle pushes, flattery and all other manipulations are acceptable to help Sponge overcome his laziness or modesty.

This person can become a real star if he meets a good mentor in his early job positions. 

Hot spot: _.apply(mentor)

Doer: Input > Actions

image

Learn new things, but in general filter out everything that doesn’t evidently relate to his job. Likes to read books about technology, something similar to ASP.NET 5.0 or Java 8 in Action. Don’t like deep discussions, since they quickly show his narrow focus and it’s not pleasant to feel that way at all.

Hot spot: Developer

Spreader: Input > Information

image

Reads a lot about everything. Talks and writes about everything he learnt. Promotes learning. Has a blog (often more than one). Visits conferences and do talks about some quite abstract things. LOVES meetups. Likes to participate in discussions about everything and never gives up.

However, somewhat lacks practicality and doesn’t like do things by hands. 

Hot spot: Mentor or Serial entrepreneur

Master. Input > Information and Action

image

Balanced personality. Learns theory and practice to have a full picture. Know how to focus and cut himself from the noise around. Likes everything: write code, solve problems, write articles and books, help people, do talks. Sometimes this enthusiasm to be everywhere leads to burnout, so he have to do physical exercises and have a good family to keep the energy past forties. 

Hot spot: Lead _

Plum. Input > ACTION

Unique personality type that belongs to few humans on Earth. Maybe you are lucky enough to know them. I do. However, somehow they do sell random stuff. Nobody knows why.

Организации будущего

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

DISCLAIMER #1: Я буду говорить про организации работников умственного труда (knowledge workers). Но в недалеком будущем это будет 80% всех работников. Индустриальная эпоха переходит в эпоху знаний и наукоемких компаний.

DISCLAIMER #2: Горизонт прогноза — 100 лет. Тут две причины. Во-первых, невозможно точно определить точки переломов трендов, это все происходит постепенно и довольно незаметно. Я думаю, к концу 21 века новые модели будут составлять подавляющее большинство. Во-вторых, вероятнее всего, к тому времени мы все умрем, поэтому мне не придется отвечать за убийственно неверный прогноз.

Контекст

Давайте зайдем издалека и попробуем посмотреть на современный контекст. Что вообще происходит в мире? Многое очевидно, но я считаю полезным составить целостную картину.

Рост благосостояния

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

Мировой ВВП на душу населения за последние 55 лет.

Рост ВВП должен вести к росту уровня образования, что и происходит.

Рост уровня образования

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

Рост среднего образования и грамотности за 200 лет.

Все меньше людей хочет работать на заводах, фабриках и фермах. Все больше людей хотят работать мозгами.

Увеличение количества работников умственного труда

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

Рост интеллектуальных работников в США.

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

Рост информационной связности

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

Количество интернет-пользователе на 100 человек

Скорость изменения мира

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

Количество PhD в год.

Распространение фундаментальных ценностей

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


Увеличение количества свободных агентов

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

Зачем вообще нужны организации?

Организации (в смысле компании/фирмы/корпорации) появились примерно 400 лет назад. До этого существовали различные гильдии, банки, купцы и ремесленники, но в целом не было структур, похожих на современные компании.

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

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

Однако, наличие людей в штате имеет свои накладные расходы:

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

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

Структура Microsoft. Вернее, верхушка айзберга.

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

С чем столкнутся современные организации

Главные вызовы, которые уже сейчас неторопливо начинают донимать организации, таковы:

  1. Скорость реакции на стремительно меняющийся мир.
  2. Продуктивность интеллектуальных работников.
  3. Работа со свободными агентами.

Почему на эти вызовы текущая парадигма отвечает плохо?

Что мешает компаниям успевать за изменениями внешней среды? Почему производительность сотрудников достаточно низкая?

Причины:

  • Размер.
  • Глубокая иерархичная структура.
  • Функциональные отделы.
  • Механизмы принятия решений сверху-вниз.
  • Закрытость информации.
  • Отсутствие увлечённости у сотрудников.
  • Манипулирование людьми с помощью HR отделов, менеджеров среднего звена и мнимых ценностей.
  • Рассинхронизация ценностей компании и людей, в ней работающих.
  • Замена значимых и полезных целей финансовыми целями.
  • Сложность привлечения свободных агентов.

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

Решения проблем

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

Очень упрощенная картина целиком выглядит достаточно сложно:

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

Можно выделить три самых важных фактора, которые влияют на скорость эволюции компании:

  1. Продуктивность интеллектуальных сотрудников
  2. Скорость реакции на изменения окружающей среды
  3. Количество экспериментов

Давайте пройдемся по ним обстоятельно.

Продуктивность интеллектуальных сотрудников

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


Увлечённость

В состояние потока чрезвычайно сложно войти, если вам неинтересно. Скука—главная проблема умного человека. Задача, которую он решает, должна быть в меру сложной, тогда появляется интерес и увлечённость. Наверняка у вас есть воспоминания о ярких проблемах и удовольствии от их решения. Закройте глаза и вспомните, как это происходило. Помните? Это постоянное размышление о проблеме в душе, в кровати перед сном, по пути на работу. Помните, как внезапно появляются идеи и сразу же начинают чесаться руки—хочется пойти и всё попробовать. Помните, как вы приходили на работу, делали кофе и с головой уходили в задачу. Без всяких там фейсбуков, новостей и обсуждений вчерашней погоды. Помните, как раздражали любые отвлечения, вопросы и пустой трёп. Помните эту приятную усталость от прогресса вечером и чувство эйфории, когда проблема схлопывалась в лаконичное и красивое решение? Я прекрасно помню и совершенно уверен, что моя продуктивность в такие времена была в разы выше, чем в обычное время, когда работа состоит из рутинных задач.

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

Понятная цель / постановка задачи

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

Гораздо лучше люди справляются с задачами более низкого уровня, вроде: создать систему кеширования, вынести модуль поиска в отдельный сервис, улучшить демо продукта, автоматизировать тестирование. Большинство опытных интеллектуальных работников отлично чувствуют себя на этом уровне. Задача достаточно конкретная, но дает определенную творческую свободу.

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

Кто ставит задачу? Обычно это менеджер. В глубоких иерархиях чрезвычайно сложно сделать так, чтобы человек часто работал над интересными задачами. Это похоже на централизованное планирование. Могут ли люди сами выбирать себе наиболее интересные задачи? Да, могут. Но для этого необходимо несколько вещей: доверие, прозрачность информации внутри компании, погружение сотрудников в бизнес-контекст и механизм ответственности.

Интересно, можно ли применить к open allocation проблеме Stable marriage problem и алгоритм Гейла-Шепли.

Самореализация и польза

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


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

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

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

Совпадение ценностей компании и ценностей людей в них работающих

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

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

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

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

Скорость реакции на изменения

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


Делегирование принятия решений на передовую и свобода выбора

Пожалуй, это самая важная практика, которая влияет на огромное количество процессов и других практик компании.

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

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

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

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

Практики (на примере продуктовой айти компании):

В нашей компании работает такая практика. Любой человек может запустить инициативу по изменениям в продукте. Например, переписать модуль поиска, изменить навигацию, ускорить систему, и так далее. Он может это делать один, но чаще всего люди собирают вокруг себя команду для работы над инициативой. Они придумывают решение, определяют объем работ и дедлайн. Затем нужно получить одобрение от Product Owner с точки зрения продуктового решения и CTO с точки зрения технического решения. Когда одобрение получено, команда инициативы дает публичное обещание выпустить инициативу к определенной дате (объем работ и дата определяется самой командой).

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

Прозрачность и доступность информации

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

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

Прозрачность и полная доступность информации.

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

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

Практики (на примере продуктовой айти компании):

  • Чат с каналами для обсуждения продукта, конкурентов, дизайна, проблем, отзывов пользователей и тп.
  • Открытые дашборды: new customers, lost customers, churn rate, revenue, revenue per person, NPS trend, ARR, Conversion rates, system response time, features usage, etc.
  • CEO Q&A сессии, где можно задать любой вопрос и получить на него честный ответ.
  • Дизайн офиса, где люди вынуждены пересекаться. Общая кухня и совместные обеды, открытая терраса, и тп.

Погружение сотрудников в бизнес-контекст

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

Погружение сотрудников в бизнес-контекст.

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

Уменьшение контроля по мере усвоения сотрудниками бизнес-контекста.

Практики (на примере продуктовой айти компании):

  • Отправлять разработчиков, дизайнеров и тестировщиков дежурить в службу поддержки и общаться с клиентами.
  • On-site визиты разработчиков к клиентам.
  • Регулярные демонстрации кейсов использования продукта.
  • Единое хранилище всей обратной связи о продукте из всех каналов (соц. сети, письма, система поддержки, чаты, телефонные разговоры).

Конечно же, невозможно добиться того, чтобы все сотрудники компании любили бизнес-контекст. Мне кажется, достаточно ядра из 15–20%. Такого количества людей вполне достаточно, чтобы запускать достаточно количество относительно правильных инициатив. В компании из 5 человек достаточно 1 человека. В компании из 100 человек таких должно быть 15–20.

Ответственность

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

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

Контрактная организация работы.

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

Практики (на примере продуктовой айти компании):

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

Доверие

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

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

Практики:

  • Отсутствие учета рабочего времени, времени прихода на работу и ухода с работы.
  • Необязательность справок о болезни, если человек заболел. Достаточно верить на слово.
  • Толерантное отношение к периодам низкой продуктивности. У всех людей бывают спады. Если спад затянулся, тогда человеку следует предложить длительный отпуск (хотя бы месяц).
  • Возможность в любой момент взять выходной или короткий отпуск, без согласований с руководством.
  • Отсутствие микро-менеджмента.
  • Возможность совершения ошибок и отсутствия наказания за них. Надо понимать, что существуют области, где наказание за серьезные ошибки обязательно. Например, работа врача, безопасность данных клиентов и прочие mission critical области.

Отказ от глубоких иерархических структур.

Пока не до конца ясно, какие организационные структуры распространятся в будущем, но точно ясно, что глубокие иерархии исчезнут. Что придет на смену? Есть несколько вариантов:

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

Свободное перемещение людей внутри компании и спонтанные кросс-функциональные команды

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

Свободное перемещение людей внутри компании.

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

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

Эксперименты

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


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

Экспериментальные проекты важны для эволюции компании.

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

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

Практики (на примере продуктовой айти компании):

  • x% времени на свои проекты. Все знают, что компания Google выделяла сотрудникам 20% времени на свои проекты. Самым значимым результатом этого был Gmail.
  • Hackathons. Возможно, это не самый лучший способ проверки жизнеспособности идеи, но как механизм sanity check вполне может работать.
  • x% сотрудников в течение года работают над экспериментальными проектами. Например, в компании из 100 человек 10 человек могут целый год делать несколько экспериментальных проектов. Если ни один из них не взлетел, происходит ротация и другие 10 человек входят в такой экспериментальный режим.

Роль руководства

Задача руководства сводится к трем вещам:

  1. формирование ценностей, культуры и экосистемы компании
  2. формулирование стратегических целей
  3. обработка исключительных ситуаций (решение конфликтов и выход из кризисов)

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

Главная задача руководителей — создать понятный фреймворк, в рамках которого работает вся компания. Мне кажется, это нужно делать после 1–3 лет работы компании, либо по достижению численности в 20–40 человек. Раньше не имеет смысла тратить на это время, потому что в целом стоит вопрос о выживании компании. Позже уже опасно, потому что спонтанно зарождающаяся культура и ценности могут противоречить тому, во что верит основатель компании.

Базовые ценности

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

Принципы компании

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

Практики

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


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

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

Есть два пути:

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

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

Более правильный выбор, это иметь простые процессы и обрабатывать исключительные ситуации с помощью конкретных людей (например, руководителей). Какие могут быть примеры исключительных ситуаций? Ну вот несколько примеров:

  • Кандидат не может приехать на собеседование, можем ли мы провести его удаленно?
  • Вася обидел Катю, что с ним делать?
  • Данные клиентов были украдены неизвестным хакером, как жить дальше?
  • Петя не знает, чем он хочет заниматься дальше. И ему хочется обсудить это.
  • Поменялось законодательство и расходы на сотрудников выросли на 15%.
  • Пришел инвестор и хочет вложить $2 миллиона. Как помягче ему отказать.

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

Работа со свободными агентами

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

Упрощение контекста, легкость входа в проблему

Свободные агенты будут распространены в индустриях, где погружение в рабочий контекст происходит быстро. Посмотрим, как Uber упросил контекст для таксистов. Раньше, если ты хотел стать таксистом в Лондоне, тебе надо было 2 года учить всю географию Лондона, потому что экзамен для получения лицензии довольно сложный. Например, необходимо детальное знание всех 25000 улиц в радиусе 6 миль вокруг Чаринг Кросс. Не каждый готов потратить на изучение карты Лондона 2 года. Я бы не захотел. Кроме того, стаж вождения должен быть не менее трех лет. Uber требует только наличия приличного автомобиля и прав. Все. Сравните, насколько упростился вход в профессию таксиста!

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

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


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

Аутсорсинг вторичных процессов

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


В то же время, аутсорсинг ключевых процессов, скорее всего, маловероятен.

Рейтинги свободных агентов

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

Автоматизация заключения контрактов

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

Заключение

Если вам лень читать много текста, то вот очень краткое и не очень понятное изложение тезисов.

Тренды

Современный контекст. Что вообще происходит в мире:

  1. Рост благосостояния.
  2. Рост уровня образования.
  3. Увеличение количества работников умственного труда.
  4. Рост информационной связности.
  5. Увеличение скорости изменения мира.
  6. Распространение демократических ценностей.

Вызовы

Главные вызовы, которые уже сейчас неторопливо начинают донимать организации, таковы:

  1. Скорость реакции на стремительно меняющийся мир.
  2. Продуктивность интеллектуальных работников.
  3. Работа со свободными агентами.

Будущее

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

  1. Увеличение продуктивности интеллектуальных сотрудников. Определяется увлечённостью, общественной пользой, самореализацией, ясной целью и прозрачностью информации.
  2. Увеличение скорости реакции на изменения окружающей среды. Определяется делегирование решений вниз и свободой выбора задач, доверием, контрактной ответственностью, размером и структурой компании.
  3. Увеличение количества экспериментов. В компании постоянно должны проходить эксперименты. Существует оптимальное соотношение времени, потраченного на прямую работу и на эксперименты.
  4. Вовлечение в структуру компании свободных агентов через упрощение контекста и декомпозиции компании, аутсорсинга вторичных процессов и автоматизацию контрактов.


P.S. Спасибо всем, кто смог пролистать до конца.

Куда двигается Targetprocess / Компания и продукт

Куда двигается Targetprocess / Компания и продукт


Меня частенько спрашивают, что будет с нашей компаний в недалеком и далеком будущем. Честный ответ — я не знаю. Но у меня есть представление, куда мы идем и каким путем мы должны двигаться, так что будет странно не рассказать это всем. Ниже будет много конкретных решений довольно абстрактных проблем. Это мои личные мысли, которые, очевидно, не все разделяют 🙂

Компания

Проблема большинства современных компаний в том, что они созданы для единственной цели — заставлять людей работать (в лучшем случае, давать им возможность работать). Любому руководителю я рекомендую познакомиться с Russell L. Ackoff, который часто говорит прекрасное:

Perhaps the most costly disassembly in which our culture has been engaged is disaggregation of life itself into work, play, learning and inspiration. Each of these aspects of life has been separated from the others by creating institution for engaging in only one at a time, excluding the other three as much as possible. Business are designed for work, not play, learning, or inspiration. • Russell L. Ackoff

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

Обучение

Обычно считается, что люди должны учиться сами. Конечно, это так, но компания может им помочь. Учиться нужно всю жизнь без перерывов. Легко достигнуть каких-то высот и сказать себе “я знаю уже достаточно много, можно переключиться на детективы Марининой и спокойно работать по накатанной дорожке”. Так начинается путь к ДТП (диван, телевизор, пиво по вечерам). Так заканчиваются мечты.

“Единственный способ выжить — это постоянно ставить перед собой новые задачи” • Персиваль Бейли

Для обучения важно делать несколько вещей: читать, смотреть, слушать, говорить, писать и делать.

Если чуть подробнее, то:

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

Компания может помочь во всем этом. Давайте посмотрим, как именно:

  • Покупать любые книги по заявке из любых источников; вручить каждому сотруднику Kindle с годовой подпиской;
  • Организовывать семинары и тренинги; оплачивать хорошие конференции;
  • Создавать зоны, где люди неизбежно пересекаются и беседуют (совместные обеды); приглашать экспертов для Q&A сессий; организовывать митапы;
  • Устраивать внутренние конференции, где люди делают презентации друг другу; стимулировать людей выступать на внешних конференциях, выделяя для этого время;
  • Уговаривать писать блог посты и статьи; лестью и обманом привлечь к написанию книги;
  • Предоставлять 10–20% времени на собственные проекты; организовывать хакатоны; давать возможность стартовать новые бизнес-юниты;

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

Вдохновение

Вдохновлять людей очень сложно. Может быть, это вообще самое сложное в работе любого руководителя. И самому руководителю очень сложно понять, насколько хорошо он это умеет делать. Я лично думаю, что не очень умею. Более того, момент вдохновения сильно размыт.

Потолок Сикстинской капеллы. На картинке, может, и ничего особенного, но живьем неплохо.

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

Для вдохновения людей могут работать (или не работать) следующие вещи:

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

Компания должна давать возможность и помогать сотрудникам найти то, отчего их прёт. Если вдруг окажется, что человеку захотелось стать художником вместо программиста — это же прекрасно, пусть становится. Вместо среднего программиста, возможно, человечество получит гениального художника.

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

Культура доверия в компании потихоньку возвращает веру в себя, поощряя эксперименты и ошибки, исправляя то, что сломали в человеке раньше. Со временем некоторые люди ярко раскрываются и обретают новые источники вдохновения.

Я считаю, что компания должна в идеале:

  • оплачивать посещение ведущих конференций в разных странах
  • предоставлять раз в несколько лет длительный оплачиваемый отпуск на 2–3 месяца
  • выделять 10–20% времени на свои проекты
  • поощрять и спонсировать хобби и увлечения людей, организовывать кружки по интересам (рисование, спорт, whatever)

Свобода и доверие

В идеальной компании человек может делать то, что хочет без всякого контроля со стороны руководства. Руководство доверяет сотрудникам и надеется, что они будут тратить свое время на благо компании и общей цели. Главная идея — объединить людей, которым нравится работать вместе для достижения единой цели. Практически невозможно собрать 100+ человек с единой целью вместе, но крайне важно, чтобы была критическая масса таких людей. Я бы сказал, что 20–30% достаточно.

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

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

Возьмем программиста в нашей компании и представим, что ему никто не говорит, что делать. Как ему решить, какую задачу взять? Какая проблема важна для клиентов, а какая — нет? Внезапная свобода выбора не приведет к хорошим последствиям. Оказывается, нужно погрузиться в домен управления проектами, разобраться с процессами типа Scrum, Kanban, SAFe, понять, какие недостатки есть в Targetprocess, посмотреть запросы пользователей, посмотреть другие похожие продукты, изучить рынок и так далее. Без хороших доменных знаний просто нереально требовать от разработчика хороших решений и хорошего выбора. Свобода выбора задачи в контексте незнания домена просто вредна.

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

Мне кажется, хорошее решение — создание кластеров с четким фокусом на определенный под-домен. Кластер может состоять из 6–50 человек, среди которых должны быть все роли: сейлс, разработчики, тестировщики, дизайнеры, специалисты поддержки. Тогда свободой выбора обладает сам кластер, а не отдельный человек в нем. И важно иметь в каждом кластере компетентное ядро из 5+ человек, которому реально интересен этот домен.

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

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

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

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

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

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

Работа

Компании никогда не создаются с целью “обеспечить обучение и вдохновение сотрудников, дать им свободу и независимость”. Обычно цели другие — либо создать что-то новое и полезное, либо просто заработать денег. Для достижения таких целей надо работать, так что работа (сюрприз!) является самым важным в компании. Для меня лично важны следующие подходы к работе:

  1. Работа должна нравиться. Человек должен работать с удовольствием, перемежая сложные задачи на грани своих способностей с более простыми и рутинными задачами. Компания должна сделать все возможное, чтобы интересы человека совпадали с задачами компании. Если это невозможно—есть два выхода: расстаться с человеком или дать ему возможность запустить что-то свое.
  2. Работа должна справедливо оплачиваться. Что это значит? С одной стороны, компании нет смысла переплачивать сотруднику, если рынок труда имеет определенный размер зарплаты. С другой — у компании есть желание избавить человека от мыслей о дополнительных источниках дохода. Поэтому в целом зарплата должна быть немного выше рыночной и нужен механизм распределения части прибыли между всеми сотрудниками.
  3. Карьерный рост не должен быть привязан к зарплате. Если в компании в целом отсутствует иерархия, меняться может только круг обязанностей, продуктивность и экспертиза, вот это и должно оцениваться.

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

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

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

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

Размер и структура

На текущий момент наша компания состоит из 100 человек. Мы хотим сделать классную платформу для управления работой, для этого по самым скромным прикидкам нужно человек 200–300. Дальше возможен рост и до 1000+ человек, если платформа окажется хорошей и на базе нее можно будет делать решения в разных областях.

Рост компании неизбежно влечет структурные изменения. Мне нравится вот такая схема:


Что изменится, когда в компании будет 200+ человек? Кросс-функциональные команды будут объединены в доменные кластеры, которые будут развивать направления платформы. В некоторых кластерах будет около 10 человек, а в других может быть и до 30. Примерный список кластеров такой (но можно и другое разбиение придумать):

  • Visualization and BI — how to make visual and smart
  • Integration — how to integrate into company ecosystem
  • Solution Units (PPM, QA, Help Desk, Kanban, SAFe)
  • Design — how to make usable and simple
  • Infrastructure and Performance — how to make things fast
  • Communication — how to share and exchange information
  • Domain Core — how to make flexible and configurable
  • Mobile

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

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

Как же будут формироваться новые кластеры и закрываться ненужные существующие? Тут есть много вариантов, которые в целом завязаны на общую стратегию продукта. Это может решать один человек (CEO/CTO), экспертный совет из ключевых людей из разных кластеров, либо вся компания на общем собрании

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

Руководители

Все чаще делаются попытки создавать компании без менеджеров. Главный вопрос — зачем?

Ну ответ довольно прост: если компания без менеджеров может работать хотя бы так же успешно, как компания с привычной иерархией, то можно иметь на 20–30% меньше людей и создавать те же штуки, что и раньше.

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

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

  • Наем и увольнение. Доменный кластер сам нанимает себе людей и увольняет тоже сам. Собеседования программистов должны проводить сами программисты (трех обычно достаточно). С увольнением немного сложнее. Тут может помочь механизм peer review и командные ретроспективы. Но увольнение всегда тяжелый и неприятный процесс, я пока не знаю хорошего решения.
  • Зарплата. Я думаю, в компании должен присутствовать profit-sharing и прозрачные механизмы установления зарплаты. Есть примеры Buffer и FogCreek, где зарплаты прозрачны и всем известны. Неясно пока, насколько все это работает в культурном контексте Беларуси, но в целом должна быть унификация и прозрачность. То есть процесс заменяет индивидуальное решение менеджера.
  • Разрешение конфликтов. Наверное, самое сложное для самой команды. Очень нелегко бывает решать конфликт, когда люди равноправны и ни у кого нет последнего слова. У нас в компании пока этим занимаются руководители. В целом могут работать ретроспективы и привлечение третьей стороны. Есть примеры компаний, где конфликты решаются без руководителей.
  • Менторинг. Тут все довольно просто — опытные сотрудники могут быть хорошими менторами. Могут и не быть, но какой-то нужный процент таких людей обычно имеется. Так что в целом программистам в менторы нужны просто более хорошие программисты.
  • Улучшение процессов. В целом, сотрудники сами должны улучшать свои процессы. На первых этапах им нужна помощь в методиках и практиках, но после пары лет все работает уже само. У нас с этим стало гораздо лучше в последнее время.
  • Видение и стратегия. Еще один сложный вопрос. Как мне кажется, обычно видением обладает один человек, а не группа менеджеров. Поэтому теоретически в компании может быть всего один человек, который задает стратегию развития (CEO или CTO) и убедительно доказывает всем, что стратегия верная. Эту роль может играть и группа экспертов. Другой интересный вопрос, а может ли видение формироваться эмерджентно, как результат независимой работы нескольких кластеров? Я думаю — может. Именно по этому пути шла эволюция живых организмов. Почему бы и компании не следовать таким путем?

Люди vs. Продукт

Компания начинается с людей или с продукта? На первом этапе все же обычно с продукта. Люди, которые работают на первых этапах, посвящают себя одному продукту. Постепенно компания растет в размерах, начинают появляться идеи других продуктов, и на этом этапе возрастает значение культуры и людей. Вообще формирование культуры происходит не сразу, а через несколько лет после основания компании. И если этот момент упустить, то потом изменить базовые принципы компании будет невероятно сложно. Я с трудом могу себе представить, как изменить культуру и развернуть компанию, где работает 1000 человек. Это может привести к массовым увольнениям, серьезным потерям продуктивности и даже к гибели компании.

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

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

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

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

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

Управление работой. Как меняется мир.

Не секрет, что мир ускоряется, изменяясь все быстрее. Меняются технологии, инструменты, задачи, специальности и люди. Основные тренды, касающиеся Targetprocess, такие:

  1. Скорость обмена информацией возрастает. Медленные каналы заменяются на быстрые (Slack vs. Email). Люди хотят получать важную информацию мгновенно. С другой стороны, растет информационная нагрузка и становится сложно контролировать все потоки.
  2. Экспоненциальный рост данных порождает проблемы их обработки и извлечения полезной информации. Это касается всех рынков без исключения. BigData, Visualization, Business Intelligence входят во все рынки.
  3. Изменяются подходы к организации труда и быстро видоизменяются рабочие процессы. Scrum, Kanban, SAFe, Holacracy, Lean, Teal Organizations. Традиционные методики становятся все менее релевантными.
  4. Инструменты становятся более интеллектуальными, автоматизируя многие действия и стирая из экономики некоторые специальности. AI выходит на заметные роли практически во всех рынках. Простой микс AI+Domain скоро будет работать везде.
  5. Сложность проектов возрастает. Распределённость, тысячи людей, быстро меняющие технологии — все это усложняет управление проектами. Кажется, что это можно решить через разбиение больших проектов на маленькие и трансформацию структуры компаний.

Продукт/ы

Любой продукт, претендующий на решение проблем управления проектами ближайшего будущего, должен обладать следующими свойствами:

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

Рабочий процесс удобно представлять классическим циклом Деминга (PDCA)

PDCA цикл с ключевыми аспектами

Если посмотреть на все современные продукты управления работой, то мы получим примерно такую картину (Targetprocess — не исключение):

Зеленым выделено функциональное покрытие фаз работы современными инструментами ALM

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

Интересно пройтись по ключевым фазам работы и посмотреть, что мы имеем сейчас и что должно быть в идеале.

PLAN

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

DO

  • сейчас / очень мало автоматизации работы, очень слабая нотификация и довольно слабая интеграция в информационные потоки компании.
  • будущее / полная автоматизация рабочих процессов. Человек должен фокусироваться на value-added вещах, а все прочее должно происходить по возможности автоматически. Например, когда мы делаем юзер стори, работа над ней требует взаимодействия с GitHub, Build Board / Jenkins, Slack, Help Desk, IDE (Visual Studio), Targetprocess, Google Docs, Dropbox. Определенные события могут запускать цепочки действий, экономя время людей (Zapier выглядит неплохим шагом в эту сторону).
  • пример / на закрытие юзер стори посылается сообщение в Slack, закрывается реквест и нотифицируются реквестеры, удаляется бранч в гитхабе, обновляется change log.

CHECK

  • сейчас / достаточно слабые отчеты.
  • будущее / возможность строить отчеты произвольной сложности по всем имеющимся данным, гибкая связка визуальных представлений и возможность data exploration, автоматическое обнаружение трендов и нотификация о проблемах.

ACT

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

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

  • Process mapping and improvement software (Targetprocess)
  • Information visualization software (VizyDrop)
  • Work automation software
  • Communication automation software
  • Work intelligence software

Тесная интеграция продуктов позволит заходить в компании с самых разных сторон (подобную стратегию успешно использует Atlassian, но с другим набором продуктов). Наша ошибка была в том, что мы изначально не думали о тесной интеграции Targetprocess и VizyDrop. Правда, мы все равно пришли к этой идее и начали её воплощать.

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

Сервисный подход

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

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


Если кратко, то в следующие 2–3 года нам предстоит решать следующие задачи:

  • Разработка гибкой доменной модели, которая позволит создавать свои сущности, связи между ними и бизнес-правила.
  • Замена (эволюционная либо революционная) всего серверного слоя.
  • Разработка единого центра сообщений.
  • Унификация UI компонентов и разработка новых (mind map, например).
  • Разработка новой среды для интеграции и реализации своих приложений (apps).

Резюме

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

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

Абстракция и сложность

Всем известная картина.

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

Начнем с определений.

Абстрагирование — это процесс выделения общих правил и концепций из примеров и методов.

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

В процессе анализа я хочу получить ответы на следующие вопросы:

  1. Как изменялся уровень абстракции в различных областях с развитием человечества?
  2. Какая связь абстракции со сложностью и мощностью системы?
  3. Чем это нам всем помогает или мешает в разработке программ?

Если вам интересны только выводы — пройдите вниз. А начнем мы издалека.

Живопись

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

Реализм

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

Василий Перов. Охотники на привале. 1871

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

Все понятно. Никакой абстрактности.

Импрессионизм

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

Клод Моне. Впечатление. Восходящее солнце. 1872

Размытые силуэты гавани, странное сочетание цветов, неясность. В то время критики довольно едко высказывались о картинах импрессионистов. Например, так: «Обои, и те смотрелись бы более законченно, чем это „Впечатление“!» Сейчас импрессионистов любят все.

Абстракционизм

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

Пит Мондриан. Композиция с синим, красным и желтым. 1921

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

Абстракционизм нравится далеко не всем. Многие люди его не понимают.

Поэзия

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

Начнем с какого-нибудь эпоса. Кусочек из Старшей Эдды.

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

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

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

Импрессионизм

Федерико Гарсия Лорка обычно писал не столь прямолинейные стихи. Вот, скажем, стихотворение Перекресток.

Восточный ветер.
Фонарь и дождь.
И прямо в сердце
нож.
Улица –
дрожь
натянутого
провода,
дрожь
огромного овода.
Со всех сторон,
куда ни пойдешь,
прямо в сердце –
нож.

1921

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

Футуризм

Чем дальше, тем меньше однозначности. Возьмем раннего Маяковского и его стихотворение “А вы могли бы?”

Я сразу смазал карту будня,
плеснувши краску из стакана;
я показал на блюде студня
косые скулы океана.
На чешуе жестяной рыбы
прочел я зовы новых губ.
А вы
ноктюрн сыграть
могли бы
на флейте водосточных труб?

1913

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

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

И другой вариант, который лично мне кажется гораздо более близким к действительности:

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

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

Математика

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

Все началось с необходимости подсчитать количество нападающих волков и сравнить их с количество защищающихся людей, так что натуральные числа это счетные числа: 1, 2, 3, 4 и так далее. Надо сказать, что число 3 само по себе достаточно абстрактное понятие. На самом деле, его не существует в природе. Есть 3 дерева или 3 барана, но числа 3 нет.

Далее умные индусы придумали число ноль. Долгое время 0 вообще в Европе не считали числом, а каким-то условным символом. Даже в 17 веке находились господа, которые ноль знать не хотели. Отрицательные числа ввели, чтобы было удобно записывать долги и решать некоторые уравнения. В итоге получили целые числа: -2, -1, 0, 1, 2

Все бы хорошо, но иногда хочется что-то измерить. Например, длину отрезка. Для этого целых чисел будет недостаточно. На самом деле, если мой эталонный отрезок помещается в другом отрезке больше 1 но меньше 2 раз, то какая длина-то? На помощь приходят дроби. Делим один отрезок на другой и получаем дробь n/m. Такие числа называют рациональными.

Дальше сложно. Выяснилось, что есть числа, которые дробями не представишь. Например, число “пи”, или квадратный корень из двух. У древних Греков данный факт выносил мозг и они старательно не замечали таких чисел. Они называются иррациональными. Дать точное определение оказалось не так-то просто, вот Дедекинд смог.

Иррациональные числа гораздо сложнее представить, чем целые. В самом деле, что же такое Pi?

Но и это еще не все. Мы дошли до комплексных чисел, которые описываются в виде z = x + iy, где i — мнимая единица. К счастью, в наш просвященный век комплексные числа учат в школе. Но, к несчастью, понимает их примерно 5% учеников.

Что мы имеем? Комплексные числа самые абстрактные и самые мощные. Из них можно вывести все другие числа. Кроме того, они наиболее сложны в понимании.

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

Физика

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

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


К сожалению, постепенно обнаружились некоторые явления, которые не укладывались в стройную и красивую теорию Ньютона. Например, смещение перигелия Меркурия (крайне любопытная история попыток объяснения этого явления). Казалось бы, у фотонов нет массы, так что свет не должен отклоняться. Но отклоняется. Для устранения этого и других более крупных противоречий потребовалась общая теория относительности. Она постулировала максимальную скорость распространения взаимодействия (скорость света) и связь пространства-времени с массой. Свет на самом деле и летит себе по прямой, но вот пространство вблизи солнца искривляется.

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

Функциональное программирование

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

Самым примитивным уровнем является присваивание. Например var n = 1. Какой-то абстрактный символ n у нас будет равен 1. Все довольно просто.

Далее, появляются функции f(x) -> y. Принимаем на вход значение какого-то типа, отдаем другое значение какого-то типа. Скажем, эта функция добавляет единицу:

function addOne(a) {return a+1}

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

Повышаем уровень абстракции и добавляем функции высшего порядка. Тут мы уже можем принимать другие функции и возвращать функции f(g(x)) -> h(x). Тут уже мощность системы повышается и мы можем делать крутые штуки, замечать, что некоторые функции похожи и писать более абстрактные функции.

Скажем, умножение каждого элемента списка на 2 и конвертация списка чисел в список строк — это всё операция map над списком, просто с разными параметрами. Мы один раз пишем такую функцию (абстрагируясь от того, что именно происходит с элементом списка), а потом уже функции высших порядков помогают нам с её помощью делать разные операции.


Мы создаем много таких абстрактных операций над списками (map, filter, group, skip, take, etc.), а потом замечаем, что на самом деле все они могут быть реализованы через ещё более абстрактную функцию reduce/fold.


А потом мы видим, что эту операцию reduce можно применять не только к спискам, но и к чему угодно, что имеет какую-то структуру (например, к дереву). Тут уже вступает в игру класс типов Foldable, на котором определены методы вроде fold. Если какой-то объект инстанциирует этот класс типов, определяя для себя реализацию fold, то такой объект сразу можно использовать с операциями map/filter/etc., которые были ранее определены через reduce.

Повышение уровня абстракции снова дает нам все более и более мощные решения.

Визуализация данных

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

Цены на хлеб, общий оборот, экспорт и размер долга на одном графике! Умное использование одной оси Y с пояснением, что цена на хлеб измеряется в фартингах, долг — в десятках миллионов, а оборот и экспорт — в сотнях миллионах. Интересно изучать корреляции. William Playfair. 1824

Со временем типов графиков придумали все больше и больше, выделили общие паттерны и все унифицировали до библиотеки графиков, которая знакома любому пользователю Excel.

Excel. Выбираем график. Вообще stacked bar charts обычно плохи. Особенно трехмерные.

Кажется, на этом все? Конечно же нет! Жак Бертен совершил небольшой подвиг, написав великолепную книгу Semiology of Graphic. Он обобщил принципы построения визуалиций данных и открыл дорогу к совершенно новому уровню абстракции, который не только включает в себя все существующие известные диаграммы, но и позволяет легко придумывать новые.

Идеи Бертена развил Лиланд Вилкинсон, создав грамматику графики (grammar of graphics). Если вкратце, то каждая диаграмма состоит из следующих элементов:

Data
Algebra
Scales
Statistics
Geometry
Coordinates
Aesthetics

И мы можем комбинировать их для получения практически любых диаграмм. Например, фасетные диаграммы, которые не умеет строить практически ни одна js-библиотека (кроме taucharts и plot.ly), описываются крайне просто:

Фасетная диаграмма

С помощью этой грамматики можно создать любую диаграмму. Однако это не бесплатно. Грамматика довольно сложна и требует времени на освоение. Кроме того, не так уж много инструментов хорошо ее поддерживают. Из доступных, пожалуй, это только ggplot2, да и то не полностью.

Как видим, и в этой области решения становятся все более общими и мощными.

Пользовательский интерфейс

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

Самый нижний уровень — это конкретное решение конкретной проблемы. Так как мне ближе системы управления проектами, возьмем несколько примеров из Targetprocess. Нужен нам, к примеру, список багов. Мы берем и делаем отдельный экран, который решает только эту задачу.

Список багов в Targetprocess 2

Каждый экран в системе в чем-то уникален. Конечно, есть общие принципы. Но в целом это отдельные страницы со своим кодом.

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

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

  • List — иерархичные списки, знакомые всем.
  • Board — группировка данных по двум осям. Kanban борды например.
  • Timeline — данные во времени. Диаграмма Ганта или родмэпы.
  • Calendar — обычный календарь по дням или месяцам, бывает удобно.
  • Network — визуализация зависимостей сущностей.
  • Single Entity View — карточка одной сущности.
  • Single Entity Edit/Add — добавление и редактирование одной сущности.
  • Report — любые графические отчеты. Слово “любые” сразу делает этот компонент очень сложным.
  • Dashboard — композиция разных представлений в одном месте для удобства быстрого доступа.

Весь набор высокоуровневых UI компонент, на которых можно построить практически любое Enterprise приложение.

Конечно же, есть и уникальные экраны со всякими настройками, административными штучками и так далее. Но всю работу с данными, а это основная часть приложения, можно реализовать с помощью десятка общих компонент. В идеальном мире, реализовав эти компоненты, мы можем быстро клепать системы управления проектами, CRM, Service Desk и прочие решения.

Я называю это динамическим UI. В Targetprocess 3 мы именно его и делаем. Например, у нас можно создать List, Board или Timeline любых сущностей.

Enterprise приложения

Как развивались и будут развиваться Enterprise приложения?

Разработка на заказ

Самый конкретный уровень — это custom software development. В этом случае компания решает свои проблемы самым конкретным образом с помощью разработчика ПО. Плюсы очевидны — костюм, сшитый на заказ, частенько сидит лучше. Но если портной плохой, то уже не факт. Минусы тоже ясны — в целом это очень дорого и не быстро.

Развитие и поддержка таких решений тоже дело не дешевое и не быстрое. Обычно в custom development не особенно заморачиваются с расширяемостью решений, больше упирая на скорость разработки. Так что через десяток лет система превращается в большой шарик навоза и никто не хочет в ней ничего трогать по понятной причине.

Продукты

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

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

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

Какое же идеальное Enterprise приложение? Оно должно подстраиваться под любую компанию без вовлечения программистов.

Представьте себе, выбираете вы софт для управления проектами и вам говорят: “Для начала мы должны выяснить, как вы работаете. Потом мы помогаем вам установить и настроить систему именно так, как вам нужно. Там будут только нужные вам сущности, с нужными свойствами и правилами, в привычной вам терминологии, только полезные экраны и ничего лишнего”.

Как вообще можно достичь такой нирваны?

Грамматика домена

Я думаю, нам нужно изобрести грамматику домена. Она может состоять примерно из таких вещей:

  • Entities — можно создавать любые сущности, с любыми полями.
  • Relations — сущности можно связывать между собой.
  • Metrics — в системе можно вычислять любые метрики. Например, прогресс по проекту в разных компаниях считается очень по разному.
  • Rules — в системе можно определять любые правила. Например, закрыть задачу, если закрыты все баги и все подзадачи. Правила в разных командах очень специфичны.
  • Events — использование событий для для уведомлений внешних и внутренних систем, каналов коммуникаций (емейл, SMS) и так далее.
  • Actions — в системе можно определять действия над сущностями: объединение, изменение типа, удаление и тп.
  • Workflow — гибкая конфигурация состояний любых сущностей.
  • Permissions — настройка прав доступа к любым сущностям и полям.

Создав систему, где можно декларативно описывать бизнес-домен, и привязав её к динамическому UI (см. выше), можно получить практически идеальное решение для огромного количества enterprise приложений. Даже создав такую систему в одном домене, например, управление проектами, мы получим уникальное решение на новом уровне абстракции и мощности, которое полностью изменит рынок.

Создание такой системы крайне непростая задача, на которую не жалко потратить 10 лет жизни. Мне она кажется возможной и практически реализуемой.

В итоге у нас будет сложное ядро, но простые и быстрые решения.

Выводы

Для начала, занимательная объединяющая таблица по всем областям, которые мы рассмотрели. Слева у нас конкретные вещи, а справа — довольно абстрактные.

Сразу можно отметить, что колонка слева понятна любому школьнику. Центральная колонка понятна школьнику одаренному. А вот с правой колонкой все гораздо сложнее, наслаждаться ей могут не более 5–10% населения Земли.


Настала пора синтеза!

Сложность

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

Экспоненциальное повышение сложности восприятия при повышении уровня абстракции. Высокоабстрактные концепции понятны малому числу людей.

Ясно, что повышение уровня абстракции усложняет понимание концепций и систем. Сначала повышение абстракции не сильно сказывается на сложности. На самом деле, натуральные и рациональные числа довольно понятны. Или, скажем, переменные и функции также. Но потом происходит резкий скачок и сложность возрастает экспоненциально. Функции высших порядков хорошо понимает не более 20% программистов. Общую теорию относительности вообще мало кто понимает. Высшие уровни абстракции доступны только гениям, а на верхнем уровне система превращается в магию и понятна только богам.

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

Чтобы вникнуть в более-менее абстрактные понятия и концепции нужно прилагать довольно приличные дополнительные усилия. Люди вообще не очень-то любят это делать, только если награда высока. Поэтому, если вы делаете бизнес-приложения, то нужно все показывать очень конкретно и прятать абстрактные штуки до поры до времени. На эти грабли мы наступили в Targetprocess, когда выставили напоказ возможность создавать свой динамический UI. С одной стороны, мощная и крутая концепция. С другой — сложная и непонятная. По хорошему, нужно показывать готовые решения, а ко всяким более высоким материям подводить пользователей за руку, постепенно, и не всех.

B2C решения должны работать с нижними уровнями абстракции, потому что большинство людей просто не будет врубаться во что-то сложнее Instagram. B2B решения чуть более свободны в этом плане, но все же не нужно надеяться, что бизнес-пользователи все сплошь гении или находятся в top 20%.

Мощность

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

Зависимость свойств программных систем от уровня абстракции.

Если применять все это к разработке ПО, то абстрактные системы делать сложнее и дольше. Выбор правильного уровня абстракции для построения системы — критически важная задача. Высокий уровень — медленно, сложно и мощно, низкий уровень — быстро, просто и конкретно. Заметим, что почти практически все решения в custom software development работают на нижнем уровне.

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

Эволюция

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

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

Изменение восприятия абстрактных концепций со временем.

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

Изменение

Вот у меня есть еще один открытый тезис, который любопытно обсудить.

Абстрактные системы проще модифицировать и развивать.

Так ли это на самом деле? Как посмотреть. Если мы имеем бизнес-приложение, построенное на доменной грамматике, то само приложение менять будет легко. Однако, если потребуется расширение или модифицирование ядра, то это будет непросто.

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

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

Итог

Будущее за более абстрактными системами. Вся история говорит нам об этом.

P.S. Спасибо Андрею Хмылову за ценные рекомендации по разделу “функциональное программирование”. Ну фактически это он его и переписал, потому что мои примеры были слишком абстрактными.

Enterprise software vendors have no taste

Alex Votsmush has it.

Enterprise software vendors have no taste

Every time I research some domain related to enterprise and check various products in it, my eyes bleed. I just can’t embrace unsightly screenshots on product pages and ugly tours. Why is that? We have so many beautifully designed products, web sites and services on the mass market, but if the product is designed for other companies (especially large) it is almost inevitably looks terrible.

Sprint board in Polarion software. Italic, strike through, bullet points — total mess.

My current theory is that enterprise software vendors have no taste. CEO, VP of development, Product managers that focus on enterprise market — all of them have no fucking taste. There is no taste in companies DNA, nobody cares about design and aesthetic. Profits, revenue, sales and new features — yes! Beautiful design — no.

I have a very simple criteria to check how good the solution is: If I can demo it to the potential customer and be proud about what I show — it is good. If I can’t imagine demoing it — it sucks.

Sometimes initial look is not so bad, but when you start to run real cases you feel a constant pain caused by delays, missed UI patterns, unintuitive ways to do things and lack of hints… stop, it is more about user experience and we are talking about taste.

Rational Team Concert has home icon in top corner. Why?

Why so few enterprise vendors praise good design and spend time on polishing it? Is it so hard to add correct spaces between form element and labels? No, it is not, but nobody cares.

DevSuite has classical UI with overwhelming amount of details, gradients, embarrassing lack of spaces in a form and total lack of taste.

You may argue that it is economically unwise to spend much time on design, train people to differentiate good design from bad design, train yourself to spot shit as an executive. I can agree with this argument for B2B markets, but I personally can’t create products that look like they were designed without passion. Every product should be created with passion and it spreads to every little detail in the product. Period.

Rally Software not the worst example, but still many small details uncover the truth — lack of taste.

Is there any opportunity to companies that value good design on B2B markets? Several years ago I’d said no, but with all latest trends I think design is becoming more and more important. Mobile surge and great B2C products slowly change people expectations from all software products. When you use an iPhone or even a Galaxy S and then switch to Salesforce on your laptop—you feel the difference.

Famous Salesforce is not an exception. Totally successful business has outdated and tasteless product. At least I know they are improving in other areas.

This feeling accumulates with time. You start to notice small glitches and overall clutterness. Eventually, when you’ll see a good looking B2B product you’ll want to give it a chance.

Another argument I hear often is about utility. It is easy to burry utility under the beautiful picture. But good design has both:

The most elegant solution will yield a design that is gracefully tempered with restraint and precision — both useful and beautiful.

I hope enterprise vendors that focus on design and put significant effort into it will win eventually. Unfortunately, this strategy doesn’t bring significant additional revenue right now. But money is not everything in this world. I value passion, craftsmanship and quality more.

P.S. Hacker News thread https://news.ycombinator.com/item?id=9190195

Create

I’m 35 and only recently I truly nailed what drives my life — it’s “creation”. When I create something meaningful I feel really great. My creations are not tangible in most cases, like poems, songs, design solutions, new product features, articles, books and blog posts. In general I think creation of anything that lasts is a good way to spend your life.

http://mashable.com/2013/02/13/amazing-minecraft-creations/

Deep immersion into a working process turns off everything around. You suddenly ignore all external sounds, you don’t feel how minutes and even hours passing by, you don’t notice poor lighting and reject timid body requests. Then you wake up and check the result. Maybe it’s not perfect, maybe it’s just a start of something significant, maybe you will throw it away in several days after critical examination, but nevertheless you have a sense of achievement. You’ve just completed a thing that may be a part of your legacy.

Can you write? Can you invent a software that changes people lives? Can you build a house? You never know till you try. Your life passion is not “programmed”, it should be “discovered” via experiments and achievements. Moreover, public recognition in many cases is not a good indicator of your achievements. Your personal feelings do matter. When you achieve something and enjoy the process, it is a good signal that your experiment was successful and you should keep going. When you spent quite a lot of time on, let’s say, quantum physics with no clear results and theoretical constructions bored you to death, maybe you should try something else (or maybe you just have a depression, but it’s curable).

Any startup and any ambitious mature company should hire as many creators as it can. These people are enthusiastic, active and relentless. They are the engine of a company. They keep learning, experiment a lot and failures are just a part of their working process. Every team desperately needs at least one creator, otherwise it will be mediocre at best.

How to discover a creator? It is relatively easy to do. Usually they can have something from the list below:

  • Side products (frameworks, apps, whatever)
  • Blog, articles, books, whatever
  • Hobbies related to creation (painting, robots construction, fancywork)
  • They usually like LEGO and Minecraft (this option alone is not 100% proof that a person is a creator)

Consumers are all around. We all consume books, movies, TV shows, cars, food, etc. How many of us transform all these consumed information, experiences and skills into something meaningful? Surprisingly, creators are quite rare. It’s incredibly hard to find one and align his goals with company goals. Sometimes they are not polite and hate everything that blocks or slow downs acts of creation. They will not tolerate political games and bureaucracy. Most attempts to cheat them and exploit them will fail in the long run.

We need to build companies that promote honesty, creation and learning. I’m here to create. You?