Русский
Русский
English
Статистика
Реклама

График

Перевод Как создавать интерактивные линейные графики на Pandas и Altair

21.05.2021 20:16:58 | Автор: admin

Линейный график является неотъемлемой частью анализа данных. Он даёт нам представление о том, как величина изменяется при последовательных измерениях. В случае работы с временными рядами важность линейных графиков становится решающей. Тренд [направление], сезонность и корреляция вот некоторые характеристики, которые можно наблюдать на аккуратно сгенерированных линейных графиках. В этой статье мы будем создавать интерактивные линейные графики с помощью двух библиотек Python Pandas и Altair.

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


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

Давайте начнём с генерации данных. Типичный пример использования линейных графиков это анализ цен на акции. Один из самых простых способов получения данных о ценах на акции предоставляет библиотека pandas-datareader. Сначала нам нужно импортировать её вместе с уже установленной в Google Colab Pandas.

import pandas as pdfrom pandas_datareader import data

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

start = '2020-1-1'end = '2020-12-31'source = 'yahoo'

Необходимо знать ещё одну деталь название акции:

apple = data.DataReader("AAPL", start=start ,end=end, data_source=source).reset_index()[["Date", "Close"]]ibm = data.DataReader("IBM", start=start ,end=end, data_source=source).reset_index()[["Date", "Close"]]microsoft = data.DataReader("MSFT", start=start ,end=end, data_source=source).reset_index()[["Date", "Close"]]

Сейчас у нас есть цены на акции Apple, IBM и Microsoft в 2020 году. Лучше располагать их в одном фрейме данных. Перед объединением нам нужно добавить колонку, которая указывает, к какой акции относится та или иная цена. Следующий блок кода добавляет соответствующие столбцы, а затем объединяет фреймы данных с помощью функции concat:

apple["Stock"] = "apple"ibm["Stock"] = "ibm"microsoft["Stock"] = "msft"stocks["Month"] = stocks.Date.dt.monthstocks = pd.concat([apple, ibm, microsoft])

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

Altair

Altair это библиотека статистической визуализации на Python. Как мы увидим в примерах, её синтаксис чист и прост для понимания. Также с помощью Altair очень просто создавать интерактивные визуализации. Я кратко объясню структуру Altair, а затем сосредоточусь на создании интерактивных линейных графиков. Если вы новичок в Altair, вот туториал по Altair в виде серии из 4 частей:

Список частей

Вот простой линейный график без какой-либо интерактивности:

alt.Chart(stocks).mark_line().encode(   x="Date",   y="Close",   color="Stock").properties(   height=300, width=500)

Основная структура начинается с объекта диаграммы верхнего уровня. Данные могут иметь формат фрейма данных Pandas, или можно написать строку с URL, указывающим на файл JSON или CSV. Затем указывается тип визуализации (mark_circle, mark_line и так далее).

Функция encode указывает Altair, что нужно построить в заданном фрейме данных. Таким образом, всё, что мы пишем в функции encode, должно быть связано с данными. Различать акции мы будем при помощи параметра color, который аналогичен параметру hue в Seaborn. Наконец, с помощью функции properties задаются определённые свойства графика.

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

selection = alt.selection_multi(fields=["Stock"], bind="legend")alt.Chart(stocks).mark_line().encode(   x="Date",   y="Close",   color="Stock",   opacity=alt.condition(selection, alt.value(1), alt.value(0.1))).properties(   height=300, width=500).add_selection(   selection)

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

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

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

hover = alt.selection(   type="single", on="mouseover", fields=["Stock"], nearest=True)

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

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

# line plotlineplot = alt.Chart(stocks).mark_line().encode(   x="Date:T",   y="Close:Q",   color="Stock:N",)# nearest pointpoint = lineplot.mark_circle().encode(   opacity=alt.value(0)).add_selection(hover)# highlightsingleline = lineplot.mark_line().encode(   size=alt.condition(~hover, alt.value(0.5), alt.value(3)))

Теперь, объединив второй и третий графики, можно создать интерактивный линейный график:

point + singleline

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

Заключение

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

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

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Телеграмм-бот для анализа опционов

07.06.2021 10:04:02 | Автор: admin

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

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

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

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

Запоминание состояния бота между вебхуками

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

$id_init = file_get_contents('php://input');$id=sbs($id_init, '"from":{"id":',',"is_bot":'); //в эту переменную записываем уникальный номер пользователяfunction sbs ($str,$m1,$m2){ //из строки str возвращает подстроку между двумя метками-словами m1 и m2$p1=strpos($str,$m1)+strlen($m1); //длина слова-метки слева$p2=strpos($str,$m2);return substr($str,$p1,$p2-$p1);}

Для каждого пользователя строится следующая структура данных:

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

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

  3. файлы для построения графика

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

Построение графика для анализа портфеля

График строится по состоянию на момент экспирации опционов, что дает возможность упрощенно представить график каждого инструмента в виде y=kx+b,

где y это размер прибыли/убытка на момент экспирации

х стоимость базового актива

После записи данных в портфель создаются файлы с расширением png с помощью библиотеки GD в несколько этапов:

1) определение Х-координат всех точек перелома на графике (очевидно, что сумма всех линий даст ломанную кривую)

2) определение масштаба изображения (средняя всех координат точек перелома по оси Х, максимальное отклонение от среднего, и максимальный размер по оси Y)

3) создание ассоциативного массива точек, в котором координата X это ключ, координата Y величина, для всей цифровой полуплоскости:

$typ опцион колл, пут или фьючерс

$q количество ( отрицательное продажа)

$cena цена приобретения ценной бумаги

$strike страйк для опционов

$x0 начальная координата по оси Х

$sx масштаб по оси Х

function pparr($typ, $q, $cena, $strike,$x0,$sx){ //функция выдает одномерный массив - координаты x=>y точек по //типу цб, направлению (покупка продажа), цене приобретения и страйку (для опционов)  if ($q<0) { $q=-$q; $drct='-'; }  else $drct='+'; $a=array(); $b=array(); $delta=$sx; //расстояние между точками равно масштабу $scalx for ($i=0;$i<740;$i++){ //кол во точек 740 определено заранее $xkk=$x0+$delta*$i; //значение по оси X if ($typ=='fut') { if ($drct=='+') $a[$xkk]=($xkk-$cena)*$q; else $a[$xkk]=(-$xkk+$cena)*$q; } if ($typ=='call'){ if ($drct=='+') { if ($xkk<=$strike) $a[$xkk]=-$cena*$q; else $a[$xkk]=$q*($xkk-$strike-$cena);} else { if ($xkk<=$strike) $a[$xkk]=$q*$cena; else $a[$xkk]=(-$xkk+$strike+$cena)*$q;}  } if ($typ=='put'){ if ($drct=='+') { if ($xkk<=$strike) $a[$xkk]=(-$xkk+$strike-$cena)*$q; else $a[$xkk]=-$q*$cena;} else { if ($xkk<=$strike) $a[$xkk]=($xkk-$strike+$cena)*$q; else $a[$xkk]=$cena*$q;}  } $b[(string)$xkk]=(string)$a[$xkk]; }return $b; };

4) создание файлов изображений, при этом одновременно строится график для каждой строки из портфеля ( зеленый цвет) и результирующий для портфеля ( красный цвет). Кроме того, know-how заключается в том, что одновременно строится еще четыре изображения для увеличения/уменьшения изображения по оси Х и по оси Y. За счет этого достигается эффект работы он-лайн с клавишами X+,X-,Y+,Y- под графиком. Таким образом, для каждого пользователя в каждый момент времени существует пять файлов изображения.

Анализ рисков опционного портфеля

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

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

Гарантийное обеспечение для фьючерсов считается по формуле, которая предложена самой Московской биржей:

ГО=БГО+(Цена-Расчетная_Цена)*БП;

где Расчетная_Цена определяется по результатам клиринга и практически равна цене базового актива на момент клиринга, определяется в пунктах

БП стоимость пункта в рублях, зависит, в частности, от курса доллара,

БГО базовое гарантийное обеспечение, определяется биржей, может произвольно увеличиваться, например, перед праздниками

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

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

Вот как выглядит покупка колла в нашем боте:

Запись в портфеле покупки опциона "колл" страйк 75000 дата экспирации 03.06.2021 по цене 25 Запись в портфеле покупки опциона "колл" страйк 75000 дата экспирации 03.06.2021 по цене 25 График зависимости прибыли/убытка по купленному опциону "колл" в зависимости от стоимости базового актива на дату экспирации График зависимости прибыли/убытка по купленному опциону "колл" в зависимости от стоимости базового актива на дату экспирации

Гарантийное обеспечение=23.

Что нам показывает график: если стоимость базового актива ( в данном случае стоимость фьючерса на курс рубля к доллару) [вечером] 03.06.2021 будет 75000 и ниже, то наш убыток составит 23 . При повышении этой стоимости до 75023 мы выйдем в безубыток, при дальнейшем росте получим прибыль.

Что мы имеем с точки зрения риска: не при каких обстоятельствах наш убыток не превысит сумму 23. Следовательно, наш опцион совершенно не похож на фьючерс, и в расчете ГО мы можем записать просто сумму 23.

Покупка пута примерно та же картина.

Продажа пута.

Запись в портфеле продажи опциона "пут" страйк 72750 по цене 44 с датой экспирации 03.06.2021Запись в портфеле продажи опциона "пут" страйк 72750 по цене 44 с датой экспирации 03.06.2021График зависимости прибыли/убытка по проданному опциону "пут" от стоимости базового актива на дату экспирацииГрафик зависимости прибыли/убытка по проданному опциону "пут" от стоимости базового актива на дату экспирации

Гарантийное обеспечение= 5436.

Можно убедиться, что при стоимости базового актива выше 72750 мы имеем прибыль 44. При снижении стоимости БА до 72706 мы выходим в ноль. При дальнейшем падении стоимости БА наш убыток НИЧЕМ НЕ ОГРАНИЧИВАЕТСЯ.

С точки зрения рисков это фьючерс, купленный по цене 72706. Подставляем это число в формулу ГО для фьючерса и получаем ГО для опциона! Этот ГО достаточно велик (5436), но может превратится в прибыль в течение нескольких дней.

Стоит ли овчинка выделки? Если при условных затратах сегодня 5436 мы получим через несколько дней 44? Мне кажется, риск очень велик. С другой стороны, курс рубля к доллару был таким примерно 3 месяца назад.

С продажей колла будет аналогичная ситуация.

А если одновременно продать пут и кол?

Запись в портфеле продажи опциона "пут" страйк 72750 и продажи опциона "колл" страйк 75000Запись в портфеле продажи опциона "пут" страйк 72750 и продажи опциона "колл" страйк 75000График зависимости прибыли/убытка по портфелю от стоимости базового актива на дату экспирации График зависимости прибыли/убытка по портфелю от стоимости базового актива на дату экспирации

Гарантийное обеспечение не изменилось!

С точки зрения риска понятно почему может реализоваться только один из сценариев либо по фьючерсу, купленному по примерно по 72700 (левая нога) либо по фьючерсу проданному по 75190 ( правая нога). Из них выбираем вариант

с наибольшим ГО , оно и будет мерилом риска.

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

Интерфейс телеграмм-бота

На экране отображаются следующие группы данных:

  • подробная инструкция по работе с ботом

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

  • таблица Портфель, отображающая состав портфеля, сделанная с помощью интерфейса телеграмм ( можно редактировать)

  • значение гарантийного обеспечения

  • таблица, дублирующая состав портфеля, построенная как изображение формата png, которую можно копировать и сохранять

  • нижняя клавиатура, которую можно скрывать, с кнопками: Добавить позицию в портфель, Анализ портфеля с помощью графика, Обновить котировки

Таблица Портфель создана с помощью InlineKeyboard.

При нажатии на клавиши в этой таблице происходят следующие действия:

  • клавиша в столбце К-во редактирует количество ценных бумаг, соответствующее строке, в которой нажата клавиша

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

  • клавишей Х можно удалить строку.

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

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

Заключение

В телеграмм-боте реализовано запоминание портфеля ценных бумаг для каждого пользователя. Под ценными бумагами понимаются опционы и фьючерсы, базовым активом для которых являются: курс рубля к доллару (Si), стоимость нефти брент (BR), а также индекс РТС (RI). Это самые высоколиквидные деривативы на московской бирже.

В телеграмм-бот заложен алгоритм подсчета гарантийного обеспечения, которое является мерой риска.

С помощью телеграмм-бота можно анализировать опционный портфель на графике прибылей/убытков (P/L график).

Протестировать телеграмм-бота можно по ссылке t.me/@test09062020bot. Или попробовать найти в телеграмме по названию опционный портфель.

Подробнее..

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

27.11.2020 16:12:57 | Автор: admin

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

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

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

Кошечка одного из максилектовцев расстроенаКошечка одного из максилектовцев расстроена

Каждая секунда на счету

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

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

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

Каждый день в течение многих месяцев отчеты по всему коллективу демонстрировали плюс-минус восемь часов работы. Подвох заметили случайно. У одного из сотрудников трекер намерил 24 часа работы за сутки. Понимая, что человек не мог не отлучаться с рабочего места, начали разбираться. Оказалось, что уже давно сотрудники успешно обходят трекеры, запуская эмуляторы активности и т.п. Выявленные способы были настолько хитры и изворотливы, что перенастраивать ПО уже не было смысла. Вместо этого договорились, что каждый сотрудник будет подключаться к онлайн-конференции на все 8 часов своей работы. А охранники головного офиса получили задание за ночь отсматривать записанное видео и к утру отчитываться перед руководством о том, кто работал недостаточно рьяно. Это же отличный повод назначать или отменять премию! Да и весь коллектив при деле. Перед начальством открывается целое поле для поиска точек повышения эффективности. Охранники теперь точно не отвлекаются - смотрят на задумчивые лица разработчиков. А сами сотрудники (те, кто не успел уволиться в ходе ужесточений контроля) сутки напролет придумывают, как закольцевать видео рабочего процесса, чтобы никто не заметил, что это повтор.

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

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

Найм джунов на широкую ногу

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

Первые подсчеты очень понравились финансовому отделу - не увеличивая ФОТ, можно держать в три раза больше разработчиков. Даже если работать каждый из них будет в два раза медленнее, выгода налицо! И джунов на рынке пруд пруди, почти все хотят работать удаленно. Если открыто заявить, что компания готова брать без N-летнего опыта работы, выстроится очередь. А если кто-то из нанятых юнцов потом уйдет, на смену всегда можно будет найти других. Главное успевать шарить между ними основные знания о проекте.

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

Перспективы понятны: более сильные разработчики будут работать гораздо больше. Помимо выполнения своих задач, им придется обучать армию джунов, в которой один студент сменяет другого с невообразимой скоростью. Но проект-то тоже нужно продвигать! Придется задерживаться, в то время как джуны будут радостно выключать компьютеры в 18:00. Не многие квалифицированные разработчики захотят сохранить рабочее место в такой компании. А без них процесс введения джунов в курс дела и вовсе остановится. Проекты просядут в архитектуре, потому что множество мелких решений будут принимать именно джуны. И каждую из описанных проблем удаленка только усугубит.

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

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

Безлимитный рабочий день в каждый дом!

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

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

Свобода - это прекрасно. Но стоит помнить о том, зачем мы все здесь собрались. Анархия в расписании аукнется через пару месяцев. Свободу каждый понимает по-разному. Часть коллектива продолжит работать днем, другая - перейдет на ночной график. Чтобы организовать созвон, чьей-то график придется ломать, что неизбежно скажется на его продуктивности. И достучаться до коллеги будет сложнее - самым распространенным вопросом во внутреннем чате будет: А в какие часы работает такой-то?.

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

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

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

Ни в коем случае не отвлекать!

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

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

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

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

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

Безоблачный рабочий процесс

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

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

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

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

Честно отметим, зоопарк проще возглавить (причем, с самого начала), чем с ним бороться. Бесплатные тарифы корпоративных инструментов обычно сильно ограничены. Даже платные тарифы сервисов не всегда покрывают потребности компании, поэтому приходится сочетать несколько инструментов. Но нельзя пускать это на самотек. Разработчикам не нравится отвечать в пяти мессенджерах и копировать задачи в три разные системы, так что у нас используемые инструменты - часть регламента работы.

Вне офиса никаких печенек

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

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

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

Понимая, что специалисты - это самый ценный ресурс, мы на социальной поддержке не экономим. У нас есть больничные и HR-программы для компенсации покупки техники и обустройства рабочего места, спорта, IT конференций - все как полагается.

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

P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на наши страницы в VK, FB, Instagram или Telegram-канал, чтобы узнавать обо всех наших публикациях и других новостях компании Maxilect.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru