25 |
26 | );
27 | }
28 |
29 | export default function Home() {
30 | const {siteConfig} = useDocusaurusContext();
31 | return (
32 |
35 |
36 |
37 |
38 |
39 |
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/docs/profession/onboarding/index.md:
--------------------------------------------------------------------------------
1 | # Онбординг
2 | Онбординг — процесс знакомства, интеграции и адаптации в профессию, компанию или команду. Это все, что помогает человеку быстрее освоиться, обрасти знаниями и начать приносить ценность.
3 |
4 | ## Виды онбординга для Деливери менеджера
5 | 1. [В команду](onboarding/to-team)
6 | 2. [В компанию](onboarding/to-company)
7 |
8 | ## Как ускорить онбординг и улучшить качество решений
9 | Чтобы быстрее адаптировать и обучить новичка, можно и нужно привлекать опытных коллег. Для новичка работа с buddy или ментором снижает уровень стресса и сокращает риски принятия сомнительных решений в период адаптации.
10 |
11 | ## Работа с напарником (buddy)
12 | Напарник или buddy – это коллега по работе, готовый ответить на все вопросы и помочь с адаптацией новичка.
13 |
14 | Buddy закрепляется на время испытательного срока. Его задача — сократить срок адаптации новичков и дать им всю необходимую информацию для выполнения своей роли.
15 |
16 | **Buddy нужен**, когда новичок выходит туда, где нет других Деливери менеджеров и ему придется работать одному.
17 |
18 | **Buddy не нужен**, если новичок выходит в команду к более опытному Деливери менеджеру, который и будет отвечать за онбординг.
19 |
20 | ## Работа с ментором
21 | Ментор (наставник) — это опытный профессионал, источник знаний и ответов. Он вдохновляет и помогает развиваться своему менти.
22 |
23 | В отличии от buddy, ментор строит долгосрочные отношения для развития своего подопечного и помогает решать текущие проблемы. Он сосредоточен на общем развитии человека. Ментор применяет инструменты коуча, фасилитатора и даже психолога.
24 |
--------------------------------------------------------------------------------
/docs/roadmap/management/groups/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_class_name: roadmap
3 | ---
4 | # Управление группами
5 | Когда в вашей зоне влияния становится более 1 человека, то вы начинаете работать с некоторыми группами людей. Это может быть команда, целая организация (отдел, департамент, сквад, трайб и прочее), а может не то и не другое.
6 |
7 | ```mermaid
8 | graph LR
9 | %%{ init: { 'flowchart': { 'nodeSpacing': 10, 'rankSpacing': 200 }}}%%
10 | A[Управление группами] --- B1(Организации) & B2(Команды) & B3(Племена/социальные группы) & B4(Комьюнити)
11 | ```
12 |
13 | ## О чём это направление
14 |
15 | Здесь собраны инструменты, которые во-первых помогут идентифицировать группу в вашей зоне влияния, а во-вторых правильно с ней работать.
16 |
17 | ## Почему важно работать с этим направлением
18 |
19 | * Работа с группами может оказаться как более сложной, так и более интересной, чем работа с одним человеком. Когда вы имеете дело с группой, появляются взаимосвязи и зависимости, которых нет в случае работы с одним человеком. Поэтому важно научиться правильно взаимодействовать с группами.
20 | * Люди в группах часто ведут себя по-другому, чем в одиночку. Это связано с различными факторами, такими как социальная динамика, влияние других людей на поведение, принятие решений в группе и т.д. Понимание причин такого поведения и умение правильно с этим работать - крайне важно.
21 | * Также важно понимать, что инструменты, которые хорошо себя зарекомендовали в работе с одним человеком, могут не сработать с группой, состоящей из нескольких человек. Каждый инструмент имеет свою применимость, и его нужно уметь правильно использовать в зависимости от ситуации.
22 |
23 | ## Дополнительные материалы
24 | * [Анти-паттерны](/docs/profession/antipatterns)
25 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: main
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | checks:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - uses: actions/setup-node@v3
14 | with:
15 | node-version: 18
16 | cache: yarn
17 | - name: Install dependencies
18 | run: yarn install --frozen-lockfile
19 | - name: Test build website
20 | run: yarn build
21 | gh-release:
22 | needs: checks
23 | if: github.event_name != 'pull_request'
24 | runs-on: ubuntu-latest
25 | steps:
26 | - uses: actions/checkout@v3
27 | - uses: actions/setup-node@v3
28 | with:
29 | node-version: 18
30 | cache: yarn
31 | - name: Add key to allow access to repository
32 | env:
33 | SSH_AUTH_SOCK: /tmp/ssh_agent.sock
34 | run: |
35 | mkdir -p ~/.ssh
36 | ssh-keyscan github.com >> ~/.ssh/known_hosts
37 | echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa
38 | chmod 600 ~/.ssh/id_rsa
39 | cat <> ~/.ssh/config
40 | Host github.com
41 | HostName github.com
42 | IdentityFile ~/.ssh/id_rsa
43 | EOT
44 | - name: Release to GitHub Pages
45 | env:
46 | USE_SSH: true
47 | GIT_USER: git
48 | run: |
49 | git config --global user.email "actions@github.com"
50 | git config --global user.name "gh-actions"
51 | if [ -e yarn.lock ]; then
52 | yarn install --frozen-lockfile
53 | elif [ -e package-lock.json ]; then
54 | npm ci
55 | else
56 | npm i
57 | fi
58 | npx docusaurus deploy
59 |
--------------------------------------------------------------------------------
/docs/profession/good-to-know.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Полезные материалы
3 | toc_max_heading_level: 5
4 | ---
5 |
6 | # Полезные материалы: книги, видео, подкасты для менеджера
7 |
8 | :::tip
9 | Внутри каждого раздела материалы расположены по возрастанию сложности сверху-вниз. Советуем всегда начинать изучение с более "верхних" материалов, а потом спускаться ниже.
10 | :::
11 |
12 | ## Это база
13 | Сложно представить себе менеджера, который бы не читал эти книги
14 |
15 | :book: Цель. Процесс непрерывного совершенствования (Элияху Голдратт)
16 |
17 | :book: Deadline. Роман об управлении проектами (Том ДеМарко)
18 |
19 | ## По направлениям
20 | ### Управление группами
21 | :book: Boss бесподобный или бесполезный (Рэй Иммельман)
22 |
23 | :book: Корпоративное племя (Даниэль Браун,Итске Крамер)
24 |
25 | ### Управление изменениями
26 | #### Последовательность
27 | :movie_camera: [Как не навредить себе и коллегам, когда проводишь изменения в компании](https://youtu.be/lrri_EcgeZ4) (Михаил Мартынов)
28 |
29 | :book: Управляя изменениями. Как эффективно управлять изменениями в обществе, бизнесе и личной жизни (Ицхак Адизес)
30 |
31 | ##### 8 шагов Коттера
32 | :book: Наш Айсберг тает. Как добиться результата в условиях изменений (Джон Коттер)
33 |
34 | :book: Впереди перемен (Джон Коттер)
35 |
36 | ##### ADKAR
37 | :movie_camera: [Пять этапов для успешных изменений ADKAR](https://youtu.be/Jd-vYeL3Kb4) (Римма Денисовец)
38 |
39 | ### Управление работой
40 | #### Теория ограничений
41 | :book: Цель. Процесс непрерывного совершенствования (Элияху Голдратт)
42 |
43 | :movie_camera: [Работа с узкими звеньями процесса](https://youtu.be/eKNWH29NKs0) (Алексей Пименов)
44 |
45 | #### Задачами
46 | ##### Оценка
47 | :movie_camera: [Как прогнозировать время выполнения задач? Методики прогноза](https://youtu.be/cw1U5XXXuiI) (Павел Ахметчанов)
48 |
49 | #### Проектирование систем
50 | ##### Valuе Stream Mapping
51 | :movie_camera: [Проблемы в работе деливери-менеджера и способы их решения. Valuе Stream Mapping (VSM)](https://youtu.be/5YARzGJcDHg) (Виктория Педченко)
52 |
53 | ##### S.T.A.T.I.K.
54 | :movie_camera: [Системный подход в Kanban. S.T.A.T.I.K. – сервисная археология](https://youtu.be/uI5D00zav58) (Евгений Степченко)
55 |
--------------------------------------------------------------------------------
/docs/roadmap/management/change/index.md:
--------------------------------------------------------------------------------
1 | # Управление изменениями
2 | Управление изменениями — это важный процесс, который позволяет контролировать изменения, чтобы достичь поставленных целей и улучшить эффективность. Может включать в себя внедрение новых систем, изменение бизнес-процессов, пересмотр организационной структуры и многое другое.
3 |
4 | ```mermaid
5 | graph LR
6 | %%{ init: { 'flowchart': { 'nodeSpacing': 10, 'rankSpacing': 200 }}}%%
7 | A[Управление изменениями] --- B1(Анализ/изучение контекста) & B2(Последовательность)
8 | ```
9 |
10 | ## О чём это направление
11 | Важно понимать, что внесение изменений - это сложный процесс, который может как помочь, так и навредить. Поэтому очень важно провести **анализ контекста**, чтобы понять, какие изменения необходимо внести и как их внедрение повлияет на текущие процессы, людей и компанию в целом. Анализ контекста может включать в себя изучение текущего состояния, целей и задач, анализ внешней среды и т. д. Также важно изучить контекст, понять культуру, ценности и нормы поведения, чтобы определить, как изменения могут повлиять на сотрудников и как их можно подготовить к изменениям.
12 |
13 | Другим важным аспектом управления изменениями является определение **последовательности изменений**. Это включает в себя планирование, разработку и реализацию изменений. Необходимо определить, какие изменения необходимо внести, кто будет ответственным за их внедрение и какие ресурсы потребуются для успешного завершения проекта. Важно понимать, что последовательность изменений может быть различной для разных организаций и проектов. Поэтому необходимо провести анализ и изучение контекста, чтобы определить наиболее эффективный подход к внедрению изменений.
14 |
15 | Использование инструментов управления изменениями, таких как анализ и изучение контекста, а также определение последовательности изменений, помогает гарантировать успешное внедрение изменений и достижение поставленных целей. Не бойтесь вносить изменения, но не забывайте о необходимости правильного управления ими.
16 |
17 | ## Почему важно работать с этим направлением
18 | * Управление изменениями требуют системного подхода и знаний инструментов и методик. В противном случае могут возникнуть непредсказуемые проблемы, а результат будет далек от ожидаемого
19 |
20 | ## Дополнительные материалы
21 | * [Книги, видео, подкасты](/docs/profession/good-to-know#управление-изменениями)
22 | * [Анти-паттерны](/docs/profession/antipatterns)
23 |
--------------------------------------------------------------------------------
/docs/roadmap/professional-growth/communications/facilitation.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_class_name: roadmap
3 | ---
4 | # Фасилитация
5 | **Фасилитация** - это способ организовать эффективное взаимодействие команды во время общей встречи.
6 |
7 | Фасилитатором может выступать любой член команды, важно, чтобы ведущий не был заинтересован в каком-либо из решений и помог группе самостоятельно к нему прийти.
8 |
9 | Можно выделить следующие функции фасилитатора:
10 |
11 | Вовлекает в обсуждение всех членов группы
12 | Стимулирует и побуждает команду вместе принимать решения
13 | Поддерживает атмосферу общей ответсвенности за принимаемые решения
14 | Ограничивает команду от различных непродуктивных ситуации: обсуждение затягивается на часы, а решение так и не принято, кто-то из участников саботирует встречу и т.д
15 |
16 | ## Как начать фасилитировать?
17 |
18 | 1. Желательно пройти обучение по фасилитации. Рекомендуемое обучение: Тренинг от команды Co-Actors, получение ICP-ATF сертификации
19 | 2. Вне зависимости от наличия обучения, сразу начать пробовать, чем раньше начнете, тем быстрее получите фидбек и обнаружите ошибки в своей работе Материалы, которые могут помочь:
20 | * группа в telegram "Нестыдная фасилитация"
21 | * добавить еще ссылок
22 |
23 | ## Как подготовиться ко встрече, краткий обзор основных активностей:
24 |
25 | 1. Зачем встреча и кто на ней будет?
26 | * Понять цель: зачем команде эта встреча
27 | * Определить тип команды и кол-во человек: группа руководителей, команда разработки, группа контента и тд
28 | * Определиться с датой проведения и найти в календаре свободный слот для всей команды
29 | 2. Подготовить дизайн встречи, который будет различаться в зависимости от целей, типа команды и кол-ва человек (будет полезен пункт выше "Материалы, которые могут помочь")
30 | 3. После встречи зафиксировать результаты: action points, ответственные, сроки
31 | 4. При возможности желательно возвращать команду к принятым решениям, либо определить за это ответственного
32 |
33 | ## Ошибки в использовании
34 | * Фасилитатор навязывает свое мнение команде: даже если вы знаете решение - вы уверенны, что ваше решение точно верно? - как фасилитатор вы можете подвести группу к этому решению наводящими вопросами, либо напрямую спросить у команды, не будут ли ребята против, если попробуете обозначить "идею", но сразу обозначить, что конечное решение за командой
35 | * Дизайн встречи не подходит группе: возможно для апишников в свитерах не всегда лучшее решение прийти на встречу с дизайном карточек в виде котиков
36 | * Фасилитатор не соблюдает тайминг: приведет к тому, что встреча затянется, если команда не может принять решение, спросите у команды, возможно стоит отдельно обсудить этот вопрос, предварительно подготовив варианты решения?
37 | * дополнить...
38 |
--------------------------------------------------------------------------------
/blog/2023-03-31-version-1/index.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Version 1.0
3 | authors:
4 | - 'michael-martynov'
5 | tags: [release]
6 | ---
7 | Привет 👋
8 |
9 | Наша команда рада представить ежеквартальное обновление профессии Деливери менеджера.
10 |
11 | Давайте посмотрим, что новенького попало в релиз.
12 |
13 | * [Улучшение понятности страницы Профессия](https://github.com/Tinkoff/dm-knowledgebase/issues/14)
14 | * [Карта развития Деливери менеджера](https://github.com/Tinkoff/dm-knowledgebase/issues/10)
15 | * [Онбординг в профессию](https://github.com/Tinkoff/dm-knowledgebase/issues/13)
16 |
17 |
18 |
19 | ## Обновили тексты
20 | Вместе с редакторами потрудились, чтобы тексты стали более человечные, понятные – меньше абстракции и больше конкретики. Это касается [описания профессии](/docs/profession/about) и раздела с [грейдами](/docs/profession/competencies/grades). Где-то мы умышленно оставили размытые формулировки, чтобы не давать вам чёткие шаги и не ограничивать вашу фантазию. Мы обозначили берега, а какие они – лучше решать вам.
21 |
22 | ## Появилась карта развития Деливери менеджера
23 | Если у вас нет понимания какой инструмент или практику применить к тому контексту или задачам, которые перед вами стоят, то у нас есть для вас отличное решение - [Карта развития](/docs/roadmap). Можно выбрать ветку, которая вас интересует, например – управлением изменениями и изучить все практики и методы, которые помогают эти изменения проводить. Сейчас карточки инструментов пустые, но мы собираемся их потихоньку наполнять, обогащать кейсами, рекомендациями и личным опытом.
24 |
25 | ## Добавили раздел онбординга
26 | Профессия – это хорошо, но как в неё войти, что делать когда только попал в компанию или в команду? Ответы можно найти на страницах онбординга [в компанию](/docs/profession/onboarding/to-company) и [в команду](/docs/profession/onboarding/to-team).
27 |
28 | Как онбордиться в профессию пока не описали, так как этот многогранный процесс нам нужно ещё раз прожить самим, провести CustDev и потом обработать полученные знания.
29 |
30 | ## Появилась страница анти-паттернов
31 | Можно сказать, что на странице [анти-паттернов](/docs/profession/antipatterns), мы собрали вредные советы. Это то, что делать не надо, а если вы будете заниматься тем, что там написано, то жди беды, выгорания или чего ещё хуже.
32 |
33 | ## Планы на Q2 2023
34 | В новом релизе мы планируем поработать над улучшением читаемости текста теперь уже новых станиц, добавить онбординг в профессию, наполнить описаниями инструменты Деливери менеджера.
35 |
36 | Актуальную дорожную карту можно посмотреть в [DM Knowledge Base - Roadmap 2023](https://github.com/Tinkoff/dm-knowledgebase/issues/5)
37 |
38 | ## Как помочь проекту или связаться с нами
39 | Прочитайте разделы [Как вы можете помочь](https://github.com/Tinkoff/dm-knowledgebase#как-вы-можете-помочь) и [Как связаться](https://github.com/Tinkoff/dm-knowledgebase#как-связаться)
40 |
--------------------------------------------------------------------------------
/docs/profession/antipatterns.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Анти-паттерны
3 | hide_table_of_contents: true
4 | ---
5 |
6 | # Анти-паттерны в работе Деливери менеджера
7 | Собрали список того, что нужно делать, чтобы стать самым неэффективным Деливери менеджером в мире:
8 |
9 |
Не давать себе время на отдых, думать о работе постоянно. И в выходные тоже
10 |
Не фиксировать договоренности
11 |
Не делать того, что пропагандируешь сам
12 |
Не включать камеру на встречах
13 |
Не подводить итоги и забивать на логическое завершение изменений
14 |
Проводить много параллельных изменений в одной команде
15 |
Геройствовать и делать изменения вопреки желаниям заказчика
16 |
Долго не выходить на связь с заказчиком, не синхронизироваться с ним потому что «Он занят. Не буду его отвлекать»
17 |
Делать работу за заказчика изменений. Например, вместо заказчика сообщать командам о причинах изменений и того, что от них хотим
18 |
Ставить кучу встреч одну за другой, чтобы не было времени делать что-то другое
19 |
Делать именно так и никак иначе, потому что так написано в умной книжке. Не подвергать написанное конструктивной критике и применимости к своему контексту
20 |
Помогать тем, кому это не нужно
21 |
Помогать тем, у кого нет запроса на помощь
22 |
Начинать работать с человеком через изменение его взглядов при помощи менторинга и коучинга
23 |
Не формировать ожидания на ранних стадиях работ
24 |
Не замыкать потоки информации внутри команды
25 |
Делать все, о чем тебя просят
26 |
Быть для всех хорошим
27 |
Сравнивать команды между собой
28 |
Работать сразу со 100500+ командами
29 |
Составить единый план цифровой трансформации на много лет вперед
30 |
Все стандартизировать
31 |
Забыть, что проверяешь гипотезы. Делай так и не думай!
32 |
Не сомневаться в своей правоте
33 |
Брать только на себя всю ответственность за результат
34 |
Лечить всех одной таблеткой
35 |
Не занимать нейтральную позицию
36 |
Писать амбициозные планы, но не реализовывать их
37 |
Делать много всяких действий с малой ценностью
38 |
Делать «дешевую» работу. Например, заполнять excel за других, писать отчеты и фиксировать за команду договоренности на встречах
39 |
Больше думать про процессы и инструменты, а не про людей и их взаимодействие
40 |
Замыкать процессы на себе
41 |
На все процессы писать подробную документацию
42 |
Давать на все готовые ответы, не вникая в контекст задачи
43 |
Забирать ответственность у руководителей команд и делать все за них
44 |
Всеми силами пытаться исправить и изменить людей
45 |
Приходить в команды в обход их руководителей и рассказывать, как им нужно работать и что делать
111 | `,
112 | };
113 |
114 | export default templates;
115 |
--------------------------------------------------------------------------------
/docs/roadmap/management/change/order/index.md:
--------------------------------------------------------------------------------
1 | # Последовательность
2 | ## Инструменты
3 | Для определения последовательности изменений можно использовать различные модели. Далее расскажем, как выбрать подходящую, а на странице каждой из этих моделей раскрываем наши советы по их реализации.
4 |
5 | ```mermaid
6 | graph LR
7 | %%{ init: { 'flowchart': { 'nodeSpacing': 10, 'rankSpacing': 200 }}}%%
8 | A[Последовательность] --- B1(8 шагов Коттера) & B2(ADKAR) & B3(Цикл Деминга PDCA) & B4(Модель Льюина) & B5(Революционная модель)
9 | click B1 href "order/kotter-8-steps" "Последовательность"
10 | classDef label-link text-decoration: underline;
11 | class B1 label-link
12 | ```
13 |
14 | ## Как выбрать
15 | Для выбора подходящей нужно понимать цели организации, ее культуру и структуру, а также готовность сотрудников к изменениям.
16 |
17 | Если прямо здесь и сейчас давать какой-то совет, то он звучит так: PDCA и ADKAR подходят для небольших изменений, требующих изменения поведения, в то время как 8-ступенчатая модель Коттера и модель Льюина лучше всего подходят для крупномасштабных изменений, которые требуют культурного изменения. А если хочется создать культуру непрерывного улучшения и инноваций, то подойдет эволюционная модель.
18 |
19 | Но важно внимательно оценить каждую модель, чтобы определить, какая из них лучше всего подойдет для вашей организации. В этом процессе таблица сравнения разных моделей изменений может оказаться полезной, чтобы понять их плюсы и минусы.
20 |
21 | ### ADKAR и Kotter
22 |
23 | | Параметр | Модель Коттера | Модель ADKAR |
24 | |---------------------------|--------------------------------------------------------------|---------------------------------------------------------|
25 | | Количество этапов | 8 | 5 |
26 | | Ориентация | Большие, сложные изменения | Меньшие, более простые изменения |
27 | | Фокус | Мотивация сотрудников | Изменение поведения сотрудников |
28 | | Последовательность этапов | Действия выполняются последовательно | Действия выполняются одновременно или в параллели |
29 | | Результат | Постоянное изменение культуры и структуры организации | Постоянное изменение поведения сотрудников |
30 | | Ключевой фактор успеха | Мотивация и лидерство | Коммуникация и обучение |
31 | | Недостатки | Медленная реализация, не всегда подходит для малых изменений | Не уделяется достаточного внимания культуре организации |
32 |
33 | Как видно из таблицы, обе модели имеют свои преимущества и недостатки. Модель Коттера ориентирована на более крупные и сложные изменения, а модель ADKAR - на более простые и меньшие изменения. Модель Коттера предполагает последовательное выполнение этапов, в то время как модель ADKAR предлагает выполнение действий одновременно или в параллели. Ключевыми факторами успеха в модели Коттера являются мотивация и лидерство, а в модели ADKAR - коммуникация и обучение.
34 |
35 | ### Революционная и эволюционная модель
36 |
37 | | Категории | Революционная модель | Эволюционная модель |
38 | |---------------------|---------------------------------------------------|---------------------------------------------------------------|
39 | | Философия | Большой, глобальный и быстрый прыжок вперед | Медленное, но постоянное движение вперед |
40 | | Подход к изменениям | Радикальное пересмотрение | Инкрементальное улучшение |
41 | | Сфера применения | Масштабные преобразования в организации и бизнесе | Непрерывное улучшение внутренних процессов |
42 | | Тип лидерства | Руководитель как главный двигатель изменений | Руководитель как координатор изменений |
43 | | Роль сотрудников | Участие в революционных изменениях | Участие в улучшении текущих процессов |
44 | | Риски и сложности | Большой риск и высокие затраты на реализацию | Медленный прогресс и слабое привлечение внимания к изменениям |
45 |
46 | Как видно из таблицы, революционная модель изменений направлена на быстрое и радикальное пересмотрение текущего состояния организации и ее бизнес-модели, что может привести к значительным результатам в короткие сроки. Однако, это также связано с большими рисками и высокими затратами на реализацию изменений.
47 |
48 | С другой стороны, эволюционная модель изменений более ориентирована на непрерывное улучшение текущих процессов в организации. Это позволяет достигать результатов более медленно, но с меньшими затратами и рисками. Также эта модель более доступна для многих организаций, так как не требует крупномасштабных изменений в короткие сроки.
49 |
50 | Обе модели имеют свои сильные и слабые стороны, и выбор конкретной модели зависит от целей, ситуации в организации и ее культуры.
51 |
52 | ### Общие выводы
53 |
54 | Так или иначе все модели укладываются в три этапа
55 |
56 | **Поиск мотивации или стрессора к изменениям:**
57 | - Анализ текущего состояния и поиск проблемных областей (Коттер, АДКАР, Революционная модель)
58 | - Оценка степени готовности сотрудников к изменениям (Коттер, АДКАР, Революционная модель)
59 | - Выявление базовых причин сопротивления изменениям (Коттер, АДКАР, Революционная модель)
60 |
61 | **Рефлексия:**
62 | - Определение целей и планирование изменений (Коттер, АДКАР, Эволюционная модель)
63 | - Разработка стратегии изменений (Коттер, АДКАР, Эволюционная модель)
64 | - Построение коммуникационной стратегии (Коттер, АДКАР, Эволюционная модель)
65 |
66 | **Совершение акта лидерства:**
67 | - Реализация изменений (Коттер, АДКАР, Эволюционная модель)
68 | - Поддержка новых методов работы (Коттер, АДКАР, Эволюционная модель)
69 | - Оценка результатов и корректировка стратегии изменений (Коттер, АДКАР, Эволюционная модель)
70 |
--------------------------------------------------------------------------------
/src/theme/SearchBar/lib/lunar-search.js:
--------------------------------------------------------------------------------
1 | import lunr from "@generated/lunr.client";
2 | lunr.tokenizer.separator = /[\s\-/]+/;
3 |
4 | class LunrSearchAdapter {
5 | constructor(searchDocs, searchIndex) {
6 | this.searchDocs = searchDocs;
7 | this.lunrIndex = lunr.Index.load(searchIndex);
8 | }
9 |
10 | getLunrResult(input) {
11 | return this.lunrIndex.query(function (query) {
12 | const tokens = lunr.tokenizer(input);
13 | query.term(tokens, {
14 | boost: 10
15 | });
16 | query.term(tokens, {
17 | wildcard: lunr.Query.wildcard.TRAILING
18 | });
19 | });
20 | }
21 |
22 | getHit(doc, formattedTitle, formattedContent) {
23 | return {
24 | hierarchy: {
25 | lvl0: doc.pageTitle || doc.title,
26 | lvl1: doc.type === 0 ? null : doc.title
27 | },
28 | url: doc.url,
29 | _snippetResult: formattedContent ? {
30 | content: {
31 | value: formattedContent,
32 | matchLevel: "full"
33 | }
34 | } : null,
35 | _highlightResult: {
36 | hierarchy: {
37 | lvl0: {
38 | value: doc.type === 0 ? formattedTitle || doc.title : doc.pageTitle,
39 | },
40 | lvl1:
41 | doc.type === 0
42 | ? null
43 | : {
44 | value: formattedTitle || doc.title
45 | }
46 | }
47 | }
48 | };
49 | }
50 | getTitleHit(doc, position, length) {
51 | const start = position[0];
52 | const end = position[0] + length;
53 | let formattedTitle = doc.title.substring(0, start) + '' + doc.title.substring(start, end) + '' + doc.title.substring(end, doc.title.length);
54 | return this.getHit(doc, formattedTitle)
55 | }
56 |
57 | getKeywordHit(doc, position, length) {
58 | const start = position[0];
59 | const end = position[0] + length;
60 | let formattedTitle = doc.title + ' Keywords: ' + doc.keywords.substring(0, start) + '' + doc.keywords.substring(start, end) + '' + doc.keywords.substring(end, doc.keywords.length) + ''
61 | return this.getHit(doc, formattedTitle)
62 | }
63 |
64 | getContentHit(doc, position) {
65 | const start = position[0];
66 | const end = position[0] + position[1];
67 | let previewStart = start;
68 | let previewEnd = end;
69 | let ellipsesBefore = true;
70 | let ellipsesAfter = true;
71 | for (let k = 0; k < 3; k++) {
72 | const nextSpace = doc.content.lastIndexOf(' ', previewStart - 2);
73 | const nextDot = doc.content.lastIndexOf('.', previewStart - 2);
74 | if ((nextDot > 0) && (nextDot > nextSpace)) {
75 | previewStart = nextDot + 1;
76 | ellipsesBefore = false;
77 | break;
78 | }
79 | if (nextSpace < 0) {
80 | previewStart = 0;
81 | ellipsesBefore = false;
82 | break;
83 | }
84 | previewStart = nextSpace + 1;
85 | }
86 | for (let k = 0; k < 10; k++) {
87 | const nextSpace = doc.content.indexOf(' ', previewEnd + 1);
88 | const nextDot = doc.content.indexOf('.', previewEnd + 1);
89 | if ((nextDot > 0) && (nextDot < nextSpace)) {
90 | previewEnd = nextDot;
91 | ellipsesAfter = false;
92 | break;
93 | }
94 | if (nextSpace < 0) {
95 | previewEnd = doc.content.length;
96 | ellipsesAfter = false;
97 | break;
98 | }
99 | previewEnd = nextSpace;
100 | }
101 | let preview = doc.content.substring(previewStart, start);
102 | if (ellipsesBefore) {
103 | preview = '... ' + preview;
104 | }
105 | preview += '' + doc.content.substring(start, end) + '';
106 | preview += doc.content.substring(end, previewEnd);
107 | if (ellipsesAfter) {
108 | preview += ' ...';
109 | }
110 | return this.getHit(doc, null, preview);
111 |
112 | }
113 | search(input) {
114 | return new Promise((resolve, rej) => {
115 | const results = this.getLunrResult(input);
116 | const hits = [];
117 | results.length > 5 && (results.length = 5);
118 | this.titleHitsRes = []
119 | this.contentHitsRes = []
120 | results.forEach(result => {
121 | const doc = this.searchDocs[result.ref];
122 | const { metadata } = result.matchData;
123 | for (let i in metadata) {
124 | if (metadata[i].title) {
125 | if (!this.titleHitsRes.includes(result.ref)) {
126 | const position = metadata[i].title.position[0]
127 | hits.push(this.getTitleHit(doc, position, input.length));
128 | this.titleHitsRes.push(result.ref);
129 | }
130 | } else if (metadata[i].content) {
131 | const position = metadata[i].content.position[0]
132 | hits.push(this.getContentHit(doc, position))
133 | } else if (metadata[i].keywords) {
134 | const position = metadata[i].keywords.position[0]
135 | hits.push(this.getKeywordHit(doc, position, input.length));
136 | this.titleHitsRes.push(result.ref);
137 | }
138 | }
139 | });
140 | hits.length > 5 && (hits.length = 5);
141 | resolve(hits);
142 | });
143 | }
144 | }
145 |
146 | export default LunrSearchAdapter;
147 |
--------------------------------------------------------------------------------
/src/theme/SearchBar/lunar-search.js:
--------------------------------------------------------------------------------
1 | import lunr from "@generated/lunr.client";
2 | lunr.tokenizer.separator = /[\s\-/]+/;
3 |
4 | class LunrSearchAdapter {
5 | constructor(searchDocs, searchIndex, baseUrl = '/') {
6 | this.searchDocs = searchDocs;
7 | this.lunrIndex = lunr.Index.load(searchIndex);
8 | this.baseUrl = baseUrl;
9 | }
10 |
11 | getLunrResult(input) {
12 | return this.lunrIndex.query(function (query) {
13 | const tokens = lunr.tokenizer(input);
14 | query.term(tokens, {
15 | boost: 10
16 | });
17 | query.term(tokens, {
18 | wildcard: lunr.Query.wildcard.TRAILING
19 | });
20 | });
21 | }
22 |
23 | getHit(doc, formattedTitle, formattedContent) {
24 | return {
25 | hierarchy: {
26 | lvl0: doc.pageTitle || doc.title,
27 | lvl1: doc.type === 0 ? null : doc.title
28 | },
29 | url: doc.url,
30 | _snippetResult: formattedContent ? {
31 | content: {
32 | value: formattedContent,
33 | matchLevel: "full"
34 | }
35 | } : null,
36 | _highlightResult: {
37 | hierarchy: {
38 | lvl0: {
39 | value: doc.type === 0 ? formattedTitle || doc.title : doc.pageTitle,
40 | },
41 | lvl1:
42 | doc.type === 0
43 | ? null
44 | : {
45 | value: formattedTitle || doc.title
46 | }
47 | }
48 | }
49 | };
50 | }
51 | getTitleHit(doc, position, length) {
52 | const start = position[0];
53 | const end = position[0] + length;
54 | let formattedTitle = doc.title.substring(0, start) + '' + doc.title.substring(start, end) + '' + doc.title.substring(end, doc.title.length);
55 | return this.getHit(doc, formattedTitle)
56 | }
57 |
58 | getKeywordHit(doc, position, length) {
59 | const start = position[0];
60 | const end = position[0] + length;
61 | let formattedTitle = doc.title + ' Keywords: ' + doc.keywords.substring(0, start) + '' + doc.keywords.substring(start, end) + '' + doc.keywords.substring(end, doc.keywords.length) + ''
62 | return this.getHit(doc, formattedTitle)
63 | }
64 |
65 | getContentHit(doc, position) {
66 | const start = position[0];
67 | const end = position[0] + position[1];
68 | let previewStart = start;
69 | let previewEnd = end;
70 | let ellipsesBefore = true;
71 | let ellipsesAfter = true;
72 | for (let k = 0; k < 3; k++) {
73 | const nextSpace = doc.content.lastIndexOf(' ', previewStart - 2);
74 | const nextDot = doc.content.lastIndexOf('.', previewStart - 2);
75 | if ((nextDot > 0) && (nextDot > nextSpace)) {
76 | previewStart = nextDot + 1;
77 | ellipsesBefore = false;
78 | break;
79 | }
80 | if (nextSpace < 0) {
81 | previewStart = 0;
82 | ellipsesBefore = false;
83 | break;
84 | }
85 | previewStart = nextSpace + 1;
86 | }
87 | for (let k = 0; k < 10; k++) {
88 | const nextSpace = doc.content.indexOf(' ', previewEnd + 1);
89 | const nextDot = doc.content.indexOf('.', previewEnd + 1);
90 | if ((nextDot > 0) && (nextDot < nextSpace)) {
91 | previewEnd = nextDot;
92 | ellipsesAfter = false;
93 | break;
94 | }
95 | if (nextSpace < 0) {
96 | previewEnd = doc.content.length;
97 | ellipsesAfter = false;
98 | break;
99 | }
100 | previewEnd = nextSpace;
101 | }
102 | let preview = doc.content.substring(previewStart, start);
103 | if (ellipsesBefore) {
104 | preview = '... ' + preview;
105 | }
106 | preview += '' + doc.content.substring(start, end) + '';
107 | preview += doc.content.substring(end, previewEnd);
108 | if (ellipsesAfter) {
109 | preview += ' ...';
110 | }
111 | return this.getHit(doc, null, preview);
112 |
113 | }
114 | search(input) {
115 | return new Promise((resolve, rej) => {
116 | const results = this.getLunrResult(input);
117 | const hits = [];
118 | results.length > 5 && (results.length = 5);
119 | this.titleHitsRes = []
120 | this.contentHitsRes = []
121 | results.forEach(result => {
122 | const doc = this.searchDocs[result.ref];
123 | const { metadata } = result.matchData;
124 | for (let i in metadata) {
125 | if (metadata[i].title) {
126 | if (!this.titleHitsRes.includes(result.ref)) {
127 | const position = metadata[i].title.position[0]
128 | hits.push(this.getTitleHit(doc, position, input.length));
129 | this.titleHitsRes.push(result.ref);
130 | }
131 | } else if (metadata[i].content) {
132 | const position = metadata[i].content.position[0]
133 | hits.push(this.getContentHit(doc, position))
134 | } else if (metadata[i].keywords) {
135 | const position = metadata[i].keywords.position[0]
136 | hits.push(this.getKeywordHit(doc, position, input.length));
137 | this.titleHitsRes.push(result.ref);
138 | }
139 | }
140 | });
141 | hits.length > 5 && (hits.length = 5);
142 | resolve(hits);
143 | });
144 | }
145 | }
146 |
147 | export default LunrSearchAdapter;
148 |
--------------------------------------------------------------------------------
/versioned_docs/version-0.0.1/profession/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 | import Tabs from '@theme/Tabs';
5 | import TabItem from '@theme/TabItem';
6 |
7 | # Описание
8 | Роль ***Delivery Manager*** – **data-driven менеджер изменений**, который отвечает за **выстраивание End-to-End процесса поставки ценности**: сокращает Time to market и увеличивает прогнозируемость. Там где нет запроса на сквозной процесс – отвечает за всю доступную цепочку.
9 |
10 | Некорректно сравнивать со сложившимся на рынке профессиями, такими как Service Delivery Manager, Scrum Master или Agile Coach, так как по отдельности они не характеризуют роль Delivery Manager.
11 |
12 | ## Зачем нужен
13 | * Помочь организации в условиях увеличивающейся сложности (IT-систем, продуктов, коммуникаций, процессов) ускорить поставку продуктов на рынок
14 | * Также помочь организации не терять гибкость и эффективность при масштабировании: пересобирать и улучшать процессы под рост или реструктуризацию бизнеса
15 | * Накапливать и делиться работающими практиками и опытом с организацией и её командами, сотрудниками, комьюнити
16 |
17 | ## Что делает
18 | Условно задачи Delivery Manager можно разделить на 2 группы:
19 |
20 |
21 | ```mermaid
22 | flowchart TD
23 |
24 | ```
25 |
26 |
27 |
28 |
29 |
30 | ```mermaid
31 | graph TD
32 | A(Управление изменениями процессов поставки ценностей) --> B[Выявление неудовлетворенностей]
33 | B --> C[Построение стратегии по улучшению процессов - план улучшений]
34 | C --> D[Определение сервисов продуктовых команд]
35 | D --> D1[Определение узких мест, их нивелирование]
36 | C --> E[Выстроить систему, которая будет поставлять в срок]
37 | E --> E1[Сократить распределение работ - хвост в распределении Cycle Time]
38 | E1 --> E2[Увеличить скорость работы над фичами при необходимости]
39 | C --> F[Повышение прозрачности работы]
40 | F --> F1[Визуализация работы команд]
41 | F1 --> F2[Формирование процесса сбора метрик]
42 | F2 --> F3[Организация коммуникаций между отделами, командами, бизнес-линиями]
43 | F3 --> F4[Горизонтальное масштабирование Upstream + сопровождение]
44 | F4 --> F5[Вертикальное масштабирование]
45 | ```
46 |
47 |
48 |
49 |
50 | ```mermaid
51 | graph TD
52 | A(Масштабируемость практик) --> B[Повышение зрелости команды] & C[Организация процесса обмена знаниями]
53 | B --> B1[Обучение процессу работы с изменениями лидов и рук отделов]
54 | C --> D[Выстраивание базы знаний] & E[Ассессмент работы команд]
55 | E --> E1[Консультация по лучшим практикам]
56 | ```
57 |
58 |
59 |
60 |
61 | ## Как делает
62 | Чтобы выполнять свои задачи Delivery Manager выступает в 3-х ролях.
63 |
64 | | Владелец Продукта "Производственный процесс" | Агент изменений | Коуч |
65 | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
66 | |
Работает с доставкой ценности на всём End-to-End процессе
Выстраивает вертикальные и горизонтальные партнёрские связи между всеми участниками доставки ценности
Визуализирует процессы, делая их понятными и управляемыми
Работает над улучшением метрик Discovery и Delivery, выстраивая прозрачные и измеримые отношения между продуктовыми, сервисными и бизнес-командами
Формирует понятную и прозрачную стратегию краткосрочных и долгосрочных планов развития производственных процессов с учётом целей компании
|
Управляет изменениями используя доступные практики менеджмента вовлекая людей в общее дело
Масштабирует процессы и рабочие практики для сохранения гибкости компании
Доводит команды до такого уровня осознанности, чтобы они могли самостоятельно, без помощи деливери-менеджера, улучшать процессы
Работает с метриками и принимая решения используя data-driven подход
|
Взращивает в людях проактивную позицию участия в жизни компании и её процессов
Инвестирует в обучение и развитие людей через практики коучинга, менторинга, фасилитации, супервизии и помощи им в составлении индивидуальных планов развития и развития процессов
Накапливает знания и практики, адаптирует их под контекст и делиться ими с коллегами
Помогает командам решать конфликты и быстрее приходить к наилучшим решениям, используя инструменты фасилитации
|
67 |
--------------------------------------------------------------------------------
/docs/roadmap/professional-growth/communications/oratory.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_class_name: roadmap
3 | ---
4 | # Ораторское искусство
5 | **Ора́торское иску́сство** (_красноре́чие, искусство красноречия_) — искусство публичного выступления с целью убеждения. Ораторское искусство — это гармоничное сочетание риторики, приёмов актёрского мастерства (подача) и психологических техник.
6 |
7 | Цель ораторского искусства — изложение оратором его позиции перед оппонентом или аудиторией, защита собственной точки зрения. Этой цели он достигает, используя подготовленную речь и технику ораторского мастерства.
8 |
9 | Ораторское искусство и свойства ораторской речи изучает наука риторика.
10 |
11 | Ораторская речь — это вид монологической речи, употребляемый в ситуации, когда говорящий обращается к многочисленной аудитории с целью убеждения. Речь оратора имеет свои особенности построения композиции и стиля, а также особое соотношение языковых и неязыковых средств общения. Можно выделить несколько основных качеств, которые отличают ораторскую речь от других видов речи.
12 |
13 | Оратор обращается к народу с ораторской речью — не только донести до слушателя информацию, но и получить ответную реакцию в виде заинтересованности (убедить) или каких-либо действий (побудить). Такая речь всегда имеет агитационный характер. Для этого оратор должен быть воодушевлён предметом своей речи и вкладывать в неё то, что он считает нужным и полезным для его слушателей.
14 | Для того, чтобы речь тронула и заинтересовала аудиторию, важен авторитет говорящего или его особый психологический настрой. Чтобы побудить слушателей совершить какие-то действия, оратор, прежде всего, сам делает усилие, требующее особого напряжения воли. Это усилие чувствуется в речи оратора и передаётся его слушателям, побуждая их к действиям.
15 |
16 | ## Важность понимания и владения ораторским искусством
17 | Для проведения изменений, диагностики проблематики, проведения встреч, презентаций своих идей командам/руководителям/топ-менеджменту критически важно обладать хорошими навыками ораторского мастерства. С развитым ораторским мастерством Деливери менеджер звучит убедительно, его идеи реже поддаются критике, он быстрее располагает собеседников к себе, позволяет быстрее договариваться и выстраивать крепкие партнёрские отношения. Навык чётко и ясно доносить свои мысли критически важен в данной роли.
18 |
19 | ## Дополнительные материалы
20 | * Тинькофф Апгрейд. Подготовка к публичным выступлениям https://upgrade.tcsbank.ru/showcase/itmain/itdetail/143
21 | * Тинькофф Образование. Структура публичных выступлений https://edu.tcsbank.ru/course/6721556654195552678/program
22 | * Тинькофф Образование. Публичные выступление по методу Максима Евдокимова https://edu.tinkoff.ru/my-activities/courses/stream/6094898b-962f-4ac9-a5c1-60129b449c3b/program
23 | * Тинькофф Образование. Базовые принципы дизайна презентации https://edu.tcsbank.ru/course/6852299295526239821/program
24 | * Курсы в Московской школы ораторов и публичного мастерства (онлайн + офлайн) https://orator.moscow/
25 | * Школа менеджеров Яндекса. Мария Кутузова про презентации http://youtube.com/watch?v=S0r0fMJa9eA
26 | * Шаблоны презентаций, гайды и шрифт https://share.tinkoff.ru/s/oXPZHnwNBYReo9t – хозяин папки на T-Share Mikhail Martynov
27 |
28 | ## Лайфкахи
29 | 1. Можно использовать чёрные слайды-заглушки, чтобы переключить внимание со слайда на себя. Это хорошо, если надо что-то сказать аудитории, сфокусировать их внимание на себе
30 | 2. Смотреть выступления по теме до начала подготовки своего выступления. Воровать их слова или приёмы по теме – это не зашквар, если копировать с доработками
31 | 3. Заготовить 10+ фактов о себе которые перебирать в зависимости от аудитории
32 | 4. Никому не интересны пустые факты о том, кто ты, почему ты эксперт - хорошо начать с неожиданного вовлечения и потом подвести к своей экспертизе и знакомству
33 | 5. Комментировать ответ аудитории мастхев иначе ты ее можешь потерять
34 | 6. Вопросы из аудитории надо проговаривать вслух, если у говорящего нет микрофона, так как может идти запись и на ней будет слышно только ответ спикера. Очень раздражает, когда смотришь запись и слышишь ответ, но не понимаешь какой был вопрос
35 | 7. Создавать план динамики можно через карту того, что слушатель делает в каждый момент времени
36 | 8. Чтобы вовлечь аудиторию нужно не просто давать ей информацию, а заставлять думать вместе с тобой
37 | 9. Надо переводить телефон в авиарежим, чтобы при звонке не было параллельного звонка на MacBook, если идёт шаринг экрана
38 | 10. Важно максимально детально проработать вступление, так как если вступление прошло хорошо, то дальше выступление идёт как-то получше. Больше энергии и уверенности
39 | 11. Если ты выступаешь не один, то круто делать отсылки на коллег, которые выступали до тебя или будут после с анонсом времени и тем их выступлений. Это делает выступление более живым
40 | 12. В конце выступления можно оставить контакты и голосом проговорить про бесплатный консалтинг всем, кто напишет в личку или поставит встречу с понятной повесткой. Это может добавить ценности выступлению и повысить авторитет спикеру. Главное проговорить размер и количество таких бесплатных консультаций.
41 | 13. Читать вслух художествунную литературу и активно артикулировать верхней и нижней частью лица (верхняя и нижняя челюсть).
42 | 14. Перед выступлением стоит “прогреться” – рассказать кому ни будь историю, просто поговорить. Провести мини-презентацию.
43 |
44 | ## Упражнения для развития речи
45 | 1. Проговаривать вслух всё что видишь. Описывать объекты и людей.
46 | 2. Запись выступления на диктофон или видео. Потом просматривать и прослушивать, подмечать в каких ситуация начинается тупняк, запинание, экание и акание. Искать повторяющиеся паттерны.
47 | 3. Пересказ прочитанного текста. Исключать дробность речи. Не ставить точку после каждого слова, а лаконично говорить всё предложения повышая интонацию вверх к концу предложения или мысли.
48 | 4. Проговаривание звуков и букв с перестановкой. Перебираем: ИЭАОУЫИ. Произносим: КПТ(И); БГД(И); РТМ(И); КЧК(И); ВЗЛ(И)ВРТУ
49 | 5. Скороговорки – Сложные скороговорки для дикции
50 |
51 | ### Артикуляционная гимнастика
52 | Все упражнения делать не менее 10 повторений.
53 | Время разминки до 30 минут.
54 |
55 | #### Для губ, верхний и нижней части лица
56 | Расслабление через упражнение "Лошадка" – как лошадь выдуваешь воздух с расслабленными губами.
57 |
58 | 1. Уточка – улыбка – уточка – улыбка
59 | 2. Втягивание щёк
60 | 3. Попеременный оскал верхних и нижних зубов
61 | 4. Массаж губ прикусывая их нижними и верхними зубами
62 | 5. Вращение языком 360 градусов пытаясь достать самые крайние уголки рта – растягиваем мышцы языка
63 |
64 | Примеры этих и других упражнений на YouTube http://youtube.com/watch?v=XI1UwLLoKVA
65 |
66 | #### Для языка
67 | Расслабление через упражнение "Колокольчик"
68 |
69 | 1. Круговые движения языком перед и по зубам, по щекам
70 | 2. Язык попеременно упирается в щёки
71 | 3. Круговые движения за зубами
72 | 4. Тяги к ушам, подбородку, носу
73 | 5. Массаж языка зубами
74 | 6. Делаем язык в форме лопаты – трубочки
75 |
76 | Примеры этих и других упражнений на YouTube http://youtube.com/watch?v=wvTdKivTKZA
77 |
78 | ### Упражнения для голоса
79 | * Руки пульверизаторы и на Ф словно распыляем воду в оранжерее. Делать так не более 1 минуты, чтобы насытить организм кислородом
80 | * Плавно протянуть все гласные на одном выдохе
81 | * Петь Ом
82 | * Проговаривать одно и то же предложение, но в разных интонациях
83 |
84 | Примеры этих и других упражнений на YouTube http://youtube.com/watch?v=vzWgLkG-aXs
85 |
--------------------------------------------------------------------------------
/docs/profession/onboarding/01-to-team.md:
--------------------------------------------------------------------------------
1 | # В команду
2 | Онбординг в команду помогает Деливери менеджеру быстрее понять контекст в котором находится выбранная команда, ее процессы, текущее состояние, потенциальные проблемы и точки роста.
3 |
4 | Одна из основных целей Деливери менеджера – построить End-to-End процесс поставки ценности. Реализация этой цели состоит из [двух групп задач](/profession/about.md#что-делает): управление изменениями и масштабируемость практик. План онбординга задает необходимый темп выполнения таких задач и помогает понять последовательность реализации. Все пункты выполнять не обязательно, план нужен только для самоконтроля.
5 |
6 | :::info Примечание
7 | Как настроить рабочее место, получить доступ в основные системы, познакомиться со структурой компании рассказали в [онбординге в компанию](to-company).
8 | :::
9 |
10 | | Период | Задачи | Результат |
11 | |------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
12 | | Первый день |
Познакомиться с командой
Собрать основные артефакты работы команды
|
Команда познакомилась со своим Деливери менеджером, узнала чем он занимается, его зону ответственности и чем он может быть им полезен
Деливери-менеджер изучил состав команды и роли каждого участника
Получены или ожидаются основные артефакты работы команды — доски, вики-страницы команды и прочее
|
13 | | Первая неделя |
Проанализировать как построена работа в команде
Встретиться с руководством и основными заказчиками
|
Есть понимание процесса команды по созданию ценности от начала до конца
Собрана обратная связь руководства и основных заказчиков по работе команды
Выявлены и сгруппированы первичные проблемы в работе команды
|
14 | | Первый месяц |
Провести встречи по командной рефлексии
Составить бэклог проблем, их причин и последствий, если над ними не работать
Оценить сложность решения проблем
Приоритизировать бэклог проблем и гипотез по улучшению процессов
Сформировать план изменений на основе выявленных проблем и презентовать его команде
Запустить первые изменения
|
Проведена минимум одна встреча по командой рефлексии, на который были выявлены проблемы и запланированы действия по их решению
Составлен и согласован с командой план изменений с основными практиками управления работой — визуализация, ограничения незавершенной работы, управление потоком, формулирование явных правил, циклы обратной связи, согласие на изменения
Запущены первые запланированные изменения
|
15 | | Первые три месяца |
Вовлечь участников изменений в процесс, поработать с сопротивлением
Запустить базовые принципы и практики: визуализация, прозрачность, управление потоком
|
Есть ограничения незавершенной работы – WIP-лимиты
Появились циклы обратной связи — ретро, ревью поставки, демо и другие
Доска команды и ее рабочие пространства отражают действительность
Изменения, запланированные и начатые пару месяцев назад, положительно повлияли на метрики доставки или бизнес-метрики
|
16 | | Первые полгода |
Завершить большинство запланированных изменений
Планомерно настраивать в команде самостоятельную работу по постоянному эволюционному развитию
Поощрять и поддерживать инициативу, лидерство и всё больше активностей проводить силами команды, а не своими
|
Выросла предсказуемость в работе команды
Сведены к минимуму «длинные хвосты» в работе команды, которые можно увидеть на на графике распределения задач на спектральной диаграмме
Запущены процессы постоянной рефлексия и сбора обратной связи в команде, поощряется инициатива и лидерство.
|
17 | | Первый год |
Довести команду до необходимого уровня зрелости и постараться перейти в консультационный режим, сконцентрировавшись на других более приоритетных задачах
Собрать информацию об End-to-End процессе поставки ценности продукта, даже если он выходит за рамках команды/отдела/управления
Составить и начать реализовывать план изменений нацеленный на весь End-to-End процесс
|
Уровень зрелости команды соответствует требованиям пользователей их сервиса
Команда самостоятельно и системно проводит изменения, работает с метриками, взаимодействует с пользователями сервиса
Есть понимание всей цепочки создания ценности продукта
Составлен, согласован с руководителем и реализуется план по изменениями во всем End-to-End процессе
|
18 |
--------------------------------------------------------------------------------
/docs/profession/onboarding/02-to-company.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: В компанию
3 | ---
4 |
5 | # В компанию, отдел или бизнес-юнит
6 | Онбординг в компанию нужен чтобы понять как выглядит организационная и управленческая структура, какие есть корпоративные нормы и правила. Возможно есть ежемесячные, ежеквартальные или годовые активности, о которых Деливери менеджеру будет полезно знать и принимать в них участие.
7 |
8 | **Бизнес-юнитом** может быть вся компания компания, продукт целиком, какая-то его функциональность, отдел или команда.
9 |
10 | **В первые дни в новой компании нужно:**
11 | * Получить необходимое оборудование, если компания его предоставляет.
12 | * Получить доступы к ресурсам первой необходимости: корпоративный портал, локальная сеть, система ведения задач (Jira, Kaiten, Redmine, Asana и другие), пространства ведения документации (Confluence, MS Teams, Notion и другие).
13 | * Пройти обязательные курсы техники пожарной и информационной безопасности, подписать все необходимые документы.
14 |
15 | | Период | Задачи | Результат |
16 | |------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
17 | | Первые две недели |
Познакомиться с руководителем и узнать его ожидания от работы Деливери менеджера
Установить плагины и расширения для анализа процессов: Jira Helper, Jira Flow Companion, Scope360° и другие
|
Определены задачи, которые могут стоять перед деливери-менеджером: какие проблемы сейчас есть? почему это проблема? кто и как пробовал решать и почему не получилось? как хочется, чтобы проблемы решились? кто заказчик изменений? какие ожидание по срокам и почему они именно такие? и другие вводные
Есть все инструменты и доступы до систем, чтобы самостоятельно провести анализ
|
18 | | Первый месяц |
Узнать цели компании на ближайший год или несколько лет
Узнать цели своего руководителя, его заместителей, команд с которым вам предстоит работать и их тимлидов
Узнать цели бизнеса и ИТ на ближайших год или несколько лет
Проанализировать запрос руководителя
Провести собственный анализ текущего состояния компании и процессов в ней
Изучить документацию продуктов и систем с которыми предстоит работать
Разобраться в постоянных встречах в компании и попросить коллег добавить вас на них: ежемесячное общее планирование, ежеквартальные отчеты о бизнес-метриках и проделанной работе с планам на следующий квартал, стратегические сессии и т.д.
Составить свой план работы над процессами на ближайшие 3 месяца на основе запроса от руководителя, целей компании и бизнеса, результатов своего анализа текущего состояния компании и процессов
|
Понимание целей компании, своего руководителя, вашего бизнес-юнита и тех, кто с ним связан или может влиять на него
Понимание запроса на изменение: результаты аналитики процессов и работы с документацией, выводы из интервью с участниками процессов, собственное видение картины и общие выводы по текущей ситуации и ее контекста
Участие во всех важных встречах, которые имеют отношение к запросу или могут быть полезны для общего понимания происходящего
Составлен и согласован руководителем план черновика на квартал по проведению изменений с опорой на результаты анализа, цели компании, руководителя и других людей задействованных в изменении
|
19 | | Первые три месяца |
Подготовить презентацию о проделанной работе за три месяца: какие проблемы обнаружились, какие улучшения были сделаны или начаты, метрики, достигнутые результаты, планы на будущее
Подготовить бэклог точек роста или проблем в компании, командах, процессах, которые были замечены за первые три месяца
|
Проведена презентация работ, результатов и планов на будущее
Получена обратная связь, есть понимание точек роста и что нужно учесть при дальнейшей работе над процессами и их проблемами
Сформирован публичный бэклог будущих задач
|
20 |
--------------------------------------------------------------------------------
/src/theme/SearchBar/lib/utils.js:
--------------------------------------------------------------------------------
1 | import $ from "autocomplete.js/zepto";
2 |
3 | const utils = {
4 | /*
5 | * Move the content of an object key one level higher.
6 | * eg.
7 | * {
8 | * name: 'My name',
9 | * hierarchy: {
10 | * lvl0: 'Foo',
11 | * lvl1: 'Bar'
12 | * }
13 | * }
14 | * Will be converted to
15 | * {
16 | * name: 'My name',
17 | * lvl0: 'Foo',
18 | * lvl1: 'Bar'
19 | * }
20 | * @param {Object} object Main object
21 | * @param {String} property Main object key to move up
22 | * @return {Object}
23 | * @throws Error when key is not an attribute of Object or is not an object itself
24 | */
25 | mergeKeyWithParent(object, property) {
26 | if (object[property] === undefined) {
27 | return object;
28 | }
29 | if (typeof object[property] !== 'object') {
30 | return object;
31 | }
32 | const newObject = $.extend({}, object, object[property]);
33 | delete newObject[property];
34 | return newObject;
35 | },
36 | /*
37 | * Group all objects of a collection by the value of the specified attribute
38 | * If the attribute is a string, use the lowercase form.
39 | *
40 | * eg.
41 | * groupBy([
42 | * {name: 'Tim', category: 'dev'},
43 | * {name: 'Vincent', category: 'dev'},
44 | * {name: 'Ben', category: 'sales'},
45 | * {name: 'Jeremy', category: 'sales'},
46 | * {name: 'AlexS', category: 'dev'},
47 | * {name: 'AlexK', category: 'sales'}
48 | * ], 'category');
49 | * =>
50 | * {
51 | * 'devs': [
52 | * {name: 'Tim', category: 'dev'},
53 | * {name: 'Vincent', category: 'dev'},
54 | * {name: 'AlexS', category: 'dev'}
55 | * ],
56 | * 'sales': [
57 | * {name: 'Ben', category: 'sales'},
58 | * {name: 'Jeremy', category: 'sales'},
59 | * {name: 'AlexK', category: 'sales'}
60 | * ]
61 | * }
62 | * @param {array} collection Array of objects to group
63 | * @param {String} property The attribute on which apply the grouping
64 | * @return {array}
65 | * @throws Error when one of the element does not have the specified property
66 | */
67 | groupBy(collection, property) {
68 | const newCollection = {};
69 | $.each(collection, (index, item) => {
70 | if (item[property] === undefined) {
71 | throw new Error(`[groupBy]: Object has no key ${property}`);
72 | }
73 | let key = item[property];
74 | if (typeof key === 'string') {
75 | key = key.toLowerCase();
76 | }
77 | // fix #171 the given data type of docsearch hits might be conflict with the properties of the native Object,
78 | // such as the constructor, so we need to do this check.
79 | if (!Object.prototype.hasOwnProperty.call(newCollection, key)) {
80 | newCollection[key] = [];
81 | }
82 | newCollection[key].push(item);
83 | });
84 | return newCollection;
85 | },
86 | /*
87 | * Return an array of all the values of the specified object
88 | * eg.
89 | * values({
90 | * foo: 42,
91 | * bar: true,
92 | * baz: 'yep'
93 | * })
94 | * =>
95 | * [42, true, yep]
96 | * @param {object} object Object to extract values from
97 | * @return {array}
98 | */
99 | values(object) {
100 | return Object.keys(object).map(key => object[key]);
101 | },
102 | /*
103 | * Flattens an array
104 | * eg.
105 | * flatten([1, 2, [3, 4], [5, 6]])
106 | * =>
107 | * [1, 2, 3, 4, 5, 6]
108 | * @param {array} array Array to flatten
109 | * @return {array}
110 | */
111 | flatten(array) {
112 | const results = [];
113 | array.forEach(value => {
114 | if (!Array.isArray(value)) {
115 | results.push(value);
116 | return;
117 | }
118 | value.forEach(subvalue => {
119 | results.push(subvalue);
120 | });
121 | });
122 | return results;
123 | },
124 | /*
125 | * Flatten all values of an object into an array, marking each first element of
126 | * each group with a specific flag
127 | * eg.
128 | * flattenAndFlagFirst({
129 | * 'devs': [
130 | * {name: 'Tim', category: 'dev'},
131 | * {name: 'Vincent', category: 'dev'},
132 | * {name: 'AlexS', category: 'dev'}
133 | * ],
134 | * 'sales': [
135 | * {name: 'Ben', category: 'sales'},
136 | * {name: 'Jeremy', category: 'sales'},
137 | * {name: 'AlexK', category: 'sales'}
138 | * ]
139 | * , 'isTop');
140 | * =>
141 | * [
142 | * {name: 'Tim', category: 'dev', isTop: true},
143 | * {name: 'Vincent', category: 'dev', isTop: false},
144 | * {name: 'AlexS', category: 'dev', isTop: false},
145 | * {name: 'Ben', category: 'sales', isTop: true},
146 | * {name: 'Jeremy', category: 'sales', isTop: false},
147 | * {name: 'AlexK', category: 'sales', isTop: false}
148 | * ]
149 | * @param {object} object Object to flatten
150 | * @param {string} flag Flag to set to true on first element of each group
151 | * @return {array}
152 | */
153 | flattenAndFlagFirst(object, flag) {
154 | const values = this.values(object).map(collection =>
155 | collection.map((item, index) => {
156 | // eslint-disable-next-line no-param-reassign
157 | item[flag] = index === 0;
158 | return item;
159 | })
160 | );
161 | return this.flatten(values);
162 | },
163 | /*
164 | * Removes all empty strings, null, false and undefined elements array
165 | * eg.
166 | * compact([42, false, null, undefined, '', [], 'foo']);
167 | * =>
168 | * [42, [], 'foo']
169 | * @param {array} array Array to compact
170 | * @return {array}
171 | */
172 | compact(array) {
173 | const results = [];
174 | array.forEach(value => {
175 | if (!value) {
176 | return;
177 | }
178 | results.push(value);
179 | });
180 | return results;
181 | },
182 | /*
183 | * Returns the highlighted value of the specified key in the specified object.
184 | * If no highlighted value is available, will return the key value directly
185 | * eg.
186 | * getHighlightedValue({
187 | * _highlightResult: {
188 | * text: {
189 | * value: 'foo'
190 | * }
191 | * },
192 | * text: 'foo'
193 | * }, 'text');
194 | * =>
195 | * 'foo'
196 | * @param {object} object Hit object returned by the Algolia API
197 | * @param {string} property Object key to look for
198 | * @return {string}
199 | **/
200 | getHighlightedValue(object, property) {
201 | if (
202 | object._highlightResult &&
203 | object._highlightResult.hierarchy_camel &&
204 | object._highlightResult.hierarchy_camel[property] &&
205 | object._highlightResult.hierarchy_camel[property].matchLevel &&
206 | object._highlightResult.hierarchy_camel[property].matchLevel !== 'none' &&
207 | object._highlightResult.hierarchy_camel[property].value
208 | ) {
209 | return object._highlightResult.hierarchy_camel[property].value;
210 | }
211 | if (
212 | object._highlightResult &&
213 | object._highlightResult &&
214 | object._highlightResult[property] &&
215 | object._highlightResult[property].value
216 | ) {
217 | return object._highlightResult[property].value;
218 | }
219 | return object[property];
220 | },
221 | /*
222 | * Returns the snippeted value of the specified key in the specified object.
223 | * If no highlighted value is available, will return the key value directly.
224 | * Will add starting and ending ellipsis (…) if we detect that a sentence is
225 | * incomplete
226 | * eg.
227 | * getSnippetedValue({
228 | * _snippetResult: {
229 | * text: {
230 | * value: 'This is an unfinished sentence'
231 | * }
232 | * },
233 | * text: 'This is an unfinished sentence'
234 | * }, 'text');
235 | * =>
236 | * 'This is an unfinished sentence…'
237 | * @param {object} object Hit object returned by the Algolia API
238 | * @param {string} property Object key to look for
239 | * @return {string}
240 | **/
241 | getSnippetedValue(object, property) {
242 | if (
243 | !object._snippetResult ||
244 | !object._snippetResult[property] ||
245 | !object._snippetResult[property].value
246 | ) {
247 | return object[property];
248 | }
249 | let snippet = object._snippetResult[property].value;
250 |
251 | if (snippet[0] !== snippet[0].toUpperCase()) {
252 | snippet = `…${snippet}`;
253 | }
254 | if (['.', '!', '?'].indexOf(snippet[snippet.length - 1]) === -1) {
255 | snippet = `${snippet}…`;
256 | }
257 | return snippet;
258 | },
259 | /*
260 | * Deep clone an object.
261 | * Note: This will not clone functions and dates
262 | * @param {object} object Object to clone
263 | * @return {object}
264 | */
265 | deepClone(object) {
266 | return JSON.parse(JSON.stringify(object));
267 | },
268 | };
269 |
270 | export default utils;
271 |
--------------------------------------------------------------------------------
/src/theme/SearchBar/utils.js:
--------------------------------------------------------------------------------
1 | import $ from "autocomplete.js/zepto";
2 |
3 | const utils = {
4 | /*
5 | * Move the content of an object key one level higher.
6 | * eg.
7 | * {
8 | * name: 'My name',
9 | * hierarchy: {
10 | * lvl0: 'Foo',
11 | * lvl1: 'Bar'
12 | * }
13 | * }
14 | * Will be converted to
15 | * {
16 | * name: 'My name',
17 | * lvl0: 'Foo',
18 | * lvl1: 'Bar'
19 | * }
20 | * @param {Object} object Main object
21 | * @param {String} property Main object key to move up
22 | * @return {Object}
23 | * @throws Error when key is not an attribute of Object or is not an object itself
24 | */
25 | mergeKeyWithParent(object, property) {
26 | if (object[property] === undefined) {
27 | return object;
28 | }
29 | if (typeof object[property] !== 'object') {
30 | return object;
31 | }
32 | const newObject = $.extend({}, object, object[property]);
33 | delete newObject[property];
34 | return newObject;
35 | },
36 | /*
37 | * Group all objects of a collection by the value of the specified attribute
38 | * If the attribute is a string, use the lowercase form.
39 | *
40 | * eg.
41 | * groupBy([
42 | * {name: 'Tim', category: 'dev'},
43 | * {name: 'Vincent', category: 'dev'},
44 | * {name: 'Ben', category: 'sales'},
45 | * {name: 'Jeremy', category: 'sales'},
46 | * {name: 'AlexS', category: 'dev'},
47 | * {name: 'AlexK', category: 'sales'}
48 | * ], 'category');
49 | * =>
50 | * {
51 | * 'devs': [
52 | * {name: 'Tim', category: 'dev'},
53 | * {name: 'Vincent', category: 'dev'},
54 | * {name: 'AlexS', category: 'dev'}
55 | * ],
56 | * 'sales': [
57 | * {name: 'Ben', category: 'sales'},
58 | * {name: 'Jeremy', category: 'sales'},
59 | * {name: 'AlexK', category: 'sales'}
60 | * ]
61 | * }
62 | * @param {array} collection Array of objects to group
63 | * @param {String} property The attribute on which apply the grouping
64 | * @return {array}
65 | * @throws Error when one of the element does not have the specified property
66 | */
67 | groupBy(collection, property) {
68 | const newCollection = {};
69 | $.each(collection, (index, item) => {
70 | if (item[property] === undefined) {
71 | throw new Error(`[groupBy]: Object has no key ${property}`);
72 | }
73 | let key = item[property];
74 | if (typeof key === 'string') {
75 | key = key.toLowerCase();
76 | }
77 | // fix #171 the given data type of docsearch hits might be conflict with the properties of the native Object,
78 | // such as the constructor, so we need to do this check.
79 | if (!Object.prototype.hasOwnProperty.call(newCollection, key)) {
80 | newCollection[key] = [];
81 | }
82 | newCollection[key].push(item);
83 | });
84 | return newCollection;
85 | },
86 | /*
87 | * Return an array of all the values of the specified object
88 | * eg.
89 | * values({
90 | * foo: 42,
91 | * bar: true,
92 | * baz: 'yep'
93 | * })
94 | * =>
95 | * [42, true, yep]
96 | * @param {object} object Object to extract values from
97 | * @return {array}
98 | */
99 | values(object) {
100 | return Object.keys(object).map(key => object[key]);
101 | },
102 | /*
103 | * Flattens an array
104 | * eg.
105 | * flatten([1, 2, [3, 4], [5, 6]])
106 | * =>
107 | * [1, 2, 3, 4, 5, 6]
108 | * @param {array} array Array to flatten
109 | * @return {array}
110 | */
111 | flatten(array) {
112 | const results = [];
113 | array.forEach(value => {
114 | if (!Array.isArray(value)) {
115 | results.push(value);
116 | return;
117 | }
118 | value.forEach(subvalue => {
119 | results.push(subvalue);
120 | });
121 | });
122 | return results;
123 | },
124 | /*
125 | * Flatten all values of an object into an array, marking each first element of
126 | * each group with a specific flag
127 | * eg.
128 | * flattenAndFlagFirst({
129 | * 'devs': [
130 | * {name: 'Tim', category: 'dev'},
131 | * {name: 'Vincent', category: 'dev'},
132 | * {name: 'AlexS', category: 'dev'}
133 | * ],
134 | * 'sales': [
135 | * {name: 'Ben', category: 'sales'},
136 | * {name: 'Jeremy', category: 'sales'},
137 | * {name: 'AlexK', category: 'sales'}
138 | * ]
139 | * , 'isTop');
140 | * =>
141 | * [
142 | * {name: 'Tim', category: 'dev', isTop: true},
143 | * {name: 'Vincent', category: 'dev', isTop: false},
144 | * {name: 'AlexS', category: 'dev', isTop: false},
145 | * {name: 'Ben', category: 'sales', isTop: true},
146 | * {name: 'Jeremy', category: 'sales', isTop: false},
147 | * {name: 'AlexK', category: 'sales', isTop: false}
148 | * ]
149 | * @param {object} object Object to flatten
150 | * @param {string} flag Flag to set to true on first element of each group
151 | * @return {array}
152 | */
153 | flattenAndFlagFirst(object, flag) {
154 | const values = this.values(object).map(collection =>
155 | collection.map((item, index) => {
156 | // eslint-disable-next-line no-param-reassign
157 | item[flag] = index === 0;
158 | return item;
159 | })
160 | );
161 | return this.flatten(values);
162 | },
163 | /*
164 | * Removes all empty strings, null, false and undefined elements array
165 | * eg.
166 | * compact([42, false, null, undefined, '', [], 'foo']);
167 | * =>
168 | * [42, [], 'foo']
169 | * @param {array} array Array to compact
170 | * @return {array}
171 | */
172 | compact(array) {
173 | const results = [];
174 | array.forEach(value => {
175 | if (!value) {
176 | return;
177 | }
178 | results.push(value);
179 | });
180 | return results;
181 | },
182 | /*
183 | * Returns the highlighted value of the specified key in the specified object.
184 | * If no highlighted value is available, will return the key value directly
185 | * eg.
186 | * getHighlightedValue({
187 | * _highlightResult: {
188 | * text: {
189 | * value: 'foo'
190 | * }
191 | * },
192 | * text: 'foo'
193 | * }, 'text');
194 | * =>
195 | * 'foo'
196 | * @param {object} object Hit object returned by the Algolia API
197 | * @param {string} property Object key to look for
198 | * @return {string}
199 | **/
200 | getHighlightedValue(object, property) {
201 | if (
202 | object._highlightResult &&
203 | object._highlightResult.hierarchy_camel &&
204 | object._highlightResult.hierarchy_camel[property] &&
205 | object._highlightResult.hierarchy_camel[property].matchLevel &&
206 | object._highlightResult.hierarchy_camel[property].matchLevel !== 'none' &&
207 | object._highlightResult.hierarchy_camel[property].value
208 | ) {
209 | return object._highlightResult.hierarchy_camel[property].value;
210 | }
211 | if (
212 | object._highlightResult &&
213 | object._highlightResult &&
214 | object._highlightResult[property] &&
215 | object._highlightResult[property].value
216 | ) {
217 | return object._highlightResult[property].value;
218 | }
219 | return object[property];
220 | },
221 | /*
222 | * Returns the snippeted value of the specified key in the specified object.
223 | * If no highlighted value is available, will return the key value directly.
224 | * Will add starting and ending ellipsis (…) if we detect that a sentence is
225 | * incomplete
226 | * eg.
227 | * getSnippetedValue({
228 | * _snippetResult: {
229 | * text: {
230 | * value: 'This is an unfinished sentence'
231 | * }
232 | * },
233 | * text: 'This is an unfinished sentence'
234 | * }, 'text');
235 | * =>
236 | * 'This is an unfinished sentence…'
237 | * @param {object} object Hit object returned by the Algolia API
238 | * @param {string} property Object key to look for
239 | * @return {string}
240 | **/
241 | getSnippetedValue(object, property) {
242 | if (
243 | !object._snippetResult ||
244 | !object._snippetResult[property] ||
245 | !object._snippetResult[property].value
246 | ) {
247 | return object[property];
248 | }
249 | let snippet = object._snippetResult[property].value;
250 |
251 | if (snippet[0] !== snippet[0].toUpperCase()) {
252 | snippet = `…${snippet}`;
253 | }
254 | if (['.', '!', '?'].indexOf(snippet[snippet.length - 1]) === -1) {
255 | snippet = `${snippet}…`;
256 | }
257 | return snippet;
258 | },
259 | /*
260 | * Deep clone an object.
261 | * Note: This will not clone functions and dates
262 | * @param {object} object Object to clone
263 | * @return {object}
264 | */
265 | deepClone(object) {
266 | return JSON.parse(JSON.stringify(object));
267 | },
268 | };
269 |
270 | export default utils;
271 |
--------------------------------------------------------------------------------
/docs/profession/competencies/grades.md:
--------------------------------------------------------------------------------
1 | ---
2 | hide_table_of_contents: true
3 | ---
4 |
5 | # Грейды
6 |
7 | ## Описание
8 |
9 |
10 | | Грейд | Чем занимается |
11 | |---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
12 | | Junior |
Выстраивает и обеспечивает прозрачность процессов в одной или двух небольших командах
Есть поддержка ментора или руководителя
|
13 | | Junior+ | Улучшает процессы в средних командах, самостоятельно решает до 80% внутрикомандных проблем и до 50% вопросов кросс-командных взаимодействий |
14 | | Middle |
Самостоятельно улучшает процессы и решает проблемы в нескольких средних или сложных командах на основе данных и в синхронизации со стратегией управления
Поддерживает лидерство и инициирует перемены, связанные с кросс-командными взаимодействиями
|
15 | | Middle+ |
Работает в больших или сложных командах, постоянно общается с бизнесом
Решает внутренние и кросс-командные проблемы
Выстраивает полностью delivery-процессы и частично процессы End-to-End и discovery
|
16 | | Senior | Улучшает сквозную доставку больших или сложных продуктов во всей области, до которой возможно дотянуться |
17 | | Lead |
Улучшает прогнозируемость и скорость поставки для всех продуктов и платформ по запросу бизнеса или СТО
Работает с группами команды своего направления и других
|
18 |
19 |
20 |
21 | ## Матрица
22 |
23 | :::caution
24 | Каждый следующий грейд включает в себя компетенции предыдущего
25 | :::
26 |
27 | | Грейд | Junior | Junior+ | Middle | Middle+ | Senior | Lead |
28 | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
29 | | **Ответственность** Количество людей, за чей результат или процесс работы ответственность на Деливери менеджере |
≈ 20+
Работа внутри команды разработки ex: 1-2 команды разработки |
≈ 35+
+ зависимости между командами ex: 3-4 команды разработки |
≈ 55+
+ бизнес ex: отдел разработки + менеджеры продукта / заказчики |
≈ 75+
+ зависимые команды ex: платформенные сервисы и запросы поддержки |
≈ 90+
Реализовывает решения через приемников (тимлиды / руководители отделов /групп) ex: End-to-End поставка ценности |
≈ 150+
Реализовывает решения через приемников (тимлиды / руководители отделов /групп) и других деливери-менеджеров ex: редизайн бизнес-линии |
30 | | **Сложность/объем** 1 - сравнительно независимая команда разработки 2 - синхронизация команд (ИТ и бизнес) по зависимостям или команд внутри платформы 3 - консультирование или коучинг 4 - редизайн команд | 1 | 1 → 2 | 2 | 2 → 3 | 3, 4 | 4 |
31 | | **Зона влияния (рекомендаций)** Количество людей, на работу которых оказывают влияние предложенные и реализованные Деливери менеджером решения |
≈ 30+
Команды-разработки |
≈ 50+
+ бизнес и заказчики |
≈ 70+
+ бизнес и заказчики |
≈ 100+
+ платформы и поддержка |
≈ 140+
+ заинтересованные подразделения |
Не ограничена
+ руководители высшего звена |
32 | | **Числовые метрики** На какие метрики решения Деливери менеджера оказывают влияние |
Cycle Time
Lead Time
Throughput
+ метрики, отражающие результат работы с bottleneck | → Middle |
Flow Efficiency
Time to Build (поставка с учетом аналитики)
| → Senior | End-to-End Time to Market | Доп. запрос от СТО / СРО |
33 | | **Результат** Кто дает обратную связь по итогам работы |
Team Leads
Команд-разработки
Product Owner / технолог
+ ментор (ex: Senior/ Lead DM) |
Team Leads
Команд-разработки
Product Owner / технолог
+ ментор (ex: Senior/ Lead DM) |
Product Owner / технолог
Lead РО
Lead DM
+ руководитель отдела |
Lead DM
Lead РО
Lead IT
|
Lead DM
Lead РО
Lead IT
|
CTO
CPO
DM Team/Community
|
34 | | **Самостоятельность** | Получает задачу с шагами Нужна поддержка в генерации решения | Получает задачу с шагами Нужна валидация решения | Получает цель (высокая степень конкретики) Нужна валидация решения | Получает запрос (низкая степень конкретики) Нужна валидация решения | Получает запрос (низкая степень конкретики) Синхронизация решения со стратегией | Получает запрос (низкая степень конкретики) Формирует стратегию |
35 | | **Обучение** | Практики уровня команды и Delivery-цикла Продажа локальных изменений Фасилитация небольших групп | → Middle | Кросс-командные практики + синхронизация с бизнесом (практики Discovery) | Фасилитация больших групп | Фреймворки масштабирования Продажа длительных или многоступенчатых изменений | Организационный (ре-)дизайн |
36 | | **Комьюнити** | Чем выше грейд, тем больше участия и ответственности за проекты внутри профессии |
37 |
--------------------------------------------------------------------------------
/versioned_docs/version-0.0.1/profession/competencies/grades.md:
--------------------------------------------------------------------------------
1 | ---
2 | hide_table_of_contents: true
3 | ---
4 |
5 | # Грейды
6 |
7 | ## Описание
8 |
9 |
10 | | Грейд | Ответственность за результат |
11 | |---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
12 | | Junior |
Я выстраиваю и обеспечиваю в 1-2 небольших командах прозрачность и обязательные гигиенические процессы
У меня есть регулярная поддержка в виде моего руководителя/ментора
|
13 | | Junior+ | Я улучшаю процессы в средних командах, самостоятельно решаю ±80% внутрикомандных проблем, и ±50% в кросс-командных взаимодействиях |
14 | | Middle |
Я самостоятельно улучшаю процессы и решаю проблемы в нескольких в средних/сложных командах на основе данных и в синхронизации со стратегией управления
Поддерживаю лидерство и инициирую перемены связанные с выходом за рамки команды
|
15 | | Middle+ |
Я работаю в больших/сложных командах, под большим давлением бизнеса
Решаю как внутренние, так и кросс-командные проблемы. Выстроил не только Delivery-процессы, но частично и Discovery и End-to-end процессы
|
16 | | Senior | Для продукта/value stream бизнеса я улучшаю сквозную доставку больших/сложных продуктов во всей области до которой возможно дотянуться |
17 | | Lead | По запросу бизнеса/CTO, используя широкий менеджерский опыт, я улучшаю прогнозируемость поставки, увеличиваю ее скорость для всех продуктов/платформ работая с группами команды, в т.ч. не относящиеся к моему управлению |
18 |
19 |
20 |
21 | ## Матрица
22 |
23 | :::caution
24 | Каждый последующий грейд включает в себя наличие компетенций и навыков для работы с задачами/масштабами предыдущих грейдов
25 | :::
26 |
27 | | Грейд | Junior (только переход) | Junior+ (найм с этого уровня) | Middle | Middle+ | Senior | Lead |
28 | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
29 | | **Ответственность** кол-во людей, за чей результат / процесс работы, по предложенным и реализованным DM-м решениям, DM ответственен | ≈ 20+ решения внутри команды-разработки ex: 1-2 команды разработки | ≈ 35+ + зависимости между командами ex: 3-4 команды разработки | ≈ 55+ + технологи ex: отдел разработки + технологи / заказчики | ≈ 75+ + зависимые команды ex: + платформенные сервисы / + запросы поддержки | ≈ 90+ реализовывает решения через приемников (тимлиды / руководители отделов /групп) ex: end-to-end поставка ценности | ≈ 150+ реализовывает решения через приемников (тимлиды / руководители отделов /групп) и других DM-в ex: редизайн бизнес-линии |
30 | | **Сложность/объем** 1 - сравнительно независимая команда разработки 2 - синхронизация команд (ИТ и Бизнес) по зависимостям или команд внутри платформы 3 - консультирование или коучинг 4 - редизайн команд | 1 | 1 → 2 | 2 | 2 → 3 | 3, 4 | 4 |
31 | | **Зона влияния (рекомендаций)** кол-во людей, на результат / процесс работы которых предложенные и реализованные DM-м решения оказывают влияние | ≈ 30+ команды-разработки | ≈ 50+ + бизнес / заказчики | ≈ 70+ + бизнес / заказчики | ≈ 100+ + платформы / + поддержка | ≈ 140+ + заинтересованные подразделения | Не ограничена + руководители высшего звена |
32 | | **Числовые метрики** на какие метрики решения DM-а оказывают влияние |
Cycle Time
Lead Time
Throughput
+ метрики, отражающие результат работы с bottleneck
| → Middle |
Flow Efficiency
Time to Build (поставка с учетом аналитики)
| → Senior | End-to-End Time to Market | Доп. запрос от СТО / СРО |
33 | | **Результат** кто дает обратную связь по итогам работы |