Ew result что это
Реализация языка в версии Object Pascal облегчает программирование функций путем автоматического объявления в каждой из них локальной переменной Result. Эта переменная имеет тот же тип, что и результат функции. Присваивание значения переменной Result аналогично определению значения функции. Преимущество использования этой переменной при вычислении значения функции в том, что локальная переменная Result может стоять в правой части оператора присваивания и не вызывает при этом рекурсивного вычисления функции (в отличие от идентификатора функции, появление которого в вычисляемом выражении означает рекурсивный вызов функции).
Например, представленная выше функция вычисления суммы квадратов натурального ряда может быть преобразована следующим образом:
Заметим, что уменьшилось количество локальных переменных, необходимых для реализации алгоритма, и сам алгоритм стал короче на один оператор.
Формальные и фактические параметры
Объявление процедуры или функции содержит список формальных параметров. Каждый параметр из списка формальных параметров является локальным по отношению к процедуре или функции, для которой он объявлен. Это означает, что глобальные переменные, имена которых совпадают с именами формальных параметров, становятся недоступными для использования в процедуре или функции.
Отдельные объявления параметров в списке разделяются точкой с запятой. Синтаксис списка формальных параметров следующий:
Все формальные параметры можно разбить на две категории:
- • параметры, вызываемые подпрограммой по своему значению (т. е. параметры, которые передают в подпрограмму свое значение и не меняются в результате выполнения подпрограммы);
- • параметры, вызываемые подпрограммой по наименованию (т. е. параметры, которые становятся доступными для изменения внутри подпрограммы).
Главное различие этих двух категорий — в механизме передачи параметров в подпрограмму. При вызове параметра по значению происходит копирование памяти, занимаемой параметром, в стек и использование в дальнейшем в операторах подпрограммы локальной копии параметра. Основное значение параметра
(глобальное по отношению к подпрограмме) при этом остается без изменения. Следует отметить, что использование такого механизма при передаче, например, массивов большой длины может отрицательно влиять на быстродействие программы и заполняет стек лишней информацией.
При вызове параметра по наименованию в процедуру передается адрес памяти (глобальной по отношению к подпрограмме), в которой размещено значение параметра, и в качестве локальной переменной выступает ссылка на глобальное размещение параметра, обеспечивающая доступ к самому значению.
Объявление формального параметра обязательно содержит имя (идентификатор) параметра и, как правило, его тип, отделяющийся от имени двоеточием. Несколько однотипных параметров могут объединяться в одно объявление. При этом их имена перечисляются через запятую.
При обращении к подпрограмме формальные параметры заменяются на соответствующие по типу и категории фактические параметры вызывающей программы или подпрограммы.
Параметры-значения. Формальные параметры-значения относятся к первой из перечисленных выше категорий и действуют как переменные, локальные по отношению к процедуре или функции. Изменения формальных параметров-значений не влияют на значения соответствующих фактических параметров. Синтаксис объявления параметра-значения следующий:
Фактический параметр, соответствующий параметру-значению в операторе процедуры или вызове функции, должен быть выражением, а его значение не может быть файлового типа. Фактический параметр должен быть совместим по присваиванию с типом формального параметра-значения.
Рассмотрим пример объявления функции с параметром-значением:
Параметры-переменные. Формальные параметры-переменные относятся ко второй категории параметров и служат для модификации внутри подпрограммы значений соответствующих фактических параметров. Формальный параметр-переменная представляет фактическую переменную во время выполнения процедуры или функции, поэтому все изменения значения формального параметра отражаются на фактическом параметре. Синтаксис объявления параметров-переменных следующий:
Внутри подпрограммы любое упоминание формального параметра-переменной обеспечивает доступ к самому фактическому параметру. Тип фактического параметра должен быть тождественен типу формального параметра-переменной (это ограничение можно обойти через использование параметров-переменных без типа). Файловые типы могут передаваться только как параметры-переменные.
Рассмотрим пример объявления процедуры с параметром-переменной:
В результате применения этой процедуры к строке
S_Sentence:
будет изменено содержимое строки. Если до вызова процедуры в строке находилось значение ‘лимон, апельсин, банан’, то после вызова процедуры значение s_Sentence будет равно ‘лимон; апельсин; банан’.
Как видно из синтаксической формулы, объявление параметров-переменных может не сопровождаться указанием типа. Когда формальный параметр является параметром-переменной без типа, соответствующий фактический параметр может быть переменной любого типа, а ответственность за правильность использования параметра ложится при этом на программиста.
Внутри процедуры или функции такой параметр-переменная не имеет типа, то есть он не совместим с переменными всех других типов до тех пор, пока ему не присвоен определенный тип.
Рассмотрим пример передачи параметров-переменных без типа:
Эту функцию можно использовать для сравнения любых двух переменных, размер которых не превышает 1000 байт. Например, в программе присутствуют следующие объявления:
Тогда вызов функции:
VarEqual(Vectorl, Vector2, SizeOf(Vector))
обеспечит сравнение массивов Vectorl и Vector2;
VarEqual(Vectorl, Vector2, SizeOf(Integer)*10) —
сравнение первых 10 элементов массивов Vectorl и Vector2;
Equal(Pointl, Point2, SizeOf(TPoint)) —
сравнение переменных Pointl и Point2;
Equal(Vectorl[1], Point2.Y, SizeOf(Integer)) —
сравнение значений Vectorl [ 1 ] и Point2. Y.
Параметры-константы. Формальные параметры-константы носят пограничный характер между двумя категориями. С одной стороны, это параметры, которые передаются в подпрограмму по наименованию, т. е. ссылкой на глобальное размещение фактического параметра, но, с другой стороны, внутри подпрограммы действует запрет на изменение значения параметра. Использовать параметры-константы удобно вместо параметров-значений, когда параметр характеризуется большим размером занимаемой памяти. Параметры-константы введены в описание языка только начиная с версии Turbo Pascal 7.0. Синтаксис объявления параметров-констант следующий:
В рассмотренном ранее примере объявления функции с параметром-значением более эффективным будет использование параметра-константы, который обеспечит передачу в процедуру адреса размещения строки:
Аналогично объявлению параметров-переменных в объявлении параметров-констант может отсутствовать указание типа. В этом случае фактический параметр может быть переменной любого типа, и использование его внутри подпрограммы предполагает предварительное преобразование к конкретному типу.
Result в Паскале
Слово Result в Паскале в используется для возврата результата из функции.
Как известно, любая функция возвращает какой-то результат. Обычно в Паскале это делается так:
То есть где-то в теле функции (обычно в конце, после выполнения всего кода функции) мы пишем имя функции, используя его как идентификатор переменной, и присваиваем ей какое-то значение.
Таким образом в нашем примере функция MyFunc вернёт результат — квадрат числа Х. Если в программе мы вызовем нашу функцию, например, так:
то на экран будет выведено число 100.
Впрочем, всё это вы уже должны знать.
А вот эту фишку многие новички не знают:
Обратите внимание, что здесь вместо имени функции мы пишем слово Result.
И функция будет работать точно также. То есть возвращать результат, как это и положено функции.
Прекрасно. Но остаётся вопрос — зачем это надо?
Вот это то и есть основная тема данной статьи. Здесь я покажу вам две причины, почему и когда лучше использовать именно слово Result, а не имя функции для возврата результата.
Причина первая
Довольно часто в практике программирования приходится создавать похожие функции. При этом обычно полностью копируется исходная функция. А затем немного дорабатывается и переименовывается.
Если вы используете такой формат:
function MyFunc(x : integer) : integer; begin MyFunc := x * x; end;
То вам придётся переименовывать функцию не менее чем в двух местах. Если же вы используете слово Result, то вам надо будет переименовать функцию только в одном месте — в заголовке.
Да. Но, как говорится, дьявол кроется в мелочах. И профессионал отличается от любителя именно отношением к мелочам.
Кроме того, при копировании функции, как правило, мы переименовываем её в заголовке, но часто забываем сделать это там, где функция возвращает результат.
Компилятор, конечно, в этом случае выдаёт ошибку. Но перед этим вы тратите время на компиляцию. И время течёт буквально сквозь пальцы.
Например, в то время, как я пишу эту статью, я занимаюсь разработкой довольно сложной программы, на что у меня уже ушло 250 часов. И ещё уйдёт примерно столько же.
А теперь представьте, что с помощью разных фишек вам удастся сэкономить хотя бы одну минуту из часа и помножьте это на общее количество часов. Цифра будет немаленькой. А ведь это ваше время!
Причина вторая
Вторая причина перекликается с первой. Связана она тоже с возможной необходимостью переименования функции (это может потребоваться по разным причинам).
Представьте, что у вас есть такая функция:
И представьте, что вы решили её переименовать.
В этом случае вам придётся переименовать все идентификаторы в селекторах конструкции case.
В нашем примере их три. Но ведь может быть и 100 и более.
А если бы вы использовали слово Result, то вам опять же надо было бы переименовать только заголовок.
Конечно, в редакторе исходного кода есть такие вещи как поиск и замена, но ведь и их использование тоже отнимает время.
В общем, надеюсь, я убедил вас в полезности использования слова Result в Паскале. Применяйте эту замечательную возможность и, поверьте, это избавит вас от множества неприятностей и позволит сэкономить время на разработку программ.
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Telegram, описание и взаимодействие с основными методами API. Документация на core.telegram.org и tlgrm.ru (неофициальный, на русском).
Все запросы к API должны осуществляться по HTTPS, подойдет бесплатный сертификат «Let’s Encrypt».
Регистрация бота
Для регистрации нового бота нужно написать «папе ботов» @BotFather команду /newbot
Следующим сообщением отправляем название для бота, обязательно на конце имени должно быть слово «bot» или «_bot». Ответным сообщением получим токен:
Тут же можно настроить описание и аватарку:
/setname | Имя |
/setdescription | Краткое описание |
/setabouttext | Описание бота |
/setuserpic | Юзерпик |
Далее нужно поставить «Webhook» чтобы все сообщения из Telegram приходили на PHP скрипт ( https://example.com/bot.php ). Для этого нужно пройти по ссылке в которой подставлены полученный токен и адрес скрипта.
https://api.telegram.org/bot <token> /setWebhook?url= https://example.com/bot.php
В ответе будет
При смене токена, установку вебхука нужно повторить.
Входящие сообщения
Сообщения приходят POST-запросом, с типом application/json . Получить его в PHP можно следующим образом:
Ew result что это
Функция может возвращать результат. Для этого используется оператор return , после которого указывается возвращаемое значение:
В данном случае функция sum() принимает два параметра и возвращает их сумму. После оператора return идет возвращаемое значение. В данном случае это значение константы result .
После получения результата функции мы можем присвоить его какой-либо другой переменной или константе:
Возвращение функции из функции
Одна функция может возвращать другую функцию:
В данном случае функция menu() в зависимости от переданного в нее значения возвращает одну из трех функций или пустую функцию, которая просто возвращает число 0.
Далее мы вызываем функцию menu и получаем результат этой функции — другую функцию в константу action.
То есть здесь action будет представлять функцию, которая принимает два параметра и возвращает число. Затем черещ имя константы мы можем вызвать эту функцию и получить ее результат в константу result:
Ew result что это
Слово Result в Паскале в используется для возврата результата из функции.
Как известно, любая функция возвращает какой-то результат. Обычно в Паскале это делается так:
То есть где-то в теле функции (обычно в конце, после выполнения всего кода функции) мы пишем имя функции, используя его как идентификатор переменной, и присваиваем ей какое-то значение.
Таким образом в нашем примере функция MyFunc вернёт результат — квадрат числа Х. Если в программе мы вызовем нашу функцию, например, так:
то на экран будет выведено число 100.
Впрочем, всё это вы уже должны знать.
А вот эту фишку многие новички не знают:
Обратите внимание, что здесь вместо имени функции мы пишем слово Result.
И функция будет работать точно также. То есть возвращать результат, как это и положено функции.
Прекрасно. Но остаётся вопрос — зачем это надо?
Вот это то и есть основная тема данной статьи. Здесь я покажу вам две причины, почему и когда лучше использовать именно слово Result, а не имя функции для возврата результата.
Причина первая
Довольно часто в практике программирования приходится создавать похожие функции. При этом обычно полностью копируется исходная функция. А затем немного дорабатывается и переименовывается.
Если вы используете такой формат:
function MyFunc(x : integer) : integer; begin MyFunc := x * x; end;
То вам придётся переименовывать функцию не менее чем в двух местах. Если же вы используете слово Result, то вам надо будет переименовать функцию только в одном месте — в заголовке.
Да. Но, как говорится, дьявол кроется в мелочах. И профессионал отличается от любителя именно отношением к мелочам.
Кроме того, при копировании функции, как правило, мы переименовываем её в заголовке, но часто забываем сделать это там, где функция возвращает результат.
Компилятор, конечно, в этом случае выдаёт ошибку. Но перед этим вы тратите время на компиляцию. И время течёт буквально сквозь пальцы.
Например, в то время, как я пишу эту статью, я занимаюсь разработкой довольно сложной программы, на что у меня уже ушло 250 часов. И ещё уйдёт примерно столько же.
А теперь представьте, что с помощью разных фишек вам удастся сэкономить хотя бы одну минуту из часа и помножьте это на общее количество часов. Цифра будет немаленькой. А ведь это ваше время!
Причина вторая
Вторая причина перекликается с первой. Связана она тоже с возможной необходимостью переименования функции (это может потребоваться по разным причинам).
Представьте, что у вас есть такая функция:
И представьте, что вы решили её переименовать.
В этом случае вам придётся переименовать все идентификаторы в селекторах конструкции case.
В нашем примере их три. Но ведь может быть и 100 и более.
А если бы вы использовали слово Result, то вам опять же надо было бы переименовать только заголовок.
Конечно, в редакторе исходного кода есть такие вещи как поиск и замена, но ведь и их использование тоже отнимает время.
В общем, надеюсь, я убедил вас в полезности использования слова Result в Паскале. Применяйте эту замечательную возможность и, поверьте, это избавит вас от множества неприятностей и позволит сэкономить время на разработку программ.
result
result — I noun aftermath, conclusion, consequence, consequentia, decision, denouement, determination, development, effect, end, eventuality, exitus, finding, fructus, fruit, fruition, harvest, judgment, outcome, outgrowth, output, product, resolution,… … Law dictionary
Result — Re*sult , n. 1. A flying back; resilience. [Obs.] [1913 Webster] Sound is produced between the string and the air by the return or the result of the string. Bacon. [1913 Webster] 2. That which results; the conclusion or end to which any course or … The Collaborative International Dictionary of English
result — ► NOUN 1) a consequence, effect, or outcome. 2) an item of information or a quantity or formula obtained by experiment or calculation. 3) a final score, mark, or placing in a sporting event or examination. 4) a satisfactory or favourable outcome … English terms dictionary
result — UK US /rɪˈzʌlt/ noun [C] ● results Cf. results ● as a result of sth Cf. as a result of sth … Financial and business terms
result — • They tried hard to get a result but rain stopped play and the game ended in a draw television news broadcast, 1993. The use of the noun to mean not just an outcome but a favourable outcome, familiar now in the language of sports commentators,… … Modern English usage
result — [n] effect brought about by something aftereffect, aftermath, arrangement, backwash*, by product, close, completion, conclusion, consequence, consummation, corollary, creature, crop, decision, denouement, determination, development, emanation,… … New thesaurus
result in — index produce (manufacture) Burton s Legal Thesaurus. William C. Burton. 2006 … Law dictionary
result — consequence, *effect, upshot, aftereffect, aftermath, sequel, issue, outcome, event Analogous words: concluding or conclusion, ending or end, closing or close, termination (see corresponding verbs at CLOSE): *product, production Contrasted words … New Dictionary of Synonyms
result — [ri zult′] vi. [ME resulten < ML resultare < L, to spring back, rebound, freq. of resilire, to leap back: see RESILE] 1. to happen or issue as a consequence or effect: often with from [floods resulting from heavy rains] 2. to end as a… … English World dictionary
Ew result что это
Например, представленная выше функция вычисления суммы квадратов натурального ряда может быть преобразована следующим образом:
- • параметры, вызываемые подпрограммой по своему значению (т. е. параметры, которые передают в подпрограмму свое значение и не меняются в результате выполнения подпрограммы);
- • параметры, вызываемые подпрограммой по наименованию (т. е. параметры, которые становятся доступными для изменения внутри подпрограммы).
Рассмотрим пример объявления функции с параметром-значением:
S_Sentence:
Эту функцию можно использовать для сравнения любых двух переменных, размер которых не превышает 1000 байт. Например, в программе присутствуют следующие объявления:
VarEqual(Vectorl, Vector2, SizeOf(Vector))
VarEqual(Vectorl, Vector2, SizeOf(Integer)*10) —
Equal(Pointl, Point2, SizeOf(TPoint)) —
Equal(Vectorl[1], Point2.Y, SizeOf(Integer)) —
В рассмотренном ранее примере объявления функции с параметром-значением более эффективным будет использование параметра-константы, который обеспечит передачу в процедуру адреса размещения строки:
Ew result что это
Ew result что это
bool res=true;
for(int i=0;i<Size;i++) res&&=test_object(objs[i]);
От: | sercher |
Дата: | 10.06.03 12:24 |
Оценка: |
От: | Lorenzo_LAMAS |
Дата: | 10.06.03 12:31 |
Оценка: |
От: | Евгений Коробко |
Дата: | 10.06.03 12:35 |
Оценка: |
От: | sercher | |
Дата: | 10.06.03 12:53 | |
Оценка: | +1 -3 |
От: | Ed.ward | |
Дата: | 10.06.03 12:57 | |
Оценка: | +1 |
От: | sercher |
Дата: | 10.06.03 13:06 |
Оценка: |
От: | Аноним |
Дата: | 10.06.03 13:14 |
Оценка: |
От: | Ed.ward |
Дата: | 10.06.03 13:17 |
Оценка: |
От: | sercher |
Дата: | 10.06.03 13:29 |
Оценка: |
От: | Евгений Коробко |
Дата: | 10.06.03 13:34 |
Оценка: |
S>[ccode]
S>int result = false;
S>result &= First();
S>result |= Second();
S>result &= Third();
2 & 4 == false (0)
2 && 4 == true
От: | sercher |
Дата: | 10.06.03 13:49 |
Оценка: |
От: | Stepkh |
Дата: | 10.06.03 13:51 |
Оценка: |
От: | Евгений Коробко |
Дата: | 10.06.03 14:26 |
Оценка: |
От: | SergeyS | |
Дата: | 10.06.03 15:51 | |
Оценка: | 6 (2) |
От: | Андрей Тарасевич | |
Дата: | 10.06.03 20:40 | |
Оценка: | 7 (2) |
От: | sercher | |
Дата: | 11.06.03 05:13 | |
Оценка: | -2 |
От: | Stepkh |
Дата: | 11.06.03 05:27 |
Оценка: |
result
result — I noun aftermath, conclusion, consequence, consequentia, decision, denouement, determination, development, effect, end, eventuality, exitus, finding, fructus, fruit, fruition, harvest, judgment, outcome, outgrowth, output, product, resolution,… … Law dictionary
Result — Re*sult , n. 1. A flying back; resilience. [Obs.] [1913 Webster] Sound is produced between the string and the air by the return or the result of the string. Bacon. [1913 Webster] 2. That which results; the conclusion or end to which any course or … The Collaborative International Dictionary of English
result — ► NOUN 1) a consequence, effect, or outcome. 2) an item of information or a quantity or formula obtained by experiment or calculation. 3) a final score, mark, or placing in a sporting event or examination. 4) a satisfactory or favourable outcome … English terms dictionary
result — UK US /rɪˈzʌlt/ noun [C] ● results Cf. results ● as a result of sth Cf. as a result of sth … Financial and business terms
result — • They tried hard to get a result but rain stopped play and the game ended in a draw television news broadcast, 1993. The use of the noun to mean not just an outcome but a favourable outcome, familiar now in the language of sports commentators,… … Modern English usage
result — [n] effect brought about by something aftereffect, aftermath, arrangement, backwash*, by product, close, completion, conclusion, consequence, consummation, corollary, creature, crop, decision, denouement, determination, development, emanation,… … New thesaurus
result in — index produce (manufacture) Burton s Legal Thesaurus. William C. Burton. 2006 … Law dictionary
result — consequence, *effect, upshot, aftereffect, aftermath, sequel, issue, outcome, event Analogous words: concluding or conclusion, ending or end, closing or close, termination (see corresponding verbs at CLOSE): *product, production Contrasted words … New Dictionary of Synonyms
result — [ri zult′] vi. [ME resulten < ML resultare < L, to spring back, rebound, freq. of resilire, to leap back: see RESILE] 1. to happen or issue as a consequence or effect: often with from [floods resulting from heavy rains] 2. to end as a… … English World dictionary
Ew result что это
Переменная Result в функции
Например, представленная выше функция вычисления суммы квадратов натурального ряда может быть преобразована следующим образом:
- • параметры, вызываемые подпрограммой по своему значению (т. е. параметры, которые передают в подпрограмму свое значение и не меняются в результате выполнения подпрограммы);
- • параметры, вызываемые подпрограммой по наименованию (т. е. параметры, которые становятся доступными для изменения внутри подпрограммы).
Рассмотрим пример объявления функции с параметром-значением:
S_Sentence:
Эту функцию можно использовать для сравнения любых двух переменных, размер которых не превышает 1000 байт. Например, в программе присутствуют следующие объявления:
VarEqual(Vectorl, Vector2, SizeOf(Vector))
VarEqual(Vectorl, Vector2, SizeOf(Integer)*10) —
Equal(Pointl, Point2, SizeOf(TPoint)) —
Equal(Vectorl[1], Point2.Y, SizeOf(Integer)) —
В рассмотренном ранее примере объявления функции с параметром-значением более эффективным будет использование параметра-константы, который обеспечит передачу в процедуру адреса размещения строки:
Когда стоит добавлять в Key Results (Ключевые Результаты) балансирующие метрики?
При запуске Objectives and Key Results (OKR) нас часто спрашивают: «Когда стоит добавлять в Key Results балансирующие метрики?». В связи с этим решили написать эту короткую статью, чтобы раскрыть вопрос от А до Я.
Начнем с того, что такое балансирующий Ключевой Результат.
Балансирующий Key Result — это такой Ключевой Результат, значение которого не должно вырасти или упасть ниже определенного уровня для того, чтобы Цель могла считаться успешно выполненной.
Цель (Objective): Повысить интерес к продукту и его востребованность и получить небывалую конверсию по всей воронке продукта.
Ключевые Результаты (Key Results):
- Конверсия из регистрации в пользователя пробной версии выросла с 50% до 80%.
- Конверсия из пробной в платную версию выросла с 20% до 40%.
- CAC (Customer Acquisition Cost) не превышает 2500 рублей.
- ARPPU (Average Revenue Per Paying User) не менее 10000 рублей.
Согласитесь, легко повысить конверсию через кратное увеличение маркетингового бюджета или снижение стоимости подписки.
Есть три часто задаваемых вопроса про балансирующие метрики.
1. Почему не всегда достаточно метрик роста в OKR?
На практике, конечно, никто просто так не выделит безлимитный маркетинговый бюджет и не станет уменьшать стоимость подписки. Такого рода решения можно и нужно принимать и без OKR. Это не CHANGE-деятельность, это “операционка”. «Мы же используем OKR правильно, чтобы менять бизнес, о чём нам волноваться?» — спросите вы. Но если юнит-экономика вашего сервиса состоит из такого количества метрик, которые не укладываются в голове одного человека, или разные функции/команды работают на разных уровнях вашей воронки, то жизнь начинает играть новыми красками.
Что будет, если ваш отдел продаж придумает новые схемы и количество подписок на ваш сервис вырастет вдвое, но при этом они не попадут в профиль клиента и ровно вдвое также вырастет отток? А если кредитный департамент банка выдаст в 10 раз больше кредитов, но неплатежеспособным клиентам? В обоих случаях будет нарушен KPI другого подразделения.
Если вы видите реальный риск для одной метрики при росте вашего Ключевого Результата, с которым они находятся в прямой зависимости друг от друга, то стоит рассмотреть возможность включения такой метрики в Ключевые Результаты.
Отличной альтернативой станет постановка общих OKR для кросс-функциональной OKR-команды. Помните: хорошие Цели объединяют.
2. Почему нельзя взять и унести эту метрику в KPI?
Если метрика важна для оценки достижения общей Цели (Objective), тогда ее лучше включать в состав метрик роста (Key Results), потому что она подсвечивает риски недостижения итоговой цели. Если связь косвенная или отсутствует, то, конечно, лучше такую метрику вести в блоке KPI. Как балансировать OKR и KPI можно изучить в статье «Качели OKR и KPI — баланс развития и стабильности бизнеса».
- Команда планирует вырастить годовую выручку по стратегическому направлению.
- Для более быстрого отслеживания прогресса к цели в квартальную цель ставит количество пресейлов.
- Если пресейлы были на новый стратегический продукт, то этому показателю место в OKR:
- Вы хотите вырастить количество пресейлов, тогда это будет метрика роста (типовой Ключевой результат в OKR).
- Вы хотите поддерживать пресейлы на определенном уровне, тогда это будет балансирующая метрика.
- Команда хочет провести интенсивное маркетинговое привлечение для запуска продукта.
- Она ставит эту цель в OKR.
- Чтобы контролировать маркетинговый бюджет, команда добавляет в OKR балансирующую метрику по максимальной стоимости привлечения лида, так как это важно именно в контексте этой цели.
Такие метрики измеряются бинарно:
- 100% достижения — метрика в зеленой зоне;
- 0% — метрика не в зеленой зоне.
Важно понимать, что KPI — это тот набор показателей, за исполнение которых вы премируете ваших сотрудников, а за неисполнение депремируете. В то время, как OKR не предполагает депремирования, только так вы сможете получить по-настоящему амбициозные Цели и, как следствие, качественный рост вашего бизнеса. KPI и OKR органично дополняют друг друга. Более того, вы можете использовать один и тот же набор метрик и в KPI, и в OKR.
Пример компании Робофинанс:
OKR для разных стран формируются исходя из стратегии. Как следствие, Цели транслируются ТОП-менеджментом. Например, где-то важна прибыль, где-то новые клиенты. А в качестве Ключевых Результатов выбираются соответствующие метрики из числа наших KPI. Команды, исходя из своей амбициозности, определяют значения Ключевых Результатов и предлагают инициативы по их достижению.
Мотивация находится в прямой зависимости от финансовых показателей компании, поэтому чаще всего сотрудникам и так интересно максимально вырастить метрики, а не просто достичь значения в KPI. Ведь если прямо сейчас у нас всё хорошо, то надо подумать про состояние бизнеса завтра.
/ Анна Аверьянова, OKR-коуч Робофинанс
Если вы находитесь на старте внедрения OKR, то вам полезно будет разобраться во всех нюансах этого подхода, попробовать разные инструменты выработки OKR, составить свой план внедрения и узнать про типовые грабли на курсе «Запуск OKR».