Про видимую демократию

Про видимую демократию

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

Вы наверняка такое видели или даже делали сами (я точно грешен): руководитель организует встречу для обсуждения какой-то проблемы. Но приходит туда с готовым решением или идеей. Или даже презентацией. Ну потому что ты же руководитель/снователь `— ты всегда должен знать, что делать дальше 🙂

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

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

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

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

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

Как все успевать

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

А вообще, это отличный повод поговорить о том, как все успевать.

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

Зачем?

Боюсь, тут не обойтись без предыстории.

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


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

Мне очень нравилась тусоваться на занятиях и рассуждать по поводу UX, но с учебой я конкретно ложанул. В первом семестре мы работали над личными проектами и я серьезно застрял на уровне идеи — и когда все уже отрисовывали UI, я все ещё решал какая механика у моего приложения. Все это привело к тому, что на защите я с треском провалился и получил трояк. Тогда мои глаза открылись — как так! Неужели я хуже вон тех ребят? Да не может быть!

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

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

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

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

Реванш за тройку и закрытый гештальт.

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

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

Так как же все успевать?

Как в и любом деле главное захотеть. Толчком может послужить злость, как в моем случае. Много хотеть, ничего не успевать, злиться на себя и все таки делать.

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

Иначе для чего вообще бросать себе вызов?

Карьерный путь у разных профессий разный

Карьерный путь у разных профессий разный

Но с годами я заметил несколько универсальных этапов по которым развивается лидерство:

◾️1. Вы Стажер. Вы умеете выполнять поручения, действуя по инструкции. Иногда ошибаетесь. Ваша миссия: учиться.

◾️2. Вы Ассистент. Вы умеете выполнять не четко сформулированные задания. Задаёте уточняющие вопросы когда требуется. Ваша миссия: помогать.

◾️3. Вы Исполнитель. Самостоятельно отслеживаете задачи по мере поступления. Выбираете одно из подходящих известных решений. Ваша миссия: следовать процессу.

◾️4. Вы Специалист.Вы полностью берете на себя ответственность за решение задач и приходите с планом. Придумываете нестандартные и уникальные решения. Ваша миссия: решать проблемы.

◾️5. Вы Эксперт. Вы полностью отвечаете за область сложных задач и разрабатываете лучшие решения самостоятельно. Вы - "ракета с лазерным наведением": когда вам указали на цель, вы точно ее достигните. Ваша миссия: находить лучшее решение.

◾️6. Вы Ведущий Эксперт. Вы не только самостоятельно находите решения, но теперь вы ещё и формулируете новые задачи. На этом этапе вы "ракета с тепловым наведением" - чувствуете цель и следуете за ней. Ваша миссия: видеть новые задачи и возможности.

◾️7. Вы Управленец. Вы идентифицируете задачи и находите людей, которые их решат. Нанимаете и управляете сотрудниками. Ваша миссия: строить структуру, способную находить и решать задачи.

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

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

https://www.instagram.com/p/CGu5JUZJyGk/

7 важных факторов PHP-приложения

7 важных факторов PHP-приложения

Инженеры платформы Heroku (https://www.heroku.com/) на основе собственного опыта создали методологию (https://12factor.net/ru/) для разработки SaaS-приложений.

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

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

Кодовая база (https://12factor.net/ru/codebase). Забота о коде начинается с принципов его версионирования и хранения. Используйте Git Flow или его адаптацию с учетом специфики работы ваших команд.

Зависимости (https://12factor.net/ru/dependencies). Используйте менеджер зависимостей Composer (https://getcomposer.org/) и его основные операции install и update для манипуляций c composer.json (https://getcomposer.org/doc/04-schema.md) и composer.lock.

Конфигурация (https://12factor.net/ru/config). Предпочтительным методом обработки конфигурации является использование переменных среды. Для работы с ними мы применяем компонент symfony/dotenv (https://github.com/symfony/dotenv).

Параллелизм (https://12factor.net/ru/concurrency). Выполняйте процессы в фоне, тем самым снижая время отклика при взаимодействии с вашим сервисом. Выделяйте веб-процессы в реальном времени и рабочие процессы. Первые принимают http-запросы от клиента, а вторые — выполняют фоновые задачи, например, с помощью брокера сообщений RabbitMQ (https://github.com/rabbitmq).

Паритет разработки/работы приложения (https://12factor.net/ru/dev-prod-parity). Для того чтобы обеспечить схожесть сред разработки, тестирования и продакшена, мы используем виртуализацию на основе Docker и специально подготовленные образы, содержащие одинаковые наборы и версии библиотек. Промышленные и тестовые среды отличаются лишь степенью масштабирования, на основе технологий K8S и Swarm.

Журналирование (https://12factor.net/ru/logs). Фактор утверждает, что приложение должно просто писать в STDOUT и STDERR, а среда должна отвечать за маршрутизацию этих сообщений в хранилище. Технология PHP-FPM позволяет производить вывод логов в STDOUT, что крайне полезно при работе с Docker-контейнерами. Для организации процесса логирования на уровне приложения мы используем сторонние внешние библиотеки, например Monolog (https://github.com/Seldaek/monolog) или компоненты фреймворков.

Задачи администрирования (https://12factor.net/ru/admin-processes). Реализовать сценарии администрирования приложения можно с помощью внешних библиотек, например Symfony Console (https://github.com/symfony/console). Большинство современных фреймворков имеют встроенные средства для организации запуска консольных команд для служебных целей и миграций. Например, в Yii Framework есть понятие консольного приложения (https://www.yiiframework.com/doc/guide/2.0/en/tutorial-console) и команды.

Денис Ломов #2 - о работе с заказчиком и Воронежском дизайн-сообществе.

Креативный директор Red Collar.
http://redcollar.ru/

— Немного рефлексии. Какой твой проект ты считаешь самым неудачным?

Ох, тяжело ответить. Я понимаю под словом "неудачный" когда мы хотели сделать круто, но не получилось по каким-то причинам, и от этого обидно. Например, insider.moscow - первая версия сайта была стильная и цельная, а потом мы пошли на поводу у клиента, и сначала сделали главную страницу "светлой" - мы прозвали это "кокаиновый инсайдер". А после он стал превращаться в монстра. Ну а сейчас уже другая компании все дорабатывает, меняет, поэтому лучше на него не заходить))

— Что ты бы сделал по-другому, чтобы этого не случилось?

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

— Хорошая позиция. Немного про работу в Воронеже. Что из себя представляет местное дизайн-сообщество?

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

— Как устроится к вам на работу дизайнером? И на какие навыки или качества ты смотришь в первую очередь?

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

— Так, а какого дизайнера ты точно никогда не возьмешь на работу?

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

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

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

Олег Большаков написал о проектировании системы уведомлений.

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

2. Создайте каркас: первый столбец таблицы — для событий, остальные столбцы — для уведомлений для каждой пары «задействованная роль и канал связи» (пуш-уведомления, письма, персональная лента). Например: «Персональная лента: Исполнитель».

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

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

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

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

6. Доработайте события. Добавьте формулировки:

— Для массовых событий. Например: «ПОЛЬЗОВАТЕЛЬ: Добавил в утверждение N файлов»;
— Для последовательностей действий. Например: если пользователь удалил одного утверждающего и добавил другого, пишите «Заменил утверждающего с УТВЕРЖДАЮЩИЙ на УТВЕРЖДАЮЩИЙ».