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

Личный опыт

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

22.03.2021 20:04:15 | Автор: admin

Алексей Миловидов работал инженером в Яндекс.Метрике, и перед ним стояла непростая задача.

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

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

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


Расскажи про себя, про учебу, и про первый опыт в разработке.

Наверное, надо начинать очень издалека. В семье было еще два брата, я самый младший. Году в 90-м родители купили старшему брату бытовой компьютер БК-0010. Это была реально классная машина. Интересные игры, встроенные языки программирования: Бейсик Вильнюс 86 и Фокал (Focal, акроним от англ. formula calculator).

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

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

Брат рассказал про цикл и дал мне в руки толстую книгу под названием Язык программирования Бейсик. Уже позже папа принес домой IBM 286, и я стал что-то ковырять на нем. Мое первое достижение я написал игру и смог уговорить поиграть в нее маму. Мне было чуть меньше 10 лет.

В школе преподавали Паскаль. Писал на Паскале, потом на Делфи. Потом решил изучить С. С++ всегда был мощным, таким он и остался так было написано на диске старшего брата. Тем более я где-то услышал, что если писать игры то только на С++, другого варианта нет.

Это история была общей для всех программистов. Все учили С++, чтобы делать игры, а в итоге делают КликХаус.


Почему КликХаус настолько быстрее аналогов?

Тому есть две причины. Одна причина это просто более-менее подходящие технические решения. А вторая внимание к деталям. КликХаус был создан для обработки данных веб-аналитики в Яндекс.Метрике. Я решал задачи производительности. Что-нибудь подкрутить, как-нибудь схитрить, чтобы КликХаус работал хотя бы в 2 раза быстрее. Как только ты сделал его в 2 раза быстрее, сразу думаешь: а как еще в полтора раза быстрее сделать? А еще бы на 30%, и вообще было бы идеально! Приходится много ковыряться в деталях.

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

В такой работе должен быть инженерный кайф.

Да, он определенно присутствует. Представь, что ты наконец-то сделал решение, (может быть, впервые в жизни!), про которое ты можешь сказать: да, это лучшее решение в мире.

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

Но компаниям на самом деле наплевать, как ты перекладываешь джейсоны. Жрет оно в 5 раз больше оперативы, и бог с ним!

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

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

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

Работа над кодом, главная черта которого производительность, накладывает большие требования на тестирование этой производительности?

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

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

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

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

И как такие проблемы решаются? Ты их один решаешь, или у вас там консилиум собирается? Бывают ли тупики?

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

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

Есть и другие способы измерять производительность. Что называется, always on profiling. То есть всегда включенное профилирование на продакшене. В КликХаусе встроен семплирующий профайлер. С небольшим интервалом семплирования, всего лишь один раз в секунду, собираются стектрейсы во всех потоках. А потом по большому кластеру мы агрегируем все за неделю и делаем выводы, стал ли продукт быстрее.

Есть же дилемма чтобы написать более быстрый код, ты пишешь сильно менее читаемый код. Для вас это проблема в кодовой базе КликХауса?

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

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

В C# или Java хороший код это максимум 200 строк на файл. Ты заходишь в любой файлик, и он умещается в экран. На C++ это вообще нереально, особенно на больших проектах. У вас есть файлы на 5.000 строк?

Сейчас посмотрю мой любимый StorageReplicatedMergeTree.cpp, сколько там строк...

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

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

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

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


Зачем КликХаус в опенсорсе?

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

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

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

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

В конце 2015-го года я перешел в группу Кликхаус (ее выделили из группы Яндекс.Метрики). Мы обсуждали идею КликХауса на опенсорсе с моим руководителем, он предложил ее Михаилу Парахину (тогда он был СТО в Яндексе). Тот дал добро. Я тогда написал мотивационное письмо: какие возможности, какие риски. Мы стали пробовать, несколько месяцев ушло на подготовку, но летом 2016 года все было готово, и мы выложили КликХаус в опенсорс. Серьезных надежд не было. У меня был такой принцип: если ничего не получится, то ну и ладно, не надо будет тратить силы. Но если полетит и все будет хорошо, то у нас будет некоторое достижение. Возможность получить это достижение перекрывала риски.

Взлетела технология?

Уверенно растет. Будем стараться дальше.

Опенсорс принес какие-то плоды? Контрибьюторы со стороны приходят?

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

Слушай, вас очень ругают за документацию.

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

Почему Кликхаус так сильно отличается от других БД, что даже появилось выражение "ClickHouse way"?

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

Не страшно принимать такие решения? Привычка сообщества это тоже часть простоты инструмента.

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

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

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

Что думаешь про компании, которые строят целые бизнесы на внедрении КликХауса?

Я всецело это приветствую. Чем больше будет этот бизнес, тем лучше.

Если КликХаус вырастет на рынке, не будешь переживать, что многие решения, которые ты принял в самом начале, уже не исправить?

Ничего, придется объяснять. Такое часто бывает. Взять линукс или BSD, в котором многие вещи тянутся из допотопных времен. Например, спрашивают, почему язык csh такой ужасный? Чем разработчик думал, когда его писал? Автора нашли (хотел сказать откопали). Он ответил: у меня просто не было опыта. Какую технологию не возьми, везде есть какие-нибудь грабли.


Как тебе индустрия прямо сейчас?

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

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

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

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

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

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

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

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

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

Современные языки программирования что ты о них думаешь?

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

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

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

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

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

Чуть ли не единственное решение, которое следит за производительностью по максимуму это КликХаус. Мы действительно докапываемся, чтобы каждая штука в нашем коде работала так, как позволяет железо. А современное железо, поверьте, очень крутое! Для многих это обыденность, я и сам воспринимаю эту силу как некую магию. История человечества, вся совокупность знаний привела нас к тому, что мы имеем процессор, который обрабатывает миллиарды операций. Это нереальное достижение. Ты приезжаешь в аэропорт, видишь там авиалайнер и восторгаешься тем, как он сделан. В кармане каждый день лежит обычный телефон, и на его счет я испытываю те же самые чувства.

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


От редакции Rebrain

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

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

Подробнее..

Как я укололся китайской вакциной

18.01.2021 08:22:02 | Автор: admin

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

Cansino проводит клинические исследования в разных странах мира, включая Россию. Здесь требуется набрать 9000 добровольцев, хотя полное исследование включает 40000 человек. За участие в испытаниях ничего не платят, но выписывают страховку на случай заболевания коронавирусом в ходе исследований, т.е. в течение 12 месяцев. От самой вакцины заболеть нельзя, но в половине случаев добровольцы получают плацебо, и риск подцепить заразу в повседневной жизни остается. Вакцина тоже не дает 100% защиты, а вот насколько хорошо она защищает и не дает ли каких-то серьезных побочных эффектов и надо выяснить во время исследования.

Ad5-nCoV (Convidicea) компании Cansino Biologics это векторная вакцина, подобная Спутнику V. Ещё осенью ею привился Леонид Каганов. Потом встретился пост коллеги Александра Хохлова о его участии в исследованиях. Наконец и мне встретилась реклама в фейсбуке, и я перешел на сайт covidtrialrussia.ru. Там ответил на вопросы простенькой анкеты и оставил свой номер телефона. Несмотря на воскресный день, практически сразу перезвонили, но не с назначением на укол, а просто подтвердить, что заявка моя, а не кто-то пошутил. Мне сказали Вам позвонят в течение двух недель и назначат время.

Позвонили через три дня в среду. Пригласили на четверг, но я перенес на пятницу. Было любопытно, где, собственно, будет проводиться вакцинация китайским препаратом. Оказалось в Москве этим занимается ЦКБ РАН и знакомый логотип добавил уверенности.

В России же исследование проводится в 14 регионах:

Где именно

Москва, Санкт-Петербург, Нижегородская область, Новосибирская область, Омская область, Пермский край, Республика Татарстан, Рязанская область, Саратовская область, Свердловская область, Смоленская область, Томская область, Челябинская область, Ярославская область, Чита, Мурманская область.

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

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

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

Укол практически безболезненный хвала современной цивилизации и сверхтонким иглам. После него надо еще полчаса провести под присмотром медперсонала на случай острой аллергической реакции. В моем случае никакого эффекта не ощутилось и со спокойной душой отправился домой. Это было примерно в 17:00, в пятницу 18 декабря.

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

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

Чем сильнее колотил озноб тем больше было радости от того, что получил вакцину. Выиграл главную лотерею 2020-го!

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

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

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

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

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

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

Утром, в воскресенье, было 37,6. Голова еще болела, но было понятно, что иммунный ответ на прививку снижается. К вечеру температура опустилась до нормы, вернулся аппетит, правда вкусы стали весьма специфичны. В конце дня смог выбраться в магазин, и набрал маринованных огурцов и томатного сока. Хотелось чего-то соленого и с резким вкусом.

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

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

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

Отказников от вакцины можно понять, но теперь у нас есть выбор: если в 2020-м заболевший коронавирусом воспринимается как жертва, то в 2021-м будет сама виновата, т.к. надо было прививаться.

Ради любопытства, нашел статью в Lancet о втором этапе клинических испытаний вакцины Cansino, которая проводилась на 508 добровольцах. Их разделили на три группы: плацебо; 50% (510^10 активных частиц на 1 мг); 100% (110^11 активных частиц на 1 мг).

Оказалось, что сильная ответная реакция организма, возникала в 9% случаев в той группе, которая получала максимальную дозу второго этапа исследований, и 1% в группе половинной дозы. На третьем этапе, исследований, в которой участвую и я, судя по всему, оставили только половинную дозу. То есть побочные эффекты, сравнимые моими, возникают у одного на сотню. Для сравнения, в Спутнике V в уколе количество активных частиц колеблется между 50% и 150%.

Через две недели и месяц у испытуемых вакцины Cansino измерялся уровень антител на коронавирусный спайк-белок (RBD) и иммунных Т-клеток. Любопытно, что разница в количестве выработанных антител между получившими половину и полную дозу вакцины составило около 15%.

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

Через 28 дней я по собственной инициативе сделал количественный тест на антитела (спайковый (S) белок, IgM, качественно и IgG, количественно) в Helix и получил вот такой результат:

IgM отрицательный, значит перед уколом не болел.IgG 58,2 ОЕ/мл, а всё что больше 15 ОЕ/мл считается высоким уровнем антител.IgM отрицательный, значит перед уколом не болел.IgG 58,2 ОЕ/мл, а всё что больше 15 ОЕ/мл считается высоким уровнем антител.

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

Продолжаю наблюдения.

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

FAQ

Это вообще законно испытывать китайскую вакцину в России?
Да, Минздрав разрешил.

Почему китайскую вакцину не испытывают на китайцах?
Испытания нужны для проверки эффективности вакцины против вируса, а в Китае сейчас сложно заразиться.

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

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

Не проще ли переболеть вместо прививки?
Прививка имеет ряд преимуществ по сравнению даже с легким и бессимптомным течением болезни:

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

  • Прививка формирует более устойчивый иммунитет, с большим количеством антител.

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

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

Нужно ли прививаться всем или только группам риска?
Группы риска нужно прививать чтобы снизить для них угрозу заражения и получения тяжелых осложнений от вируса. Вне групп риска прививаться надо для остановки распространения вируса. Эпидемиологи говорят, что для победы над пандемией надо достичь 50-60% популяции с антителами, т.е. переболевших и привитых. Учитывая антипрививочную вакханалию в интернете, любой здравомыслящий привитый это ценный вклад в общую победу над вирусом.

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

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

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

Если привился можно ли теперь тусоваться и ходить без маски?
Некоторые так и делают, но не стоит забывать, что вакцина не дает 100% защиты. Я как и прежде хожу в общественных местах в маске и перчатках, т.к. это сегодняшняя норма поведения в обществе, которому еще далеко до 60%-го иммунитета.

По моей идее дизайнер Андрей Ларин @engine9 разработал символ вакцинированных, а я напечатал его и ношу значок как медаль за укол:

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

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

Будьте здоровы!

Подробнее..

Одна Kafka хорошо, а несколько лучше

26.01.2021 20:09:19 | Автор: admin

Всем привет! Меня зовут Александр, я инженер команды, отвечающей за развитие централизованныхIT-сервисов, которыми пользуются продуктовые команды вX5RetailGroup.

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

На момент написания статьи силами нашей команды развёрнуты и поддерживаются 14 продуктивных кластеров (1 централизованный и 13 у продуктовых команд) и 15 непродуктивных.

Централизованный кластер Kafka

Основной сценарий, в рамках которогоKafkaиспользует наша команда доставка логов вElasticsearch.

Немного цифр об этом кластере для начала:

  • брокеры - 5

  • топики 179

  • consumer группы 77

  • средний объем данных[1]в топиках 555.1 ГБ

[1] значение за последние 90 дней

Небольшое лирическое отступление. Многие сталкивались с ситуацией, когда в одно прекрасное утро ты видишь на графиках резкий рост количества логов, но не понимаешь, что именно стало причиной: новые команды не заезжали в сервис, новый функционал не планировался, и команды не предупреждали о том, что ожидается рост (потому что изначально команда закладывает вычислительные мощности под определенный объем данных). В результате расследования выясняется, что разработчики просто включили уровень логированияDebugилиTrace. Также, иногда, встречаются сложные системы, бизнес-логика которых требует сохранять максимально полную информацию, растущая, как снежный ком, с течением времени. Например,X5 использует в работе систему маркировки табачных изделий. В какой-то момент мы обнаружили, что размер одного сообщения с логами достигает порядка 600 кб, потому что вся информация о продукции и ее перемещении дополняется на всем пути до магазина.

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

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

Для достижения этих целей нам отлично подошло решениеApacheKafkaпо следующим причинам:

  • репликация и валидация записи.

    Kafkaимеет механизм валидации записи acknowledgements. С помощью параметраacks можно настроить, сколько брокеров (реплик) должны отправить наproducerподтверждение записи. Конечно, использованиеacks, особенно в случае, если мы хотим быть уверены, что данные реплицировались на все брокеры, добавляет небольшую задержку, которая требуется на репликацию. Но для нас важнее быть уверенными, что данные, которые мы хотим передавать дальше, будут записаны вKafka;

  • хранение сообщений в очереди.Если потребитель (в нашем случае этоLogstash, который забирает сообщения изKafka) по какой-то причине не успевает обрабатывать сообщения или просто недоступен, эти данные будут прочитаны и доставлены в конечную систему сразу после стабилизации работы потребителей;

  • хранение сообщений после прочтения.

    Kafkaне удаляет сообщения, а хранит в течение времени, которое описывается в параметрахretention. Это дает возможность восстановить данные в случае, если что-то случится с индексом вElasticsearchи данные станут недоступны;

  • партиционирование.

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

Изначально кластер был развернут натрехмашинах, но после роста числа команд мы масштабировали кластер, добавив ещё две ноды.

#

vCPU

RAM

Storage[2]

Kafka

Kafka Uptime

Zookeeper

ZK Uptime

1

4

16 ГБ

290 ГБ

+

1г1м

+

1г5м

2

4

16ГБ

270 ГБ

+

1г1м

+

1г5м

3

4

16ГБ

290 ГБ

+

1г1м

+

1г5м

4

4

16ГБ

270 ГБ

+

-

-

5

4

16ГБ

270 ГБ

+

1г1м

-

-

[2] учитывается объем, отведенный под данныеKafka

Мы видим, что последние 2 ноды были добавлены в кластер чуть более года назад, как раз в это время и произошел перезапуск сервиса на нодах 1-3, а на 4-й ноде перезапуск происходил позднее, скорее всего, проводились какие-то работы.

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

Управление доступами

Чтобы разграничить команды по топикам, мы используемKafkaSecurityManager (https://github.com/simplesteph/kafka-security-manager). Все правила доступа мы описываем в файле сACL. Выглядит это вот так:

User:projectprodwrite@srelogs,Topic,PREFIXED,projectprod,Create,Allow,User:projectprodread@srelogs,Topic,PREFIXED,projectprod,Read,Allow,User:projectprodread@srelogs,Group,PREFIXED,projectprod,All,Allow,

где:

UserCNсертификата, который используется для подключения,

srelogs имя кластера,

Topic/Group объект, которым управляет данная запись,

PREFIXED/LITERAL как будет применяться, относительно именем объекта вKafka(по префиксу или полное совпадение),

project_prod имя объекта и права, которые получает пользователь.

Producer/consumerавторизуются с помощьюSSLсертификатов, которые мы генерируем автоматически и храним вVault.

Интеграция в конвейер поставки логов

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

После того, как все необходимые компоненты созданы и настроены, топики автоматически создаются, как только первые сообщения начинают отправляться вKafkaблагодаря параметруauto.create.topics.enable=True

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

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

ИспользованиеKafkaв цепочке поставки логов позволяет нам контролировать поток входящих сообщений,Logstash(у каждой команды свой) будет равномерно вычитывать все, что попадает в топикKafka, а мы будем спокойны, что наш конвейер поставки логов не упадет от внезапно возросшей нагрузки. В случае, если нашconsumerстанет недоступен или не будет справляться с нагрузкой, все события так или иначе останутся в топике и будут прочитаны и отправлены вElasticsearchпосле восстановления работоспособностиLogstash.

Кластер для команды

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

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

auto.create.topics.enable=Truedelete.topic.enable=Truelog.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connection.timeout.ms=6000auto.leader.rebalance.enable=true

Нести в статью все, что описано в роляхAnsibleя не вижу смысла, но приведу некоторые примеры того, что используем мы вX5 .

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

- name: 01|Set Kafka replication factor  set_fact:    kafka_cfg_default_replication_factor: "{{  kafka_cfg_default_replication_factor | default(kafka_hosts|length) }}"    kafka_cfg_offsets_topic_replication_factor: "{{ kafka_cfg_offsets_topic_replication_factor | default(kafka_hosts|length) }}"    kafka_cfg_transaction_state_log_replication_factor: "{{ kafka_cfg_transaction_state_log_replication_factor | default(kafka_hosts|length) }}"  run_once: True- name: 01|Set kafka ISR  set_fact:    kafka_cfg_min_insync_replicas: "{{ kafka_cfg_min_insync_replicas | default([kafka_cfg_default_replication_factor|int - 1 , 1] | max) }}"    kafka_cfg_transaction_state_log_min_isr: "{{ kafka_cfg_transaction_state_log_min_isr | default([kafka_cfg_transaction_state_log_replication_factor|int - 1 , 1] | max) }}"  run_once: True

По умолчанию мы выставляем удаление всех событий старше 30 дней, обычно этого хватает командам:

log.retention.hours=720

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

Project.yml---project: name. . .kafka_scala_version: "2.11"kafka_zk_chroot: '/'kafka_enable_protocol: ['PLAINTEXT']kafka_cfg_default_replication_factor: 2kafka_cfg_log_retention_hours: 6kafka_cfg_log_segment_bytes: 52428800

Как и в случае с общим кластером, для обеспечения безопасности, мы используем SSL сертификаты. По умолчанию предоставляем кластер с параметромkafkaenableprotocol: ['SSL'], что гарантирует возможность подключения к кластеру только тех, кто имеет соответствующие клиентские сертификаты.

- name: Lookup for ssl data in Vault  set_fact:    jks_b64: "{{ lookup('hashi_vault', 'secret=sre/{{ env }}/{{ project }}/kafka/{{ inventory_hostname }}:kafka.keystore.jks.b64') }}"- name: Copy keystore data from Vault  copy:    dest: "/opt/kafka/ssl/{{ inventory_hostname }}/kafka.keystore.jks"    content: "{{ jks_b64 | b64decode }}"

Для удобства управления мы заворачиваемKafkaиZookeeperв сервисы, поскольку не используем контейнеры. Пример шаблона сервисаKafka, которыйAnsibleприносит на виртуальную машину:

[Unit]Description=Kafka DaemonAfter=zookeeper.service[Service]Type=simpleUser={{ kafka_user }}Group={{ kafka_group }}LimitNOFILE={{ kafka_nofiles_limit }}Restart=on-failureEnvironmentFile=/etc/default/kafkaExecStart={{ kafka_bin_path }}/kafka-server-start.sh {{ kafka_config_path }}/server.propertiesExecStop={{ kafka_bin_path }}/kafka-server-stop.shWorkingDirectory={{ kafka_bin_path }}[Install]WantedBy=multi-user.target

Плюсытакогоразделения:

  • разграничение ресурсов.

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

  • гибкость управления.

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

Пример нагрузки на одном из кластеров, который использует система маркировки:

Видно, что нагрузка на систему держится примерно на одном уровне на протяжении любого периода времени (в примере это неделя).

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

Дополнительные инструменты для работы с Kafka

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

Таким набором по умолчанию у нас являются экспортеры для сбора метрик и панели графиковGrafanaдля визуализации этих метрик:

jmx-exporter позволяет отслеживать состояниеJavaVirtualMachine,

kafka-exporter,zookeeper-exporter для того чтобы понимать, как себя чувствуют наши сервисы и получать поверхностную картину,

telegraf дает информацию о состоянии ноды, на которой крутитсяKafka.

Большинству команд этого хватает. Для тех, кому нужно чуть больше информативности, мы предлагаемkafka-minionexporter(https://github.com/cloudworkz/kafka-minion), который позволяет получать больше информации о том, что происходит с топиками, например, сколько групп потребителей подключены к топику и т.п.

Поскольку у команд нет прямого доступа на сервер сKafka, им нужно дать возможность просматривать содержимое и, например, быстро удалять топики, не дергая для этого каждый раз нас. Для решения этих задач мы предлагаем использоватьKafdrop (https://github.com/obsidiandynamics/kafdrop). Для оперативного предоставленияKafdrop, мы используем готовыйCIpipeline, который поднимает в окруженииOpenShiftдва пода:Kafdropиnginx. В результате мы получаемwebUIсbasicаутентификацией, настроенной средствамиnginx.

Помимо этого, точечно по запросам команд мы можем подготовить различные коннекторы, например, коннекторы для баз данных (PostgreSQLConnector,MongoDBKafkaConnector),ksqlDBилиKafkaC22CC23CC24Cдля взаимодействия с кластером черезRESTAPI.C25C

Заключение

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

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

Подробнее..

Опыт создания логотипов с искусственным интеллектом от Студии Лебедева

09.01.2021 20:18:44 | Автор: admin

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

Содержание:

  1. Логика работы с нейросетью на момент написания статьи

  2. Отмеченные особенности процесса

  3. Логотипы, которые у меня получились

  4. Пример набора данных в архиве

  5. Отмеченные технические особенности

  6. Общие впечатления. Резюме

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

Логика работы

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

Этап 1 - диалог с Николаем, в котором пользователь инициирует запрос на новую порцию из 9 версий логотипов в проекте с возможностью добавить уточнения. Уточнений немного: можно выбрать некоторые образы из предложенного списка, которые автор ассоциирует со своим брендом, а также можно выбрать предпочтительные стили шрифтов, цветов и графики.

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

Этап 2 - настройка и корректировка выбранного логотипа перед этапом формирования графического набора.

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

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

Основные особенности

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

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

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

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

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

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

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

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

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

Что у меня получилось

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

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

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

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

Пример архива

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

  1. Собственно логотип

  2. Паттерн

  3. Визитка

  4. Бланк письма

  5. Варианты графических шапок для социальных сетей

  6. Набор цветов фирменного стиля

Отмечу, вся графика присутствует в наборе как в формате .png, так и в .svg, но до работы с векторными версиями у меня пока не доходили руки.

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

Технические особенности

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

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

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

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

Резюме

Краткая версия: очень круто, причём как по результату, так и по впечатлению.

Чуть подробнее. По крайней мере на данный момент, при цене в 9900 рублей, которые я заплатил, это невероятно эффективное вложение средств. Никакие фрилансеры по соотношению впечатления * качество / цена не смогут встать рядом. Если вспомнить стоимость работы профессионалов, то та же Студия Лебедева Экспресс-дизайн предлагала за 100 000, причём результаты были как высоко оценённые заказчиками, так и не очень. Здесь же есть возможность напрямую влиять на результат, причём не только при составлении брифа.

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

P.S.: Оказалось, что называть машину именем, которое ей дали создатели, даже если это человеческое имя Николай, не составило для меня никакой моральной заминки. И в переписке с поддержкой, и при написании статьи это далось вполне естественно.

Подробнее..

Как продать 1,5тонны мороженого за лето, не имея опыта в HoReCa?

04.05.2021 16:09:09 | Автор: admin

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

Сегодня я расскажу, как я хотел исполнить подобную мечту, и запустить сеть кафе-мороженых. А получился 4-х месячный хакатон. В результате которого, бизнес провалился. Но я не отчаялся. Сделал выводы (спойлер: не совсем верные) и в итоге запустил еще более авантюрный проект.Внимание, лонгнрид!

Идея

История произошла четыре года назад. В конце апреля2017 года.

Путешествуя по Европе, я обратил внимание на киоски с джелато итальянским мороженым с низким содержанием жиров. К киоскам тянулись длинные очереди. Мне захотелось запустить нечто подобное в России. Во-первых, после долгой работы в Digital хотелось попробовать какой-то земной, ламповый бизнес. Во-вторых, я страшный сладкоежка! Мне казалось, если даже бизнес не пойдет, то все, что будет куплено, я съем сам.

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

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

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

Бизнес-план

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

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

Мы выбрали ближайший крупный фестиваль, на который могли успеть, до него оставалось 2 месяца, включая майские праздники.Совокупно мы решили ограничиться бюджетом $20 000(спойлер: уложиться не удалось).

Поиск поставщиков

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

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

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

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

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

Подбор ассортимента

В основе формирования ассортимента лежало несколько простых принципов:

  • Сформировать яркую витрину с не более чем 15 вкусами мороженого (такое количество помещалось на 2 витрины).

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

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

  • Из всего ассортимента мы выбрали топ самых продаваемых позиций.

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

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

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

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

  • Заводы-производители, которые предлагали наименьшие цены, требовали приобретения больших объемов от нескольких тонн.

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

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

Брендинг и маркетинг

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

Так почему же мы выбрали собственный бренд?

На это было сразу несколько причин:

  • Оба бренда мороженого не были известны не только в Беларуси, но и в Москве. Даже интересно: кто из вас услышал о них впервые из данной статьи?

  • Мы делали мультибрендовый формат, ине было никакого экономического смысла платить двум брендам по $5 000 непонятно за что.

  • Для фестивального участия нам не нужно было сложных стендов или корнеров.

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

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

Хранение и транспортировка

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

Помните, мы сэкономили на закупках? Обратная сторона этой экономии логистика. Мороженое, которое будет лететь из Новосибирска в Москву, и еще 15 поставщиков, заказы у которых требовалось консолидировать и отправить единым грузом из Москвы в Минск.

Часть поставщиков привозили заказы самостоятельно, у кого-то был доступен только самовывоз. Все купленное, кроме мороженного, складировалось прямо в квартире. Коробки были везде!

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

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

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

Морозильный склад достоин отдельного упоминания

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

Это не гопник и не касплей-вечеринка Big Russian Boss. Так выглядят белые воротнички на разгрузке мороженного.

Температура на улице +27+30. Ее перепады как в сауне. А задача в морозильной комнате найти и укомплектовать продукцию на фестиваль в необходимом количестве.

Оборудование и оформление стенда

Самодельная витрина из ларя марки Снеж стоимостью $200.Самодельная витрина из ларя марки Снеж стоимостью $200.

Профессиональное оборудование с готовыми витринами для мороженого стоит от $2 000 до $5 000. Нам необходимо было минимум 3 таких витрины, исходя из ассортимента, для возможности участия параллельно на двух мероприятиях. В обозначенный бюджет это никак не умещалось.

Нам нужно было оборудование недорогое и в наличии. Тогда мы нашли белорусского производителя. И приобрели самые обычные витринные лари по $200 за штуку.

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

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

Итак, что же мы сделали:

  • Купили металлические направляющие.

  • Супер-клей.

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

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

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

Первый фестиваль

Первым фестивалем, в котором мы участвовали, стал Freaky Summer Party. Он должен был проходить два дня.

Мы взяли пространство у главной сцены. При этом получили большой дисконт, позиционируя себя как необычный и уникальный продукт. При всем при этомаренда на 2 дня нам обошлась почти $5 250.

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

Мы арендовали шатер, купили паллеты (но при сборке стенда их не хватило, и несколько штук мы реквизировали у организаторов). Фасад выкрасили в белый цвет, собрали стенд. Собрали команду из 5 девушек-продавцов, рассказали им про продукт и то, как его следует продавать. Мы были готовы!

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

Но даже с учетом непогоды мызаработали в тот день$3 375.

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

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

Второй день оказался по-настоящему выше наших ожиданий:мы продали примерно на $8 270. Это более 1,5 тыс. порций мороженного.


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

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

Маркетинг и продажи

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

Один шарик мороженого (50 г) стоил 5 BYN (чуть меньше $2 или 150 российский рублей). Это немало, если сравнивать, например, с Baskin-Robbins ($0,65).Один шарик мороженого (50 г) стоил 5 BYN (чуть меньше $2 или 150 российский рублей). Это немало, если сравнивать, например, с Baskin-Robbins ($0,65).

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

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

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

Ошибки

Ошибка 1.Лучше меньше, да лучше

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

То, что нам удалось в итоге продать больше 1,1 тон за 7 недель, я связываю с исключительным стечением обстоятельств:

  • эффект новизны продукта;

  • в основном погода без дождя;

  • наша личная вовлеченность.

8-ми литровая банка с концентратом сиропа для коктейлей. Привлекает внимание за счет яркого цвета, декораций из мяты и фруктов. Рецепт лимонада прост: сироп, газированная вода, лед и фрукты.8-ми литровая банка с концентратом сиропа для коктейлей. Привлекает внимание за счет яркого цвета, декораций из мяты и фруктов. Рецепт лимонада прост: сироп, газированная вода, лед и фрукты.

Ошибка 2. Оборудование и логистика

Порядка 15-20% мороженого испортилось из-за некачественного оборудования, проблем транспортировки. Это очень большие потери.

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

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

Ошибка 3.Бизнес не хобби

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

  • Сложность поиска разнорабочих.

  • Процесс монтажа и демонтажа стенда.

  • Работа более 14 часов большую часть времени под палящим солнцем.

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

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

Ошибка 4. Плохое планирование и организация работы

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

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

Ошибка 5. Отсутствие нормальной системы учета

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

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

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

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

Финал

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

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

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

Подробнее..

Из столицы в провинцию. Как мы открывали первый бар. Часть 1

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

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

Что этот материал делает на Хабре?

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

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

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

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

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

Выбор ниши для нового бизнеса

В 2010 году в Москве открывается первый ресторан Burger King, в Минске это случится только через пять лет. Эта вполне соответствует разнице в развитии индустрии гостеприимства Беларуси и России.

В 2016 году в Минске начинает работу первая сетевая кальянная. Спрос явно опережает предложение.

Преимущества открытия кальян-бара были на поверхности:

  • Высокая маржинальность (> 1000%) на кальяны и бар (> 350%).

  • Возможность работать с привлеченной кухней (доставка из соседних заведений).

  • Низкий региональный уровень конкуренции

  • Относительно небольшой объем требуещихся вложений (от $30 тыс.)

  • Быстрый возврат инвестиций (от 6 месяцев)

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

Поиск помещения под бар

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

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

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

Нам казалось, что время дороже. И мы продолжили поиски. Приоритет был на помещениях в туристическом центре города. Вариантов было немного.Не смотря на высокую стоимость коммерческих площадей (от $35 за кв.м/мес), сопоставимой со ставкой аренды в центре Москвы или Санкт-Петербурга, преимущества стабильно высокого трафика привлекало арендаторов.

Очередная локация, которую нам предложили рассматривать, располагалось по адресу Интернациональная 27.

Верхний город в Минске это небольшой кусок восстановленных послевоенных зданий. Ниже располагается знаменитая Зыбицкая, аналог ресторанно-барных улиц Думская и Рубинштейна в Санкт-Петербурге.Верхний город в Минске это небольшой кусок восстановленных послевоенных зданий. Ниже располагается знаменитая Зыбицкая, аналог ресторанно-барных улиц Думская и Рубинштейна в Санкт-Петербурге.

Помещение было в государственной собственности. Тендер на право аренды выиграло совместное предприятие KFC и Burger King. Однако помещение никак не проходило по техническим условиям условиям головного офиса.

По договору мастер-франшизы, обошедшего владельцам около $1 000 000, они обязались открыть в Беларуси определенное количество ресторанов согласно установленным срокам. В случае нарушения графика открытий, они могли потерять эксклюзивные права на регион.

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

Здание, построенное 80-ых годах 20 века официально числилось в списке архитектурных памятников города.Здание, построенное 80-ых годах 20 века официально числилось в списке архитектурных памятников города.

Двухэтажное помещение было некогда офисом, где сидели военные внешней разведки КГБ Беларуси.

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

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

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

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

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

В таком виде нас встретило помещениеВ таком виде нас встретило помещение

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

  1. Государственная аренда была существенно дешевле коммерческой $10 за кв.м.

  2. На все время ремонтных работ, до официального ввода в эксплуатацию ставка аренды составляла всего $5 за кв.м.

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

Поэтому, когда мы узнали, что срок аренды помещения 10 лет, без права индексации ставки мы не поверили. Экономия на аренде выходила более $650 000 за все время.

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

Два по цене одного

Для того, чтобы получить права аренды, нам необходимо было приобрести фирму-победителя тендера у KFC и Burger King. Для проверки бухгалтерии и чистоты сделки купли-продажи, мы наняли опытных местных аудиторов.

В те годы, цена сделки с перепродажей права аренды могла превышать $200 000, даже при условии 3-х годичного договора.

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

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

Мы пришли к договоренности. Юристы вели подготовку к сделке. За три дня до подписания раздался звонок риэлтора.

Ребят, вы же говорили, что подвальные помещения вы тоже рассматриваете?
У меня есть ещё одно предложение в самом центре города. Вам точно нужно взглянуть на него.

Из Минска в Гродно

Помещение, о котором говорил риэлтор находилось в 275 км от Минска, в Гродно. Крупном приграничном городе с населением 350 тыс. человек, в котором располагались несколько известных в стране университетов.

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

Здание располагалось на центральной прогулочной улице. Но вход в помещение находился со двора.

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

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

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

Подвал площадью 85 кв.м. с отдельным входом. Лестница по оси В когда-то вела в соседний дом, теперь была замурована. Подвал площадью 85 кв.м. с отдельным входом. Лестница по оси В когда-то вела в соседний дом, теперь была замурована.

Ключевыми для нас были два вопроса:

  1. Получится ли вообще организовать комфортное пространство для гостей с учетом особенностей помещения и требований к технологическим зонам.

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

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

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

Собственник согласился на 3,5 года каникул. Это было беспрецедентно. Мы ударили по рукам.


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

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

Выбранные локации не предвещали простого старта. Но мы были полны оптимизма.

Подробнее..

Умный дом по версии основателя Madrobots

09.01.2021 10:11:18 | Автор: admin

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

Прихожая

Умный замок Aqara Smart Door Lock. Открывается по отпечатку пальца, паролю, NFC метке и ключу. С этим замком друзья семьи могут попадать домой в отсутствие хозяев. Работает на батарейках, которые нужно менять примерно раз в 2 года.

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

Гостиная

Робот-пылесос Xiaomi Roborock. Ездит по квартире и пылесосит сам. В новой модели есть функция полотера.

Робот-полотер iRobot Braava 380T. Натирает полы, умеет делать влажную уборку. Немного тупой, работает только вместе с навигационным кубом. Недавно вышла обновленная модель Braava Jet.

Вертикальный пылесос Dyson V11. Объективно лучший пылесос на рынке. Если душит жаба, модель V10 незначительно ему уступает.

Проектор Xgimi H2. Один из лучших проекторов на рынке за свои деньги. Дает картинку около 100 дюймов. Недавно вышла обновленная модель H3 с более высокой контрастностью.

МФУ Brother DCP-L2520DWR. Простой и надежный. Принтер и сканер. Работает по Wi-Fi, печатает прямо со смартфона. Получили домашнее задание в WhatsApp от учителя, сразу же его распечатали и отдали ребенку.

Кухня

Измельчитель для отходов InSinkErator. Устанавливается в раковину, сокращает объем выбрасываемого мусора примерно на треть.

Кран-кипятильник Grohe Red. Заменяет обычный кран и фильтр для воды. Дает кипяток из 8-литрового бачка в любую секунду, чем ускоряет приготовление блюд и экономит место, которое больше не занимает чайник.

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

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

Хаб для умных устройств Aqara Hub. Позволяет добавить устройства в приложение Mi Home и оттуда ими управлять

Пульт управления умным домом Aqara Cube Controller. Позволяет настраивать сценарии взаимодействия через сценарии вроде потряс куб включилась подсветка у хаба.

Ванная и туалет

Умный унитаз/крышка биде Xiaomi Smartmi Toilet Cover. Устанавливается почти на любой унитаз. Основная польза: теплое сиденье и подсветка, ночью не промахнешься мимо унитаза. Кроме того, есть функция биде.

Датчик движения и освещения Aqara Motion Sensor. Измеряет уровень освещения и отслеживает движение. Можно настроить автоматическое включение света через хаб, незаменимо для ночных походов в ванную. Хозяйке на заметку: больше датчиков движения.

Спальня

Зарядная станция Aukey LC-A3. Одновременно заряжает iPhone, Apple Watch, AirPods.

Зарядное устройство Baseus GaN 65W. Имеет 2 входа USB-C и 1 USB. Позволяет заряжать ноутбук, телефон и еще одно устройство.

Сетевой фильтр Zeoota PS016. Содержит 5 розеток переменного тока и 5 портов USB. Не надо спрашивать, зачем столько: сами знаете, что займете все, и этого будет мало. Поскольку фильтр умный, теперь вы можете поговорить с ним или отключить удаленно.

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

Умные весы Picooc S3. Работают по Wi-Fi, анализируют более 10 параметров тела. Нужны, чтобы встать на них с утра, измерить вес и забыть, что что-то произошло, а затем в конце месяца получить отчет о том, насколько хорошо прошли праздники.

Детская

Мойка воздуха Venta LW25. Простая, как 3 рубля. Залил воды в бак 7 литров и на сутки забываешь о нём. Обслуживание элементарное: нужно вместе с водой добавить флакон с дезинфицирующим средством и дать устройству поработать ночь с ним (лучше не при детях).

Датчик влажности и температуры Xiaomi Mi Temperature and Humidity Sensor. Измеряет, соответственно, температуру и влажность в комнате. Сочетайте с увлажнителем воздуха и другими умными устройствами для поддержания комфортного микроклимата.

Бризер Xiaomi Mi Air Purifier MJXFJ-300-G1. Очищает воздух от углекислого газа, пыли, смога и прочих загрязнений. Маст-хэв для родителей детей-аллергиков и астматиков. Альтернатива бризеру от Xiaomi модель ТИОН 3S.

Бонус: Nanoleaf, система светового оформления интерьера. Таких панелей у меня дома нет, но я их фанат и при первой возможности сделаю себе стену как на фото. Уже повесил такие в офисе Madrobots и в нашем флагманском магазине. Радуют глаз.

Недавно Xiaomi выпустила свою версию подобных панелей, которые почти вдвое дешевле Nanoleaf. В широкой продаже они появятся ближе к середине года.

Сводная таблица всех устройств из списка. Где можно купить и сколько стоит. Я не стал добавлять Алиэкспресс, напишите в комментариях нужно ли сравнение цен для китайских гаджетов с Али:

Aqara Smart Door Lock

Яндекс.Маркет

До 17 990 р

Xiaomi Mi Smart Home Door/Window Sensors

Яндекс.Маркет

До 1200 р

Робот-пылесос Xiaomi Roborock

Яндекс.Маркет

До 39 990 р

iRobot Braava 380T

Яндекс.Маркет

До 17 800 р

Пылесос Dyson V11

Яндекс.Маркет

До 55 490 р

Проектор Xgimi H2

Яндекс.Маркет

-

Измельчитель для отходов InSinkErator

Яндекс.Маркет

До 14 490 р

Кран-кипятильник Grohe Red

интернет-магазин Grohe

До 167 760 р

Яндекс.Станция

Яндекс.Маркет

До 12 990 р

Хаб для умных устройств Aqara Hub

Яндекс.Маркет

До 2 990 р

Aqara Cube Controller

Яндекс.Маркет

До 1090 р

Крышка-сиденье для унитаза Xiaomi Smartmi Smart Toilet Cover

Яндекс.Маркет

До 13 499 р

Зарядная станция Aukey LC-A3

Яндекс.Маркет

До 3 990 р

Сетевая зарядка Baseus GaN Quick Travel Charger

Яндекс.Маркет

До 3 411 р

Сетевой фильтр Zeoota PS016

Яндекс.Маркет

До 2 990 р

Умный аромадиффузор Moodo

Madrobots

12 990 р

Умные весы Picooc S3

Madrobots

7 990 р

Мойка воздуха Venta LW25

Яндекс.Маркет

24 490 р

Датчик влажности и температуры Xiaomi Mi Temperature and Humidity Sensor

Яндекс.Маркет

1 270 р

Бризер Xiaomi Mi Air Purifier MJXFJ-300-G1

Яндекс.Маркет

До 43 900 р

Nanoleaf Aurora

Madrobots

14 990 р

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

Подробнее..

Умный дом рекомендации гаджетов на основе личного опыта. Версия основателя Madrobots

09.01.2021 12:13:57 | Автор: admin

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

Прихожая

Умный замок Aqara Smart Door Lock. Открывается по отпечатку пальца, паролю, NFC метке и ключу. С этим замком друзья семьи могут попадать домой в отсутствие хозяев. Работает на батарейках, которые нужно менять примерно раз в 2 года.

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

Гостиная

Робот-пылесос Xiaomi Roborock. Ездит по квартире и пылесосит сам. В новой модели есть функция полотера.

Робот-полотер iRobot Braava 380T. Натирает полы, умеет делать влажную уборку. Немного тупой, работает только вместе с навигационным кубом. Недавно вышла обновленная модель Braava Jet.

Вертикальный пылесос Dyson V11. Объективно лучший пылесос на рынке. Если душит жаба, модель V10 незначительно ему уступает.

Проектор Xgimi H2. Один из лучших проекторов на рынке за свои деньги. Дает картинку около 100 дюймов. Недавно вышла обновленная модель H3 с более высокой контрастностью.

МФУ Brother DCP-L2520DWR. Простой и надежный. Принтер и сканер. Работает по Wi-Fi, печатает прямо со смартфона. Получили домашнее задание в WhatsApp от учителя, сразу же его распечатали и отдали ребенку.

Кухня

Измельчитель для отходов InSinkErator. Устанавливается в раковину, сокращает объем выбрасываемого мусора примерно на треть.

Кран-кипятильник Grohe Red. Заменяет обычный кран и фильтр для воды. Дает кипяток из 8-литрового бачка в любую секунду, чем ускоряет приготовление блюд и экономит место, которое больше не занимает чайник.

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

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

Хаб для умных устройств Aqara Hub. Позволяет добавить устройства в приложение Mi Home и оттуда ими управлять

Пульт управления умным домом Aqara Cube Controller. Позволяет настраивать сценарии взаимодействия через сценарии вроде потряс куб включилась подсветка у хаба.

Ванная и туалет

Умный унитаз/крышка биде Xiaomi Smartmi Toilet Cover. Устанавливается почти на любой унитаз. Основная польза: теплое сиденье и подсветка, ночью не промахнешься мимо унитаза. Кроме того, есть функция биде.

Датчик движения и освещения Aqara Motion Sensor. Измеряет уровень освещения и отслеживает движение. Можно настроить автоматическое включение света через хаб, незаменимо для ночных походов в ванную. Хозяйке на заметку: больше датчиков движения.

Спальня

Зарядная станция Aukey LC-A3. Одновременно заряжает iPhone, Apple Watch, AirPods.

Зарядное устройство Baseus GaN 65W. Имеет 2 входа USB-C и 1 USB. Позволяет заряжать ноутбук, телефон и еще одно устройство.

Сетевой фильтр Zeoota PS016. Содержит 5 розеток переменного тока и 5 портов USB. Не надо спрашивать, зачем столько: сами знаете, что займете все, и этого будет мало. Поскольку фильтр умный, теперь вы можете поговорить с ним или отключить удаленно.

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

Умные весы Picooc S3. Работают по Wi-Fi, анализируют более 10 параметров тела. Нужны, чтобы встать на них с утра, измерить вес и забыть, что что-то произошло, а затем в конце месяца получить отчет о том, насколько хорошо прошли праздники.

Детская

Мойка воздуха Venta LW25. Простая, как 3 рубля. Залил воды в бак 7 литров и на сутки забываешь о нём. Обслуживание элементарное: нужно вместе с водой добавить флакон с дезинфицирующим средством и дать устройству поработать ночь с ним (лучше не при детях).

Датчик влажности и температуры Xiaomi Mi Temperature and Humidity Sensor. Измеряет, соответственно, температуру и влажность в комнате. Сочетайте с увлажнителем воздуха и другими умными устройствами для поддержания комфортного микроклимата.

Бризер Xiaomi Mi Air Purifier MJXFJ-300-G1. Очищает воздух от углекислого газа, пыли, смога и прочих загрязнений. Маст-хэв для родителей детей-аллергиков и астматиков. Альтернатива бризеру от Xiaomi модель ТИОН 3S.

Бонус: Nanoleaf, система светового оформления интерьера. Таких панелей у меня дома нет, но я их фанат и при первой возможности сделаю себе стену как на фото. Уже повесил такие в офисе Madrobots и в нашем флагманском магазине. Радуют глаз.

Недавно Xiaomi выпустила свою версию подобных панелей, которые почти вдвое дешевле Nanoleaf. В широкой продаже они появятся ближе к середине года.

Сводная таблица всех устройств из списка. Где можно купить и сколько стоит. Я не стал добавлять Алиэкспресс, напишите в комментариях нужно ли сравнение цен для китайских гаджетов с Али:

Aqara Smart Door Lock

Яндекс.Маркет

До 17 990 р

Xiaomi Mi Smart Home Door/Window Sensors

Яндекс.Маркет

До 1200 р

Робот-пылесос Xiaomi Roborock

Яндекс.Маркет

До 39 990 р

iRobot Braava 380T

Яндекс.Маркет

До 17 800 р

Пылесос Dyson V11

Яндекс.Маркет

До 55 490 р

Проектор Xgimi H2

Яндекс.Маркет

-

Измельчитель для отходов InSinkErator

Яндекс.Маркет

До 14 490 р

Кран-кипятильник Grohe Red

интернет-магазин Grohe

До 167 760 р

Яндекс.Станция

Яндекс.Маркет

До 12 990 р

Хаб для умных устройств Aqara Hub

Яндекс.Маркет

До 2 990 р

Aqara Cube Controller

Яндекс.Маркет

До 1090 р

Крышка-сиденье для унитаза Xiaomi Smartmi Smart Toilet Cover

Яндекс.Маркет

До 13 499 р

Зарядная станция Aukey LC-A3

Яндекс.Маркет

До 3 990 р

Сетевая зарядка Baseus GaN Quick Travel Charger

Яндекс.Маркет

До 3 411 р

Сетевой фильтр Zeoota PS016

Яндекс.Маркет

До 2 990 р

Умный аромадиффузор Moodo

Madrobots

12 990 р

Умные весы Picooc S3

Madrobots

7 990 р

Мойка воздуха Venta LW25

Яндекс.Маркет

24 490 р

Датчик влажности и температуры Xiaomi Mi Temperature and Humidity Sensor

Яндекс.Маркет

1 270 р

Бризер Xiaomi Mi Air Purifier MJXFJ-300-G1

Яндекс.Маркет

До 43 900 р

Nanoleaf Aurora

Madrobots

14 990 р

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

Подробнее..

Из первых уст. Про впечатления от курса Яндекс Практикума Разработчик С

05.04.2021 20:15:29 | Автор: admin

Приветствую уважаемое сообщество.

В последнее время стало появляться множество курсов, связанных с IT. Вполне логично, что народ стал делиться своими наблюдениями от их прохождения. Так на Хабре можно найти отзывы об обучении на некоторых факультетах (курсах) от Яндекс Практикума [1-3]. Однако про курс "С++ разработчик" такой информации еще не было, был только рекламный пост о его запуске [4], после которого я туда и вписался, попав в первый поток (когорту).

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

О первом лице

Мне 38 лет и последние 12 лет (после защиты кандидатской) работаю в одном из научных учреждений Санкт-Петербурга. До этого успел немного поработать в IT (выездной сисадмин, установка торгового оборудования). Опыта коммерческой разработки нет. Зато есть небольшой опыт разработки программ для управления научными приборами на Delphi.

Мотивация

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

Опущу тему про почему выбор пал на Яндекс Практикум, самое интересное - что же там внутри.

Что внутри

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

Как и наверно в большинстве онлайн-курсов все начинается с вводного бесплатного курса, где можно оценить свои силы, время, удобство и стиль изложения материала. Что мне больше всего понравилось, финальным проектом вводного курса был вполне законченный проект "поисковик по поиску потерянных домашних животных" с ранжированием результатов выдачи и стоп-словами. Хотя в описании вводного курса было указано ориентировочное время прохождения 24 часа, я его решал целый месяц во время отпуска. Зато на основе готового поисковика, пока ждал начала уже платного обучения, довольно легко сделал программу "Любимая фраза классиков литературы", куда вошло большинство изученных алгоритмов и приемов. Таким образом, на вводном курсе были даны базовые типы, строки, вектор, словарь, немного шаблонов и лямбда функции. Подача материала мне понравилась, она была выполнена в виде комикса с некоторой историей и юмором.

Главные герои вводного курсаГлавные герои вводного курса

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

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

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

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

Что конкретно

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

Страничка моей лабораторииСтраничка моей лаборатории

По ходу обучения мы разработали свои версии стандартного вектора. Сначала детский вариант - на основе std::array, затем, вот только что, с использованием размещающего оператора new и инициализацией объектов в сырой памяти, по количеству копирований и перемещений не уступающий std::vector.

Второй крупный проект, который мы уже заканчиваем - это городской маршрутизатор. Все началось невинно, с разработки справочника остановок и маршрутов автобусов, однако очень скоро программа обросла функцией генерации карты маршрутов в SVG, работой с JSON для ввода и вывода данных, используя библиотеки которые сами же и разработали. Самая жесть была с построением оптимального маршрута между остановками с использованием графа, библиотеку которого к счастью нам уже дали готовую и надо было всего лишь разобраться с ее API. Из освоенных технологий: умные указатели, move-семантика, полиморфизм и наследование, RAII, variadic templates. Если в начале курса в тренажер для проверки приходилось загружать единственный файл main.cpp, то последний проект состоял из 24 файлов с самописными библиотеками, пространствами имен и пр.

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

Про проблемы тренажера

Да, было дело, в самом начале. Сделал все как в условии, задание не засчитывается, хоть ты тресни. В большинстве случаев дело было в последнем символе - либо перенос строки нужно было добавить либо пробел один убрать. Мы даже иногда угадывали. Но эти детские проблемы ко второму спринту уже починили. Единственный серьезный глюк был в недавнем задании, где тренажер слишком строго определял правильность формирования svg-файла в плане порядка тегов. Пришлось лишний день потратить на поиск возможных ошибок в своем коде, которых к счастью не оказалось. Зато нисколько не жалею, т.к. более глубоко проникся некоторыми моментами языка и оптимизировал все что можно было. Да, еще, в некоторых последних заданиях скорость работы решения проверяется наравне с корректностью алгоритма. Решать задачи становится сложнее, но интереснее.

Про портфолио

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

Мой репозитарий с решенными задачамиМой репозитарий с решенными задачами

Про ревьюеров

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

Про нагрузку

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

Про трудоустройство

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

Что не хватает

Обязательной практики в реальной компании. Читая Хабр можно лишь отдаленно представить, чем занимаются начинающие разработчики в реальных компаниях. То, что есть дедлайны и спринты? Да, к этому готовят. Разбираться в чужом коде? Да, практически в каждом задании в тренажере дается код-заготовка и нужно понять и расширить его функционал. Уметь работать с GIT? Все итоговые работы мыотправляем ревьюеру через репозитарий на Github. Умение общаться с такими же новичками и опытными специалистами? Тоже да. На курсе все общение построено через Slack, все друг другу помогают советами, иногда всем миром пытаемся понять, что еще не нравится тренажеру, чтобы он засчитал задание.

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

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

Личные впечатления

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

Список источников:

[1] Что вас ждет на курсе Алгоритмов в Яндекс.Практикуме

[2] Опыт обучения из первых рук. Яндекс.Практикум Аналитик данных

[3] Яндекс.Практикум Аналитик данных. Окончание обучения

[4] C++ в Практикуме. Как обучить студентов плюсам, не отпугивая

[5] Веб-тренажёр Яндекс.Практикума. Как всё устроено

[6] Что вас на самом деле ждёт на курсе про алгоритмы в Яндекс.Практикуме

[7] Собеседование в Яндекс: театр абсурда :/

Подробнее..

Госуслуги и запись на прием. Живая очередь?

26.04.2021 14:21:23 | Автор: admin

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

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

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

def send_post(cookies):    url = 'https://www.gosuslugi.ru/api/lk/v1/equeue/agg/slots'    headers = {'Content-type': 'application/json;charset=UTF-8', 'Accept':'application/json', 'Cookie':cookies}    payload = {'eserviceId':'','serviceId':[''],'organizationId':[''],'parentOrderId':'','serviceCode':'','attributes':[]}    return post(url, data=dumps(payload), headers=headers)

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

Для реализации понадобился Python, Selenium и планировщик заданий Windows. Таким образом, получаем следующий основной код:

from webbrowser import open as open_tabfrom selenium import webdriverfrom datetime import datetimefrom requests import postfrom json import dumpsfrom os import pathdef main():    response = send_post(read_cookies())    if response.status_code == 401:        write_cookies(get_cookies())        write_log('Ошибка 401. Обновлены куки.')        main()        return    elif response.status_code == 200:        length = len(response.json()['slots'])        if length > 0:            write_log('Есть мест: ' + length)            open_tab(TARGET_LINK, new=1)        else:             write_log('Нет мест')    else:        write_log('Ошибка {0}'.format(response.status_code))

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

def get_cookies():    options = webdriver.ChromeOptions()    options.add_argument('--no-sandbox')    options.add_argument('--minimal')    driver = webdriver.Chrome(executable_path=DRIVER_FILE, options=options)    driver.get('https://esia.gosuslugi.ru/')    driver.implicitly_wait(7)    input_login = driver.find_element_by_id('login')    input_password = driver.find_element_by_id('password')    btn_enter = driver.find_element_by_id('loginByPwdButton')    input_login.send_keys(LOGIN)    input_password.send_keys(PASSWORD)    btn_enter.click()    driver.get(TARGET_LINK)    cookies = driver.get_cookies()    driver.close()    return cookies

Для запроса, куки форматируются в имя=значение;

raw_cookies = ''.join(['{}={}; '.format(i['name'], i['value']) for i in cookies])

Осталось настроить планировщик заданий Windows. Прямой запуск скрипта .py у меня не получился. Поэтому через .bat одна команда python "script.py". Да, при этом открывается окно консоли. Есть внешние программы, позволяющие запустить консоль скрытно.

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

Подробнее..

Архитектурные паттерны в iOS страх и ненависть в диаграммах. MV(X)

30.03.2021 12:10:29 | Автор: admin

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

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

Первая часть посвящена MV(X) паттернам: самым известным и распространенным практикам в индустрии.

Это первая статья из цикла, посвящённого архитектурным паттернам в iOS разработке. Расскажу про плюсы и минусы, а также когда и где их лучше применять. В этой статье начну с основных и самых популярных MV(X) практик. Во второй части речь пойдёт о реализациях концепции Чистой Архитектуры (Clean Architecture), а в третьей об FRP практиках и паттернах в iOS разработке.

Я Маша, ведущий инженер-разработчик iOS в КРОК, а также аспирант-препод в МЭИ.

Быть iOS-разработчиком непросто. Сначала Xcode не хочет подключаться к устройству, потом ты возишься неделю с сертификатами, потом полгода изучаешь Swift и пытаешься понять когда использовать `guard`, а когда `if let`. Или когда ты уже написал не один калькулятор и приходишь на собеседование в крутой проект, тебя с порога начинают закидывать какими-то страшными аббревиатурами.

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

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

Что такое MV(X)?

Основные части MV(X) архитектур это, так или иначе, модели, виды и контроллеры.

Модель отвечает за использование предметных (бизнес, domain) данных. Это так же может быть data access layer. Модели бывают двух видов: активные и пассивные. Активные модели умеют уведомлять окружающих об изменениях в себе, а пассивные нет.

Вид (Представление, View) отвечает за слой представления (GUI). В каком виде вам это представить? :) Вид не обязательно должен быть связан с UI отрисовкой: если вы хотите представлять данные в виде сменяющих друг друга диодов на arduino-плате этим все равно будет заниматься Вид. Помимо представления пользователю данных, у Вида есть ещё одна важная задача: принять событие пользователя (нажатие на кнопку, например) и пнуть кого-то, кто знает что с этим делать.

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

Любой нормальный человек, только что закончивший изучать ООП, задаст себе вопрос: а нафига плодить эти сущности? Зачем мне так много классов/структур/файлов/сообщений? Какие такие офигенные бенефиты дает вся эта возня? Вон я писал все в одном файле на Паскале/Питоне/Си/Свифт-плейграуде и работало же!

Хорошая архитектура нужна чтобы:

  1. Код становится читабельнее (как минимум для человека, знакомого с архитектурой, как максимум для любого человека)

  2. Переиспользовать код было намного легче

  3. (проще и быстрее) покрыть код юнит-тестами

  4. Расширять (масштабировать) код без мигрени и убийств

Хотя скорее всего если вы нашли эту статью, то вы уже знаете зачем вам нужна архитектура :)

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

Создание архитектуры программы или как проектировать табуретку (обязательно походите по ссылкам внутри)

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

MVC

CocoaMVC это iOS архитектура, которую предложили Apple, создавая iOS Developer SDK. Но стоит оговориться, что, вообще говоря, видение Apple немного отличается от традиционного понимания MVC как архитектуры.

Традиционная MVC выглядит как-то так:

Сплошная стрелочка по заветам UML тут означает ассоциацию. Переводя на программерский: Контроллер владеет Моделью (например у класса Контроллера есть поле типа Модели). Я дальше вместо совершенно нетолерантного слова владеть буду говорить Контроллер ЗНАЕТ О Модели, ведь знание сила.

Пунктирная стрелочка означает зависимость. То есть когда Контроллер владеет Видом, то Вид оказывается у него в зависимости (то есть у Контроллера есть поле типа Вид). У нас в свифте мы зависимость часто видим на примере `weak` свойств на родительские объекты и/или делегаты.

То есть:

  • Вид: рисует кнопочки

    • зависит от Контроллера

      • сообщает Контроллеру о событиях ввода

    • знает о Модели

      • запрашивает данные у Модели

      • получает изменения в данных от Модели

  • Контроллер: знает где взять текст для кнопочки и какой кнопочке его дать

    • знает о Виде

      • может менять конфигурацию Вида или заменять один Вид другим

    • знает о Модели

      • запрашивает изменения в данных Модели

  • Модель: знает как выглядят данные (типы, структуры), что делать с данными (бизнес-логика), где лежит БД и как в нее ходить (инкапсулирует доступ к данным)

    • зависит от Контроллера

      • меняет данные по запросу Контроллера

    • зависит от Вида

      • сообщает Виду об изменении в данных

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

А ещё обратите внимание, что у View нет доступа на запись в Модель. Все изменения Модели производятся только через Контроллер, при этом права на чтение Модели у Вида не просто есть он ими активно пользуется (чтобы обновлять себя и показывать актуальные данные на экране).

Вкратце достоинства классической MVC:

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

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

  3. Разработка бизнес-логики не зависит от разработки представлений и vice versa. А значит, можно посадить несколько человек одновременно долбить код одной фичи.

  4. Однонаправленный поток данных (Вид -> Контроллер -> Модель -> Вид) делает дебаг проще и приятнее

Все это звучит очень классно, но немного запутанно и архаично. Apple предлагает вот такую реализацию Cocoa MVC:

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

Любой iOS-ник скажет, что эта картинка вообще не вяжется с реальностью и будет по-своему прав. На самом деле в большинстве случаев Cocoa MVC будет выглядеть вот так:

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

ViewController и View настолько плотно завязаны друг на друга, что сложно вообще отличить где заканчивается одно и начинается другое. С одной стороны: ну вот же UIView его можно отдельным классом написать, там экстеншены-категории все вот это вот, вы меня за дурака держите?

С другой: UIView не умеет отрабатывать IBAction (тк он не посылает никаких actions это делают UIControl), а .xib-ы легче подключаются к контроллерам (наверняка же сталкивались с историей, что если xib не заканчивается на -Controller то он не подключается из коробки? :)). В итоге чтобы отделить UIView от UIViewController в терминах целого экрана, а не отдельного компонента нужно пройти сквозь огонь, воду и LLVM.

Так как ходить через LLVM никому не нравится, все пихают логику Вида в UIViewController, что приводит к тому, что MVC элегантным жестом превращается в Massive View Controller. Разобраться в этой мешанине делегатов, датасорсов, экшенов и просто вспомогательных функций задача на любителя.

Происходит это из-за того, что у Вида может быть достаточно большое количество различных состояний: представьте себе форму регистрации из серии введите емейл, пароль, подтвердите пароль. Логично, чтобы все поля имели валидацию ввода и цветовую индикацию: хорошо/плохо. Получается, что это три текстфилда, каждый с как минимум двумя состояниями. Записать это состояние в Вид нельзя он stateless, в Контроллер тоже нельзя он не должен управлять состояниями Вида, лишь передавать ему данные. В итоге, состояние Вида приходится хранить в Модели. Так у нас Модель получается перегружена: она хранит в себе и Domain Model (модель предметной области: данные, бизнес логика и тп) и View Model (модель вида: его состояния, хранимые данные, логика переключений состояний и тп).

Пример несколько утрированный, и опытные разработчики скорее всего не увидят проблему в реализации подобной фичи (ну сделай ты кастомный контрол и делов-то!). Но если говорить о формальном следовании архитектуре MVC/CocoaMVC, то видно как всё быстро становится достаточно запутанно.

Ну а протестировать взаимодействие между View и ViewController задача настолько нетривиальная, что в MVC приложениях как правило тестируют только модель и нетворк слой (что во многих случаях бывает так же сложно разделить как и UIView с UIViewController: представьте модель данных и интерфейс доступа к данным (к БД)).

В итоге, чтобы сделать действительно MVC-шный MVC на iOS придется исхитряться ломая либо Cocoa MVC (например давая UIView возможность самостоятельно ходить в модель), либо логику UIKit и делегирования (чтобы сообщения в контроллер приходили действительно от условных UIView, а не от других контролов и контроллеров).

MVP

Прозорливый читатель заметит, что всех проблем c Cocoa MVC можно было бы избежать, если пару UView+UIViewController воспринимать как View, а под слой Controller выделить отдельную сущность, которая не знает о UIKit и занимается только тасканием данных и событий между View и Model, как и было задумано.

То есть:

  • Презентер:

    • зависит от Вида

      • сообщает Виду о необходимости обновить отображение измененных данных

    • знает о Модели

      • запрашивает изменить данные

      • получает сообщения об изменившихся данных

  • Вид:

    • знает о Презентере

      • запрашивает у Презентера реакцию на действия пользователя (пользователь нажал на красную кнопку, куда его послать, сэр?)

  • Модель:

    • зависит от Презентера

      • получает запросы Презентера на изменения данных

      • посылает Презентеру сообщения об изменившихся данных

Выглядит классно и вполне адекватно! Только вот

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

Эта проблема сборки (assembly problem) корнями растет напрямую из Cocoa MVC. Ведь именно Cocoa MVC заставляет нас в первую очередь ориентироваться на UIViewController как на единицу сборки и навигации.

В идеальном мире мы бы сделали как:

```

let newModel = Model() // а возможно она уже где-то существует и мы на нее ссылаемся

let newPresenter = Presenter(model: newModel)

let newView = MyViewController(presenter: newPresenter)

```

Получается красивая инъекция зависимостей через конструктор, и все бы хорошо, если бы было понятно а где собственно она должна происходить. По идее (согласно Cocoa MVC) мы вызываем новые виды (UIViewController) из других видов (других UIViewController). В итоге получается что-то вроде `self.present(newViewController)`. Так значит какой-то другой Вид будет знать про модель нового Вида? Или этим должен заниматься Презентер?

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

Вид: эй, Презентер, юзер хочет перейти на новый экран, что мне делать?

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

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

Решается проблема сборки как правило тем, что создается ещё один управляющий слой: Роутер (Router), который собирает MVP-кусочки, управляет их жизненным циклом и передает их друг другу при необходимости. По этой же причине так часто встречается связка MVP+Coordinator (на эту архитектуру часто ссылаются как на MVP+C).

MVP+C

Выглядит это дело вот так:

Задача координатора создавать MVP блоки и управлять тем какой UIViewController показывается на экране прямо сейчас (например через `navigationController.pushViewController`).

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

Вид: эй, Презентер! Юзер Иванов хочет посмотреть на красную кнопку.

Презентер: *потея* ох, но у нас её нету, надо искать где-то в другом месте Координатор, нужно показать красную кнопку Иванову!

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

Презентер: *деинитится вместе с Видом и, возможно, Моделью*

Это не единственный способ решить проблему сборки в MVP, но остальные методы не слишком-то элегантны:

Так что подведем итоги:

  • При грамотном подходе все три компоненты (Вид, Презентер и Модель) растут примерно в одинаковых масштабах, что здорово помогает справиться с проблемой Massive View Controller.

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

  • Покрыть тестами логику ответа на действия пользователя теперь тоже намного проще: Презентер хорошо отделён от Вида

  • Правда, как это ни парадоксально, переиспользовать Презентер вряд ли получится: всё же, хоть он и отделен, но заточен на работу с конкретным представлением [2] Впрочем, тут все действительно зависит от вас и ваших навыков в SOLID

MVP оказывается хорошей альтернативой MVC, если выбран осознанно для решения конкретной проблемы. В противных случаях он ощущается как слишком много лишнего кода (намёк на роутер) и какой-то громоздкий костыль к MVC (нафига ещё презентер, если ViewController это всё умеет?)

MVP хорошо подходит небольшим командам, однако в крупном проекте с большим количеством разработчиков может стать настоящим яблоком раздора в GIT: разработчики могут постоянно править одни и те же переиспользуемые классы (например, роутеры или модели), работая над разными фичами, что неизменно приводит к большому количеству конфликтов при мержах, разгребать которые никому не нравится :)

Источники:

[1] iOS Architecture Patterns and Best Practices for Advanced Programming - 2021

[2] MVP vs. MVVM in iOS Development. Let's discuss those architectural | by Ahmed Ragab Issa

[3] iOS Architecture Patterns. Demystifying MVC, MVP, MVVM and VIPER | by Bohdan Orlov | iOS App Development

MVVM

MVVM очень похож на MVP, но совсем другой :) Он был создан в Microsoft для работы с WPF и Silverlight, но благодаря своей элегантной модуляризации приобрел популярность и далеко за пределами WPF приложений.

Давайте начнём с картинки:

Как видно, картинка в точности повторяет MVP, только стрелочки почему-то двунаправленные стали, а Презентер превратился в Модель Вида (ViewModel). Ну и как читать это безобразие?

Начнём с того, что тут View это, как и в MVP, связка UIView+UIViewController. Мы вроде уже достаточно взрослые на данном этапе чтобы понять почему. Дальше, кстати, будет так же.

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

Всё это звучит очень круто и удобно, но потом приходит iOS-ник и такой:

И действительно, штатных (предоставленных Apple) средств организовать биндинг в iOS SDK (вне SwiftUI) нет, но зато есть другие инструменты, с помощью которых можно симулировать такое поведение.

Так как делать биндинги вообще? Есть четыре способа:

  • KVO (Key-Value Programming) очень крутая и мощная штука прямиком из Cocoa, которая позволяет подписаться и наблюдать (observe) за переменной по её имени (keyPath) и получать уведомления об изменении её значения (value). Кажется, то что надо!

  • FRP (Functional Reactive Programming) парадигма программирования (заметьте: не язык и не фреимворк, а целая пАрАдИгМа) для обработки событий и данных как потоков. Ну, например представьте, что у вас есть какой-то поток данных и вы хотите для каждого объекта в этом потоке что-то предпринять. Эдакий forEach, только вы не знаете когда появится новый объект.```let lowercaseNames = cast.map { $0.lowercased() }``` видали? Вот вам и FRP, где поток это статичный массив (cast).Реализация FRP в Swift обычно отдается на откуп RxSwift и ReactiveSwift, но есть ещё и Combine от Apple сейчас можно говорить, что он лучше всех, но это конечно не точно.

  • Delegate делегирование можно использовать чтобы передавать сообщения об изменении данных.

  • Boxing если вы первым делом подумали про `didSet` то это для вас! Похоже на KVO, кстати, но придется каждое свойство оборачивать в кастомный дженерик класс (Box). Подробнее детали реализации можно посмотреть в крутом туторе вот тут.Ну а если вы пришли из Objective-C, то с паттерном коробки у вас и подавно проблем возникнуть не должно! Это тот же самый паттерн, что используется в Obj-C (и не только) для оборачивания скалярных типов в ссылочные (например float в NSNumber), только теперь мы ещё и листенер туда навесить пытаемся. По сути обычная обертка, совсем не страшно.

Пятый, бонусный способ: SwiftUI и его @State и @BindingУдивительное дело, но в SwiftUI Apple решила отказаться от концепции ViewController как такового! Вместо этого роль передатчика данных между View и Model на себя берет FRP фреймворк Combine (а вы думали отвертитесь от его изучения?). Самая простая иллюстрация для тех кто совсем в танке:- в описании View (читайте его как ViewModel) переменная помечается аннотацией @State- в описании Компонента (CounterButton, читайте это уже View) эта же переменная, привязываемая к UI контролу, помечается аннотацией @Binding - вуа-ля! Очень реактивно и роскошно :)

Тут есть конечно свои нюансы (например то, что SwiftUI больше подходит для Redux-like паттернов), но да ладно.

Что же мы видим в итоге?

  • Модель Вида:

    • зависит от Вида

      • биндится с данными в Виде, которые могут обновляться в Модели или в GUI

    • знает о Модели

      • запрашивает изменить данные

      • получает сообщения об изменившихся данных

  • Вид:

    • знает о Модели Вида

      • биндится с данными в Модели Вида, которые могут обновляться в Модели или в GUI

  • Модель:

    • зависит от Модели Вида

      • получает запросы Модели Вида на изменения данных

      • посылает Модели Вида сообщения об изменившихся данных

При этом функции компонент очень строго разделены и немного отличаются от оных в MVC/MVP:

Модель:

  • Содержит описание данных

  • Реализует CRUD [2]

  • Оповещает Модель Вида о произошедших изменениях в данных

  • Содержит бизнес-логику [1]

  • Содержит логику валидации данных [1]

  • Вообще говоря MVVM никак не описывает реализацию Модели, и она может быть реализована любым способом, хоть VIPER модулем [3]

Вид:

  • Определяет структуру, расположение и внешний вид элементов интерфейса (как в MVC и MVP)

  • Содержит логику Вида: анимации, переходы между Видами и манипуляции с дочерними Видами

  • Передаёт действия пользователя дальше (в Модель Вида)

Модель Вида:

  • Хранит состояние Вида

  • Знает о Модели и может менять её состояние (вызывая соответствующие методы Модели) [1]

  • Как правило образует связь один ко многим с несколькими Моделями [3]

  • Преобразует данные, полученные от Модели в формат, удобный для отображения Видом и обратно

  • Ничего не знает о Виде и может с ним коммуницировать только благодаря биндингам

  • Может содержать логику валидации данных [2]

  • Может включать в себя бизнес-правила работы с действиями пользователя [2,3]

Как видим, Модель Вида какой-то монстр, который всё обо всех знает и всеми погоняет. Это и достоинство, и недостаток MVVM:

  • С одной стороны, Модель Вида удобный медиатор, оторванный от мира UI и Data Access, а значит её удобно тестировать и можно переиспользовать на других платформах, если вдруг понадобилось сделать еще и приложение для tvOS, например

  • с другой стороны, Модель Вида занимается и управлением состояниями своего Вида и зависимостей, и различного рода логикой. А значит её код разрастается и мы возвращаемся к проблеме Massive View Controller. Чтобы этого избежать, необходимо крайне осторожно подходить к проектированию Моделей Вида

И, хоть Модель Вида и легко протестировать, то дебажить приложение на MVVM совсем непросто: ведь благодаря биндингам данные меняются мгновенно. И, что бы это не значило со стороны пользователя, для разработчика это означает огроменный call stack подписок и ивентов, в котором чёрт ногу сломит:

Иллюстрация из [4]Иллюстрация из [4]

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

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

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

Источники:

[1] iOS Architecture Patterns and Best Practices for Advanced Programming - 2021

[2] Advanced iOS App Architecture | raywenderlich.com

[3] Modern MVVM iOS App Architecture with Combine and SwiftUI

[4] iOS Architecture Patterns. Demystifying MVC, MVP, MVVM and VIPER | by Bohdan Orlov | iOS App Development

[5] Architectural Patterns by Pethuru Raj, Anupama Raman, Harihara Subramanian

[6] MVP vs. MVVM in iOS Development. Let's discuss those architectural | by Ahmed Ragab Issa


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

На больших проектах со сложной бизнес-логикой требуются более основательные подходы к проектированию кодовой базы приложения. Один из таких подходов концепция Чистой Архитектуры, о которой мы поговорим в следующей статье. Обсудим VIPER, CleanSwift, RIBs и относительно малоизвестную штуковину под названием Elements.

Не переключайтесь! :)

Подробнее..

Айдентика личного бренда для самых маленьких

25.12.2020 12:18:15 | Автор: admin

Помимо основной работы в ИТ-компании КРОК, я также веду кружок спортивного программирования в вузе, у которого даже есть свой паблик. Так вот, порой ведешь блог, и кажется, что надо бы и аватарку красивую поставить, и как-то украсить страничку, картинки к постам в одном стиле запилить но что-то все не получается, какое-то некрасивое все выходит, и вообще, что вы пристали, я программист! А нанимать профессионального дизайнера чтобы нарисовал дизайн систему для паблика из 50 человек а вдруг не стрельнет, чем я ему платить буду?

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

Хабр, привет! Меня зовут Маша, я веду кружок спортивного программирования в вузе, и хочу поделиться опытом, как в такую скучную вещь мы за год привлекли меньше 30 человек, а потом с помощью айдентики, нарисованной людьми не умеющими рисовать, за пару месяцев - больше 400!

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

На первое занятие к нам пришли 30 человек, а уже к марту из них осталось около 10 Когда мы ездили со студентами на сборы, они то и дело спрашивали: а почему у вас нет логотипа? А было бы круто <очуменная идея лого> Странный вопрос для кружка спортивного программирования при кафедре прикладной математики, согласитесь?

Однако очень быстро мы поняли, что нашим промо-материалам (анонсам, объявлениям и пр.) сильно не хватает каких-то отличительных опознавательных знаков, тупо картинки для привлечения внимания привлекали внимания ровно столько же, сколько все остальные объявления, и наши просто терялись в общем потоке. Даже самые заинтересованные в нашем контенте студенты признавались: да я даже не заметил что там что-то про эту тему в новостях было, пролистал не задумываясь.

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

Логотип

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

Получилось как-то так:

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

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

В сентябре мы запустили новую волну набора в кружок. Мы написали о нем в нашем паблике ВК максимально просто и незатейливо:

Записавшихся было больше 120 человек! Мы к такому наплыву готовы не были. Более того, к нам (организаторам) начали подходить студенты на территории кампуса (прямо на улице!) с вопросами про кружок.

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

Афиша

Оказалось, что если пост не сопровождается картинкой, он воспринимается как что-то незначительное и не важное. Помните как на заре Вконтакте в ленте новостей самой интересной была часть про то что кто-то обновил строку в статусе? Вот в 2020 всем плевать что у тебя в статусе. Важны новости! А новости - они всегда с картинками (Пикчер бог!)

// Подробнее о том как и зачем нужна картинка в посте можно почитать вот тут:

https://parasitelab.com/ru/blog/post-illustrarion

https://texterra.ru/blog/tonkoe-iskusstvo-podbora-kartinok-dlya-postov-v-sotssetyakh.html

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

Мы решили добавить афишу. Незамысловатую, с лого кружка, красивой картинкой компа со стоков (https://www.flaticon.com/authors/freepik) и краткой выжимкой самого важного: где, когда, о чем будет занятие.

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

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

Я не умею рисовать, как мне

Подобрать цвета

Не углубляясь в теорию цвета, важно понимать две вещи:

  • каждый цвет вызывает свою ассоциацию

  • одни цвета лучше сочетаются друг с другом, другие хуже

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

Как последнюю хотелку отобразить в цветах и дизайне? Обычно профессионалы говорят что-то про визуальную насмотренность, tone of voice и тому подобное. Но это ж не IT way, да?

Задачу визуальной насмотренности вполне можно (на базовом уровне) переложить на машину. Например зайти на pinterest.com и вбить education design и посмотреть: а как делают это самый дизайн другие (настоящие дизайнеры)?

Целые тренды видны прямо невооруженным взглядом:

Что отсюда, прямо с первых элементов выдачи можно выделить?

  • простые геометрические формы

  • яркие, сочные цвета

  • декоративные элементы в виде книг, графиков, мозгов, колбочек наука!

  • фотки и иллюстрации персонажами-учащимися (часто - дети)

Для сравнения давайте попробуем поискать дизайн для блога о моде?

Сразу бросается в глаза:

  • пастельные бежевые/розовые цвета

  • блочная струкура

  • большие (модные) фотографии с людьми занимают места столько же, сколько и текст (а то и больше)

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

Итак, мы поняли, что оставаться в приглушенной гамме темно-синий + бордово-кирпичный нам не подходит, и решили что надо эти цвета обновить на более сочные оттенки. Но как это сделать? Тыкаю в RGB палитру и получается какая-то грязь, бордово-кирпичный и то выглядел лучше! :С

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

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

https://color.adobe.com/ru/create/

https://coolors.co/

https://www.materialpalette.com

https://colordrop.io

https://colorhunt.co

https://www.culrs.com/#/

https://www.designspiration.com/palette/8E39EF-3626AF-3169D1/

Подобрать шрифты

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

По большей части надо уметь различать два типа шрифтов: Антиква (шрифты с засечками) и Гротеск (шрифты без засечек).

Иллюстрация из очень емкой статьи на Нетологии: https://netology.ru/blog/razbiraemsya-v-osnovakh-tipografiki-za-10-minut

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

http://personeltest.ru/aways/creativemarket.com/creativemedialab/4752253-Losta-Masta-Playful-Serif-Familyhttps://creativemarket.com/creativemedialab/4752253-Losta-Masta-Playful-Serif-Familyhttp://personeltest.ru/aways/creativemarket.com/EllenLuff/4131865-Hackney-SVG-Bold-Hand-painted-Font https://creativemarket.com/EllenLuff/4131865-Hackney-SVG-Bold-Hand-painted-Font

Шрифтов дофига и больше и выбрать их и скомпоновать не просто наука, а целое искусство!

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

Есть несколько простых советов как не облажаться в край:

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

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

  • Шрифты с засечками выгодно смотрятся в качестве заголовков, добавляя тексту деловитости и аккуратности, вы только гляньте:

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

http://personeltest.ru/aways/meduza.io/https://meduza.io/http://personeltest.ru/aways/www.vogue.ru/https://www.vogue.ru/
  • Если совсем плохо и в глазах уже рябит попробуйте выбрать сочетание из уже готовых пресетов. Например из сервиса http://femmebot.github.io/google-type/ где подобраны пары из библиотеки GoogleFonts, или воспользоваться сервисов Font Combinations от Canva, который подберет выгодную пару для основного шрифта (https://www.canva.com/font-combinations)

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

  • Используйте шрифты из библиотеки GoogleFonts (https://fonts.google.com) для любого использования кроме продажи этих шрифтов (третьим лицам) они полностью бесплатны и безопасны, многие из них даже Open Source

  • Можете купить себе шрифт в собственное пользование, прочитав внимательно лицензию. Например на ресурсе https://www.paratype.ru правила как можно использовать каждый отдельный шрифт даны максимально прозрачно:

  • Есть большая библиотека с бесплатными шрифтами https://www.fontsquirrel.com, но авторы не несут ответственности, если вдруг там лежит шрифт, который нельзя использовать коммерчески :) Так что на каждый шрифт внимательно читайте лицензию, а еще лучше погуглите и почитайте ее на ресурсе автора

  • Если вы пользуетесь каким-нибудь сервисом-контентмейкером, например https://www.canva.com или https://crello.com, то можете быть уверены, что все доступные вам во внутренней библиотеке сервиса шрифты (и другие ресурсы) предоставляются на правах лицензии самого сервиса. То есть если канва разрешает вам использовать созданные на платформе материалы в коммерческих целях значит вы можете использовать все ресурсы этой платформы для создания этих материалов. Выкачивать шрифты и использовать их отдельно нельзя :)

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

  • Старайтесь не скачивать шрифты из всяких ресурсов типа беспланые шрифты и т.п. Как правило там выложены шрифты, которые demo или free for personal use only. Если вы хотите на этом делать брендирование лучше не надо.

Мы для своего кружка подобрали вот такие шрифты:

Яркий, выделяющийся заголовок с четкими геометрическими очертаниями; похожая по настроению Proxima Nova для основного текста; и наконец моноширинный JetBrains Mono чтобы подчеркнуть нашу принадлежность к программированию для небольших заметок на полях (прямо как комментарии в коде!).

Нарисовать логотип

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

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

Помимо этого, на том же envato или creative-market есть целые паки-конструкторы для создания логотипов, состоящие из декоративных элементов, иконочек и композиций. Снова будьте внимательны к лицензиям и пунктам про commercial use. Ну и конечно не продавайте эти паки третьим лицам, это в любом случае моветон :)

Простые и беспроигрышные варианты для создания логотипа:

  • название бренда красивым шрифтом. Главное чтобы этот шрифт попадал в настроение всего остального :)

http://personeltest.ru/aways/vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipovhttps://vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipov
  • Иконка и подпись. Выбирайте такую иконку, которая вам понравится сама по себе и напишите рядом свое название вуа-ля! Если иконка еще будет нести какую-то метафору вашего бренда, то вообще хорошо

http://personeltest.ru/aways/vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipovhttps://vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipov
  • Если хочется иконку без текста, то попробуйте сделать аппликацию из готовых иконок или их частей. Получится точно что-то уникальное!

http://personeltest.ru/aways/vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipov https://vc.ru/design/87430-logotipologiya-probuem-razobratsya-s-vidami-logotipov
  • Для самых креативных есть вариант создать композицию (или воспользоваться готовой) из нескольких шрифтов и декоративных элементов. Это необязательно иконка, а например горизонтальная черта, разделяющая название бренда от всяких ООО и est.1969

Но где взять иконки?

Вам несказанно повезло, что в 2020 году случился трендовый бум на паки иконок :) Художники со всего мира берут и делают open source паки, выкладывая их в общественное и бесплатное пользование!

Искать их довольно просто:

  • https://freebies.bypeople.com курируемая коллекция подобных паков. Можно найти почти все что угодно

  • Figma Community https://www.figma.com/community библиотека открытых коллекций и дизайн-систем прямо в Figma

  • Ищите по запросу open source например: open source icons. Пример с выдачи: https://feathericons.com коллекция минималистичных иконок которые легко экспортируются хоть в png, хоть в css. Используя open source ресурсы вы не только не напоритесь на сложности с лицензией (ведь наверняка с нюансами MIT и CC вы уже давно знакомы), но и прослывете современным человеком ?

  • на dribble и подобных сайтах-портфолио авторы периодически прикладывают ссылку на исходники с фразой берите кто хотите

Мы в итоге вдохновились и нарисовали свою иконку, довольно простую: на основе предыдущего лого добавили внутрь круг, поделенный на сектора по степеням двойки. Ну вы поняли, пополам делили до победного бинарный поиск! :)

Декоративные элементы

Помимо лого и шрифтов остается не менее трудная часть: как все это накидать на белый прямоугольник, чтобы было красиво и информативно? В идеале конечно позвать дизайнера и пусть творит свою магию :)

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

К примеру нам очень понравился вот этот дизайн визитки на Canva:

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

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

Решено было следующее:

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

  • сверху добавили лого и большими буквами категорию афиши

  • в центр положили название в брендовых цветах и картинку (если есть)

  • под названием - краткое описание

  • и в самом низу баннер с датой мероприятия

Порой выходит перегружено или кривовато, но мы и не претендуем на дизайнерские изыски :)

Правила хорошего тона

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

Все довольно просто:

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

  • если очень хочется обыграть все-таки известные мотивы (например мой канал называется Apple Cola for DiCaprio и рассказывает об истории газировки на кухнях офиса Apple в фильмах с Лео) -- то можно попытаться подобрать подходящую метафору или же стилизовать защищенные материалы (сделать коллаж, применить фильтры, запилить мем и тп)

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

  • старайтесь не копировать айдентику других брендов подчистую. Во-первых вас начнут путать, во-вторых это просто невежливо (вспомните abibas!) Лучше присмотритесь: что делает эту айдентику привлекательной именно для вас? Наличие числа 3? Метафора элитности? Поняв что именно вам нравится в этом дизайне больше всего, попытайтесь обыграть эту тему на свой лад

Дизайн-система

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

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

  • создали компанию

  • сформировали фирменный стиль, чтобы все цвета и логотипы были под рукой

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

В целом то же самое можно спокойно провернуть например в Figma: наш первый вариант редактируемой афиши под разноразмерный экспорт был собран именно там:

Вместо заключения

В целом то что у нас получилось можно охарактеризовать как-то так not great, not terrible Однако самая главная цель безусловно была достигнута!

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

Добавив одинаковую айдентику во все свои материалы, мы привлекли больше внимания к нашим собственным материалам. И хоть после не значит из-за, нам все равно приятно, что теперь у нас все такое красивое :) И может быть к следующему мини-проекту мы сделаем что-то еще более красивое!

Где искать вдохновение?

https://www.pinterest.ru - виртуальная доска для визуальных заметок. Понравилась картинка - сохрани на доску! Пинтерестом удобно пользоваться чтобы посмотреть как делают другие, что принято, какой у индустрии tone of voice и все такое. Однако помните, что использовать материалы оттуда нельзя, ведь это всего лишь приложение для ведения визуальных заметок, а не маркетплейс

https://dribbble.com - один из лучших сайтов с дизайнерскими портфолио. Туда приятно заходить чтобы посмотреть чем хвастаются друг другу профессионалы. Заодно почерпнуть для себя какие-нибудь приемы :)

https://designstack.ru - курируемая коллекция сайтов для дизайнеров. Такой отечественный аналог freebies.supply :) У ребят еще есть очень классный паблик в VK: https://vk.com/designstack

Подробнее..

Планшет как жанр как я познакомилась с Huawei

14.05.2021 12:21:34 | Автор: admin

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

В 2017 году я решила поехать в Финляндию, в местечко близ Миккели, и подумала, что неплохо бы там нафотографировать красивого и написать пару статей. На горе себе я купила Irbis: клавиатура моментально поцарапала экран, он был без слота для симки, а аккумулятор приказал долго жить и отказывался работать без розетки. Цифровой котейка сохранился могу подарить любому желающему. Может, сейчас Ирбисы стали лучше, но тогда я прокляла день, когда зашла в магазин. Но намедни произошло тут со мной нечто хорошее. Короче говоря, если есть тут люди из племени копирайтеров-дезигнеров, то я вам, кажется, "покушоц принёс" (с).

Планшет из СтарТрека - ну, типа того у меня и было в первый разПланшет из СтарТрека - ну, типа того у меня и было в первый раз

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

Цена

Поскольку девайсина мне досталась с чужого плеча, в первую очередь я погуглила цену. Не, ну правда: а я бы вот это купила? Итак, Huawei MatePad с тушкой в 10.4 дюйма стоит примерно 25 килорублей. Честно говоря, по первой мысли: не купила бы, дороговато. Но это я, у меня смартфон Redmi A1, без NFC-модуля 2016 года рождения, три копейки в базарный день. Так что не стоит ориентироваться на мою жмотническую натуру, цена вполне разумная. И потому вторая мысль была: да, купила бы. И во втором мнении утвердилась после недели работы на планшете.

Снимала на Redmi, качество - жуть жуткая. А на самом деле у Huawei не картинка, а мечта.Снимала на Redmi, качество - жуть жуткая. А на самом деле у Huawei не картинка, а мечта.

Комплектация

Изначально в коробке должно было быть всё, но голова от зарядки была, а шнурка нет. Понятно, что в магазинной версии есть всё. Зато к планшету отлично подошел шнур type-С от смартфона. Зарядился планшет за ночь полностью, и стал открыт для ковыряния, но 10-ваттная зарядка - это, конечно, маловато. Зато заряд при активном использовании планшета держится три дня (большой объем батареи - 7250 mah), а с учетом того, что я питаю свой старенький смартфон каждую ночь, это, я вам скажу, недурно. Кстати, только что я обнаружила, что шнур-таки был, просто в упаковке - в коробочке. Это просто я - дятел :)

Конечно, в инструкцию я заглянула уже после того, как вдоволь полазала в гаджете, но, в целом, ничего в ней, этой инструкции особенного и нет: комплектация и инструкция, как вставлять симку. А, из смешного: поскольку в планшете нет гнезда наушников, оно прилагается в отдельном пакетике в виде шнурка C-jack headpbones. Звук, кстати говоря, отпадный чистый, глубокий, это я вам как человек с пониженным восприятием басов говорю: в первый раз за долгое время послушала Крэнберриз с наслаждением: потому что, Harman/Kardon, звук как у колонок JBL, четыре динамика.

Железо и софт

Работает стабильно, не тормозит, и понятно, почему: 8 ядер в процессоре, 4 Gb оперативки, производительность поболее, чем у моего пятилетнего ленововского лаптопа. Поиграла на нем в Fornight отлично, залипла даже слегка, потому что экран откалиброван практически идеально. Почитать книжку тоже можно, и даже нужно: на смартфоне, когда читаю, даже на ночном режиме, у меня скукоживаются и вытекают глаза. А тут можно и в кровати почитать (потому что лёгкий), и глаза расслаблены. Ну, насколько это возможно при чтении вообще. В планшете есть такой режим электронная книга - сугубо рекомендую любителям многостраничных ЛитРПГ. Понравилось, что есть режим защиты зрения, поскольку глаза и так устают от компа 24/7. Из маленьких приятностей есть Kirin 810NFC.


Через Aurora Store скачала те сервисы, что мне были нужны, установилось все нормально планшет не грелся. Вёл себя как заинька. YouTube vanced порадовал меня отсутствием рекламы, а сам планшет тем, что ничего не тормозило! Я так порадовалась этому обстоятельству, что даже посмотрела от начала до конца Разрушитель со Сталонне, хотя поначалу хотела просто проверить качество видео. Если часто путешествуете и в дороге смотрите фильмы, то, кажется, Huawei MatePad one love, one choice.

Chrome летает, нареканий нет. В Серпухове и Смоленске я подключила Google Maps, ну и все отлично работало, опять же без тормозов, в то время, как родной Redmi с Яндекс.Картами чуть не довел меня до слёз: не, ну реально, я крутилась у памятника Чехову как волчок, пока наконец смартфон милостиво не подгрузился. Планшет на том же Билайне показал себя гораздо лучше. А ещё у него металлический корпус, что добавляет уверенности в будущем. Во всяком случае, в его, планшета, будущем.

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

Юзабилити

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

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

Вот коптер, дешевый, но вполне себе летающий. И готовый в общению с планшетом.Вот коптер, дешевый, но вполне себе летающий. И готовый в общению с планшетом.

Безусловно, у меня возник вопрос: если Huawei MatePad такой хороший, почему его отдали? Ответ меня насмешил: он не влезал в дамский рюкзачок. Ну, факт, да, в рюкзачок он не влезет, как не влезет в клатч и дамскую сумку. Но, упакованный в чехол с клавиатурой, вполне комфортно себя чувствует в городском рюкзаке и шоппере. Чехла я на него не нашла, а потому, опасаясь крошек от печенек, носила красавца в боковом кармане рюкзака. Один раз он у меня упал и хоть бы хны.

Почему носила, а не ношу сейчас? Планшет я отдала маме, ей он оказался нужнее: крупный экран, удобно играть в Candy Crush (кому что нравится, не осуждайте), понятный интерфейс. Но Huawei MatePad, как по мне, не только для старых и малых в нём есть всё, что надо, крупные яркие иконки, чистый экран, можно подгрузить много полезного, легкий и прочный. Вещь особо годная для тех, кто работает с соцсетями и контентом, с чего я и начала разговор. Я лично девайс оценила: как по мне, это 4,5 из 5, и то только потому, что на 5 я ещё ничего не встречала, но, как говорится, нет идеала в этом мире.

Подробнее..

Три проблемы удаленной работы личный опыт от разработчика до менеджера

18.11.2020 18:12:16 | Автор: admin

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

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

Введение: зачем нужна эта статья

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

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

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

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

Проблема #1: удаленка и недостаток общения

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

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

Решение

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

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

Проблема #2: мотивация и стимулирование роста удаленных сотрудников

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

Со старичками-удаленщиками список проблем примерно такой:

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

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

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

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

Решение: гибкость процессов и открытость со стороны менеджеров

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

Проблема #3: борьба с выгоранием

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

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

Решение

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

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

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

Заключение

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

Подробнее..

Как ролевые игры помогли мне стать техническим директором

18.06.2021 18:20:53 | Автор: admin

Как построить успешную IT-компанию, которая:

  • Делает топовые проекты по производительности и безопасности?

  • Работает на федеральном уровне и зарубежных рынках?

  • Имеет одну из лучших систем организации труда?

  • Подготовила сотню специалистов, которые вышли на IT-рынок?

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

Когда я слышу про коучингКогда я слышу про коучинг

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

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

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

Итак, 10 лет я отработал техническим директором. 10 лет! Я начал работать до появления инстаграма, чтобы все понимали.

Люди до появления инстаграмаЛюди до появления инстаграма

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

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

От интернет-магазина одежды, до угольной ГГИС. От нагрузки в полтора землекопа до онлайна в 10 000 человек. Когда-то давно нам хватало VPS для всех наших проектов на продакшене, сегодня мы управляем серверной группой на более чем 50 серверов.

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

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

Тема, с которой я решил начать выбрана осознанно. Я настолько наладил бизнес, что я у меня появилась возможность заниматься хобби. И в августе 20го года я снова открылклуб ролевых игр, как делал это 13 лет назад. Конечно же, эта статья в том числе и реклама клуба. Но не только! Поскольку именно с ролевого клуба я начался как управленец про это я сейчас и расскажу.

Что значит быть техдиром?

Если мы говорим о предпринимательстве, а значит изначально малом бизнесе, то должность ты получаешь примерно следующим образом: Так, кто у нас здесь больше всех шарит в программировании? Ты? Будешь техдиром!

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

  • Первый уровень: я отвечаю за программирование.

  • Второй уровень: ого, я ещё участвую в продажах. От того, что я говорю и делаю - зависит продажа.

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

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

Мне для того, чтобы дойти до 4го уровня потребовалось много лет по моим расчётам около 7. Не могу сказать что это слишком медленно, поскольку очень много моих бывших коллег до этой истины вообще не доходят. Чаще всего люди прочно застревают на втором. У этого есть следующие причины:

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

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

3. Управленческая импотенция.Директор - это в первую очередь про управления людьми. Естественно не каждый программист может и хочет это делать.

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

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

Ох уж эта нелегкая доля менеджераОх уж эта нелегкая доля менеджера

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

Причём здесь ролевые игры?

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

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

Джейми Ланистер, косплейДжейми Ланистер, косплей

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

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

Данжен. Самые известные в мире задроты играют в D&DДанжен. Самые известные в мире задроты играют в D&D

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

Лангедок. Игра по Чикаго 30х. Томск, 2009 годЛангедок. Игра по Чикаго 30х. Томск, 2009 год

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

Полевая игра. Ведьмак 2019 года, НовосибирскПолевая игра. Ведьмак 2019 года, Новосибирск

Кстати, недавно в Томске прошел боевой турнир по фехтованию между двумя клубами:Черный Отряд и Химера.

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

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

Понимание людей

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

Однако вернёмся к типажам и схожим действиям. Развернём эту историю подробней. Я не ученый и, к большой моей радости, не психолог. Я понятия не имею как это всё называется по научному и наверняка где-то это описано. Мне не довелось читать этих умных книжек (кстати, может кто посоветует). Однако, представим что у нас с вами есть два человека: студент Петя и Иван Федорович.

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

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

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

Организационный опыт

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

  1. Создать для него условия.

  2. Объяснить ему, что надо делать.

  3. Разработать критерии выполнения задачи.

  4. Организовать контроль критериев.

  5. Делегировать всё это на соответствующих сотрудников, с каждым из которых надо проделать первые четыре пункта и завязать их друг на друга, через различные организационные мероприятия.

  6. Периодически мониторить эту систему из людей и чинить где надо.

И это я ещё работу с начальниками не описывал! Там вообще отдельная песня.

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

Уверенность в себе

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

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

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

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

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

Испытательный полигон

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

Итого

Конечно, вступив ролевой клуб вы не становитесь автоматически техническим директором. Для этого как минимум надо иметь ещё технические навыки :)

Однако давайте представим, что вы получаете:

  1. Понимание людей, как и почему они действуют.

  2. Организационный опыт.

  3. Уверенность в себе.

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

Конечно, не каждый клуб подойдет для этого! А только специально подготовленный присоединяйся Клуб исторического фехтования Черный Отряд [ссылка на группу ВК удалена модератором как рекламная].

P.S. Недавно завел инстаграм, там будут еще мысли и замечания по теме. Хотя иногда там посты про то, как мы в офисе стреляем из арбалета.

Подробнее..

Год на удаленке глазами одной команды. Как это было, итоги и планы

08.04.2021 12:19:54 | Автор: admin

Привет, меня зовут Сергей Раков, я руководитель B2G-направления в ИТ-кластере Ростелекома. 23 марта 2021 года мы отметили год, как полностью работаем в удаленном режиме. За этот год мы в значительной степени пересмотрели наши процессы и решили ряд нетипичных проблем.

by Radik Zby Radik Z

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

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

Как искали место для общения

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

Решением для нас стал Discord попробовать его предложил мне один из членов команды. Сначала я относился скептически к этому сервису, т.к. до этого у меня не было опыта работы с ним свою игровую карьеру я закончил до появления вышеуказанного приложения :)

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

Work(&/or)life balance

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

Для сохранения баланса между работой и личной жизнью кто-то начал жестко следить за временными рамками рабочего дня, а кто-то начал более гибко планировать свой рабочий день. Среди этих ребят был и я. Мы начали применять методику из книги Getting Things Done (Как привести дела в порядок) Дэвида Аллена. Она помогла нам все задачи держать в фокусе, ничего не забывать и меньше тратить время на переключение между ними. Удаленка нам показала, что изменения это хорошо. И я понял, что развития без изменений не бывает. В целом, команда научилась более гибко планировать рабочий день и сейчас бОльшая часть команды не хочет выходить обратно в офис.

Схема Getting Things Done, SkillboxСхема Getting Things Done, Skillbox

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

Промежуточные итоги

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

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

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

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

Сейчас ИТ-кластер постепенно переходит на гибридный формат работы, и командам разрешили выбрать наиболее удобный формат работы:
- 3 дня в офисе / 2 дня дома;
- 2 дня в офисе / 3 дня дома;
- 1 день в офисе / 4 дня дома
- полностью на удаленке.

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

Подробнее..

EPAMAnywhereкакэтоработает.Субъективный взглядизнутри

26.05.2021 18:20:11 | Автор: admin

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

Кто я и чем занимался ранее

В тестированиия уже более четырех лет. Карьеру начинал в e-commerceпроекте интернет-магазине, который специализировался на продаже компьютерных комплектующих. У нас был маленький, носильныйИТ-отдел, который состоялиз двух разработчиков, проектного менеджера, бизнес-аналитика и тест-инженера меня. Мы разрабатывали монолитную e-commerceсистему на .NET.Там с нуля построил процессы контроля качества начиная с документации, заканчиваявнедрением регрессионного тестирования, сбора метрик ит.д.

Спустя два года такой работы, когда теоретические знания получили развитие в виде практических навыков, я решил идти дальше за новым опытом.Так я попал в одну из крупнейших сервисных ИТ-компаний в Украине на позициюMiddle/JuniorTestEngineer, где вместе с командой работалв доменеAssetManagement, разрабатывая программное обеспечение, которое собирало данные сразличных станций возобновляемой энергии.Там я проработалпочти двагода,за это время вырос до позицииTestLead, курировал несколькопроектов, которыесоздавалисьраспределеннымикомандами.

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

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

Почему фриланс не мой вариант

Да, мои ожидания могла бы удовлетворить работа на фрилансе.Однако ранее я уже имелопыт с фриланс-площадками. Результатом, мягко говоря, остался разочарован. И вот почему:

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

  • Инструменты для контроля.Если заказчик оказался адекватным, тебя можетожидать еще один существенный нюанс контроль за ходом работыииспользованиесофта, который отслеживает твою рабочую активность. Нет, я не хочу сказать, чтоконтроль этоплохо. Клиент платит деньги и имеет полноеправонаблюдатьза ходом продвижения проекта.Однако иногда это стремление к контролю приводит к ряду недопониманий.Например, работа тест-инженера не связана с постоянным взаимодействиемс клавиатурой и мышью, на что заточен контролирующий софт, снимающий данные о количестве нажатий кнопок на этих манипуляторах.Так,50-60% работы тест-инженеразаключаются ванализеинформации, разработкетактики тестирования, выстраиваниигипотез, чточастоне связано с активным взаимодействием с ПК.Соответственно по итогу своей работы ты получаешь низкий рейтинг, хоть проект и был выполнен в полном объеме. Заказчику, конечно, все это невсегданравится, что негативно влияет на итоговыйрейт.

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

Уверен, сейчас ситуация с фриланс-площадками обстоит лучше. Но, учитывая описанный опыт, возврат к работе на фриланс-модели я оставил на самый крайний случай. Как оказалось не зря, ведьальтернатива нашла меня сама.

Внезапное появление альтернативы

Парадоксально,но об EPAMAnywhereя узнал благодаряновойфриланс-площадке6nomads, на которую меня пригласилзнакомый изLinkedIn.Чисто из любопытствая прошел довольно длительную процедуру регистрациина этой фриланс-платформе, добавил к профилю несколько видео с самопрезентацией,скрупулезнозаполнил информацию о своих навыках.

Спустянекоторое время черезпрофиль на 6nomadsсо мной связалась рекрутер EPAM и предложила рассмотреть интересную для меня позицию, но ужев рамкахEPAMAnywhere.

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

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

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

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

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

Забегая наперед,скажу, чтонедавнои сам подал заявкуна участие в программе подготовкиСПП.

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

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

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

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

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

Как работать и взаимодействовать и работать с командой на полной удаленке

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

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

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

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

Вот пример подходов, которым мы следуем, чтобы работать сплоченно на полной удаленке:

  • ссамого начала договорились включать камеры во время всех встреч;

  • отдали предпочтение онлайн-встречамвместо переписок в почте и чатах;

  • каждый из нас вышел на системный график работы;

  • регулярно проводим звонки для неформальных посиделок и обсуждения самых разных вопросов.

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

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

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

Над чем я работаю сейчас

Сегодня мояосновная задача следить, чтобыqualitygateнашего проекта соответствовал заявленным требованиямзаказчикаиз сферы на стыке e-commerceиretail.Наша команда работает над тем, чтобы исследовать и внедрить в проектлучшиеaccessibility-практики продукт клиента должен быть доступен для людей с ограниченными возможностями.Проект интересен как с социальной точки зрения, так и с технической для работы над нимнеобходимо использовать новые для меня подходы итехнологии(AdobeExperienceManager, технологии, связанные собеспечениемaccessibility, новые библиотеки,связанныес ним).Конечно, какTestLeadя отвечаю за контроль и менеджмент команды, ее обучение и рост, отчетность перед заказчиком, взаимодействие с разработчиками, функциональное тестирование.

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

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

Самая интересная часть текста. Плюсы и минусы платформы от EPAM

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

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

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

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

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

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

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

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

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

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

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

Итоги и дальнейшие планы

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

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

Хотел бы я вернуться к офисной работе? Скажу однозначно и искренне нет.

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

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

Буду радобщению и вопросамв комментариях.

Подробнее..

Эксперименты с тиграми и другие способы преподавать программирование студентам, которым скучно

03.11.2020 10:17:48 | Автор: admin
image

Привет, Хабр! Я Маша, старший инженер-разработчик iOS в КРОК и аспирант на кафедре Прикладной математики и Искусственного интеллекта в московском вузе. А еще я уже четыре года преподаю. Два года назад мы с коллегами с кафедры, преимущественно аспирантами, основали кружок спортивного программирования, который вырос в большое IT-коммьюнити в стенах универа, где мы делимся разного рода знаниями со студентами.

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

Первый ужас я испытала на первом же занятии со студентами. Одна группа не могла привести ДНФ в КНФ, другая не смогла даже общим усилием воли вспомнить таблицу истинности для конъюнкции и дизъюнкции. Третья не понимала как программно устроены списки (это у нас проходят годом ранее). А потом я вспомнила себя про мой курс преподы говорили то же самое. И про курсы до нас, и про курсы после меня. И школьную учительницу Ольгу Николаевну вспомнила: В этом году класс еще слабее, чем в прошлом если так пойдет и дальше, вернемся к жизни на деревьях!. В школе мне казалось, что это такой изощренный педагогический прием, который должен подхлестнуть нас учиться усерднее чтобы доказать, что мы лучше чем кажется. Ошибалась.

Решили мы с коллегами порефлексировать а почему так происходит? Результаты, наши грабли и опасные эксперименты с тигром под катом!

За что я так с ними? За что они так со мной?


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

Тут мне подумалось, что, кажется, дело не в студентах. И вовсе даже не в их старательности или умненьковости. Возможно, что дело и не в преподавателе А в чем тогда?

Так началось мое грандиозное расследование.

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

image
Вечером после рабочего дня. Кайф.

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

image
image
Фидбек от студентов

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

Первый фактор очень забавно выглядит со стороны препода. Это нам с вами понятно, что есть всякие там фронтенд, бэкенд, фулстек, а студенты что слышат? IT круто!, машинное обучение будущее! В итоге выходит, как в этом забавном твите у Брагилевского:

image
Виталий Николаевич плохого не скажет (ну разве что иногда и в шутку)

А вот второй фактор занимателен сам по себе. Студенты, если честно, не делают ничего предосудительного, даже наоборот. Они стремятся оптимизировать свои ресурсы, и делают это очень даже эффективно! Представьте, что чтобы получить Х, у вас есть два пути: вложить очень много сил и времени или воспользоваться уже готовым рабочим решением. Какой вы выберете? А если речь про сдачу экзамена по профильному предмету?

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

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

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

И все мы страдаем от глобального:
программа устарела и не поспевает за развитием области (и мотивацией студентов)
когнитивной нагрузки слишком много

Что по мотивации и программе?


Кто раньше шел учиться на кафедры прикладной математики? Увлеченные школьники-олимпиадники по физике и математике. Еще раньше члены кружка радиолюбителей. Я клоню к тому, что это были ламповые нерды люди, которым действительно интересна наука и сложные задачи.

Сегодня IT это хайп. Просто для сравнения: вы давно видели агитацию становиться ветеринаром? А инженером-энергетиком? А врачом? А вот в IT зазывают буквально на каждом углу!

image
Да дайте уже позалипать в соцсеточки!

Более того, IT это не просто реклама перспективности. IT буквально вокруг нас. Для современного студента быть программистом все равно что быть ветеринаром для смартфона (так видит мою профессию шестилетний племянник).

Зачем абитуриенты шли в IT двадцать лет назад:
интересные задачи!
много математики!
можно проектировать схемы и делать роботов!
можно написать свой язык программирования!
можно писать пРоГрАмМы!

Зачем абитуриенты идут в IT сегодня:
многа деняк!
хочу писать видеоигры! Это же весело, да?
хочу делать крутые продукты и делать жизнь людей проще! (это приложение Х такое , я бы сделал лучше если б умел!)

Что они получают?
задачи
математику
проектирование схем
теорию построения трансляторов

погодите, а видеоигры где?

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

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

Компетенции айтишника
Ассоциация вычислительной техники начиная с шестидесятых годов совместно с ведущими профессионалами и научными сообществами в области Computer Science выпускает руководство под названием Computing Curricula (СС).

Не буду пересказывать что там, есть отличный перевод на русский издания 2001 года от СПбГУ. Сейчас важно другое: разница между изданием 2001 года и 2013 (актуальная на данный момент версия, 2020 готовится к изданию).

Knowledge areas это области знаний, которые CC выделяет как необходимые для получения компетенции. Говоря о компетенции, мне больше всего нравится определение, которое дается в IT2017: Competency = Knowledge + Skill + Disposition [CC2020]

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

IT competencies that is, what students know, how they demonstrate performance, and how disposed they are to apply what they know. [IT2017]

Так вот за 12 лет количество этих Knowledge Areas, которые необходимо освоить чтобы стать программистом, выросло на 4 штуки! А другие две области и вовсе переформулировались и объединились с другими (новыми).


Когнитивная нагрузка: это who?


Теория когнитивной нагрузки (Cognitive Load Theory, CLT) появилась в поздних восьмидесятых в рамках когнитивной психологии. Вкратце, эта теория описывает использование рабочей памяти человека и трудности, которые могут возникать в этом процессе. Значительная часть этой теории посвящена изучению вопросов обучения и обучаемости.

Если не вдаваться в подробности, то CLT постулирует мысль о том, что объем рабочей памяти ограничен и его переполнение может вызывать сильные провалы в производительности (да, аналогия с ОЗУ тут вполне прямая).

TED Talks про CLT для тех кто любит смотреть и слушать,
статья в журнале Learning and Instructions для тех любит читать!


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

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

Что мы делали и что получили: факапы, интриги, расследования


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

Автомат за курсеру/литкод


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

Схема была озвучена такая: проходишь три курса из специализации Яндекса по С++, в личной беседе доказываешь преподавателю, что ты реально слушал, а не прокликал (отвечаешь на вопросы, решаешь задачи: как на техническом интервью) получаешь автомат за курс Теория Графов и Комбинаторики (ТГиК).

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

В итоге выяснилось, что подавляющее большинство задачи списали. Кто из интернета, кто друг у друга. Часто попадались вот такие забавные ситуации:
image
DiffChecker довольно наглядно показывает, что код был списан

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

После защиты нескольких таких задач автомат подтверждался. Однако было и ограничение. За одну пару можно решить две средненьких задачи. Если не решает отправляется с этими задачами домой. На следующей паре объясняет решение этих + получает на решение в классе еще одну. Если после трех таких попыток студент все еще не решил ни одной задачи в классе (в реальном времени) автомат ему не ставим. Ибо не надо DDoS-ить препода! В итоге автомат по этим правилам получило 3-4 человека из 50 (две учебные группы).

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

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

image
Отзывы студентов

Результат:
  • в погоне за одобрением студентов и модными подходами мы упустили пользу: кажется, что курсера и литкод не помогли ребятам разобраться в теории графов
  • зато одобрение догнали: получили много отзывов, что кому-то было приятно учиться по-современному, а кому-то курсера/литкод здорово помогли развить скилл программирования в целом (по данным нашей институтской курсеры белый пояс по C++ прошли 40 студентов, а еще 20 следующий уровень. А в общем 350 курсов и более 500 студентов!)

Проектирование когнитивно-простых тестов


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

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

сдаешь все 5 контрольных работ по ключевым темам -> молодец, допускаешься до экзамена!
не сдаешь -> не допускаешься \_()_/, иди пересдавай пока все не сдашь!
очень хотелось отучить студентов списывать: отбирали телефоны пока они писали контрольную (в прозрачный контейнер на преподском столе). О таком порядке проведения контрольных было сообщено заранее. Любого, кого поймали с телефоном, отправляли на пересдачу к/р.

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

image
Вариант с заготовленными ответами для преподавателя

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

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

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


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

Участие в командной разработке в GitLab: issues, merge requests, pipelines


Когда случился локдаун, очные занятия и КМ по ТМВ надо было как-то срочно перевести в дистанционный формат. Мы решили делать так:
тем, кто успешно сдал КМ до локдауна, дополнительно ничего сдавать не надо
для остальных был сооружен RegLang Calculator.

RegLang Calculator это проект на Kotlin (хотели актуальных технологий вместо LISP ну и пожалуйста!), в котором студентам было нужно наполнить алгоритмами 5 языковых конструкций (например, проверить, может ли регулярное выражение определить слово в языке). Для каждой задачи были описаны методы и их семантика (входные и выходные данные). Студентам предлагалось пойти и зарезервировать за собой задачу комментарием:

image

Дальше процесс шел как обычно:
1. студент создает issue
2. решает задачу
3. отправляет MR на code review
4. если все ок, MR мержится и закрывается, если нет студент возвращается к шагу 2

master ветка естественно была protected, все студенты были помечены ролью developer. Работа предполагалась в одном репозитории, так как на объяснение форков ушло бы слишком много времени, а мы и так потратили целое занятие на объяснение гита и гитлаба. Еще был ридми с подробным планом действий:
image

Был и пайплайн сборки, который проверял:

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

image

Некоторые студенты начинали DDoS-ить препода вопросами (прямо как на скрине в начале статьи). Для них пришлось ввести прогрессивную шкалу: чем больше вопросов тем больше интервал между ними.

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

Результат:
  • студенты научились работать с гитом через пот и слезы однозначно плюс! (хотя теперь они нас ненавидят)
  • студенты прочувствовали хотя бы один алгоритм из курса, реализовав его своими руками на незнакомом языке
  • студенты изучили Kotlin, потратив на это минимум усилий (правда, за это они нас тоже ненавидят)
  • студенты не слишком прониклись GitLub и GitFlow на это надо было потратить больше времени. Основной фидбек студентов на гитлаб: ОЧЕНЬ КРУТО, НО НИЧЕГО НЕПОНЯТНО
  • разным студентам понадобилось разное количество итераций code review, чтобы сделать все правильно, но они сошлись в одном: после того, как лабы зачли, никаких правок (даже если оставались unresolved review) они не вносили, даже самые умненькие и мотивированные

Вычисление списывальщиков: mission MOSSible


Для проверки и вычисления жуликов мы открыли для себя и использовали стенфордский алгоритм Moss (Measure Of Software Similarity). По итогу он был реализован как веб-сервис, который прогоняет алгоритм на файлах, которыми в него кидаешь, а потом показывает результаты на веб-страничке. Его код для доступа к сервису написан на Perl, но есть и несколько других community contributions, некоторые перечислены и на странице с описанием алгоритма. О том, как он определяет степень похожести программ, можно прочитать здесь. Небольшая инструкция, как получить ключ доступа и пользоваться перловым скриптом есть здесь. Подробно о том как пользоваться Moss можно прочитать здесь.

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

Подробности по данному вопросу в рамках этой статьи уже too much, но если интересно давайте пообщаемся в комментариях!

У вас было два месяца, чтобы сдать или эксперимент с группой VK и Google Classroom для приема лабораторных по БКП


В сентябре этого года меня снова поставили на Базовую Компьютерную Подготовку (БКП), и я, боясь, что забуду все сроки, которые назвала мне лектор, решила вывалить эту инфу из головы прямиком в закрытую группу VK.

image

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

image

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



Как видите, мне даже лайки накидали, а охват намного шире моих 25 студентов ребята делились со своими однокурсниками (это факт, я видела :))

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

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

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

Коллега посоветовал мне Google Classroom, которым сам пользовался на тот момент уже третий год, и я поддалась искушению.

Classroom это очень прикольная и гибкая штука, которая позволяет:
1. формировать темы с заданиями
2. формировать задания разного типа (в том числе тесты и анкеты)
3. проставлять оценки автоматически на основе критериев оценки работы и аккумулировать их, например, по темам
4. все это работает на базе G-Suite

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

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

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

Проверка работ в Classroom похожа на игру в пинг-понг и работает по следующей схеме:

1. учитель создает задание и оно назначается всем ученикам
2. ученик прикрепляет файлы с выполненным заданием и сдает работу
3. учитель проверяет работу, выставляет оценку и возвращает ее ученику
4. если ученика не устраивает оценка он может внести исправления в свою работу и вернуть работу на проверку учителю (в таком случае на ней появится пометка сдано повторно)

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

Любой, кто преподавал на младших курсах (да и вообще в вузе) знаком с этой ситуацией:

image
Совсем не смешно, между прочим

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

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

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

Результат:
  • снижать когнитивную нагрузку за счет соцсети работает! Но приходится быть админом паблика
  • неотвратимость наказания в виде зафиксированных правил и критериев оценки работы работает! Главное не перегнуть палку, как в предыдущем примере.Это не я злая, это ты задание не выполнил, вот смотри критерии воспринимается намного лучше, чем: я поставлю тебя в сложную ситуацию и потом отругаю за то что ты ничего не смог поделать. Грань действительно тонкая, надо экспериментировать.
  • электронная ведомость очень помогает следить за прогрессом и сложными правилами выставления оценки (круто, если ее можно экспортировать в Google Sheets, например!) не только каждого конкретного студента, но и всей группы в целом. Так, например, я заметила что
  • в этом году группа сдает лабораторки быстрее, чем ребята в прошлом и позапрошлом году. То есть к середине семестра сдано чуть меньше половины всего плана по л/р. Для сравнения в прошлом семестре было чуть меньше четверти.
  • результаты контрольной работы (проводится по классике, на листочках) ощутимо лучше, чем в прошлом и позапрошлом году!

И напоследок


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

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

2. Студентам кажется, что курс занудный и вообще не пригодится:
потратить пару семинаров на объяснение, как им в реальном мире пригодится то, что они будут изучать (это фундаментальная истина, и вряд ли она изменится). Рассказать, в каких продуктах, которые они используют, применяют технологии и методологии курса. Как то, чему вы посвятите семестр, связано с хайповыми темами;
не стесняться периодически напоминать им об этом, и чем разнообразнее тем лучше! (А вот в Mail, а вот в Яндексе, а вот в Google) Очень круто работают ссылки на конференции, где сотрудники рассказывают о релевантном опыте: студенты скорее всего смотреть не будут, но зато точно станут больше вам доверять;
объяснить, что учиться придется всю жизнь, а мерзкая дискретка здорово поможет в будущем учиться быстрее. Потому что на ней строятся технологии X, на которых строятся методологии Y
киньтесь в них для усиления Computing Curricula или любым другим источником, которому доверяете.

3. Студенты DDoS-ят жалобами Я ничего не панимайю и разбираться с этим не хочу:
регулярно просить обратную связь по курсу и не ругать за ошибки. Цель чтобы студенты не боялись признаваться вам, что что-то не понимают. Да, придется стать эджайл-коучем для учебной группы, но что поделать :)
если студент сдался, то попробовать честно с ним поговорить (можно слукавить это не ты ничего не понимаешь, это я плохо объясняю): В какой конкретно момент ты понял, что ничего не можешь решить?, Почему ты решил, что не справишься и ничего не будет работать?, Как я могу улучшить курс, чтобы он стал лучше/интереснее/проще?
поощрять всех и тех, кто хардово работает, и тех, кто еле-еле успевает за программой. Речь не о том, что все дети способные, а о том, что у каждого свой порог входа, и если студент прикладывает усилия он молодец. Есть такие, кому все дается легко от балды их поощрять не надо, это медвежья услуга: сейчас играют навыки, которые он уже получил в прошлом, но так как новые сейчас он не получает, то в дальнейшем споткнется о самое простое. Может и нет, конечно, но в любом случае поощрять надо не оценки, а получение компетенции (в идеале эти метрики совпадают).

image

В комментариях будет интересно обменяться мнениями: какие новые подходы вы обкатываете на студентах (а если нет, то почему), как часто контролируете понимание предмета, как находите контакт с новой группой, что демотивирует ваших студентов и вас?

Студенты тоже присоединяйтесь как справляетесь со своими мудрыми старцами-профессорами? Что полезного они делают с вами и наоборот? Что вас бесит в образовательном процессе?
Подробнее..

Для чего нужна CRM. Личный опыт

07.12.2020 14:17:59 | Автор: admin

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

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

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

Так вот вопрос Как продавать конечно интересный, но это отдельная тема.

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

А как оказалось в действительности?

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

Что из этого получилось

  • Показав директору на третий день свои труды я вдруг узнал что у фирмы нет общей базы. Точнее она есть в 1С, но там кроме бухгалтера ни кто не разбирается. По факту её нет.

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

  • Начал работать по той базе, что мне оставили. И Через неделю или две понял что при интенсивной работе. Когда звонишь с 8:40 и до 18:15 (так просто транспорт подходил, и так и сформировался мой график) начинаешь превращать свою базу в свалку (почему Excel становится свалкой при совместной работе, именно работе, и/или более чем с 200-300 компаниями тема отдельного разговора)

  • Вечера и выходные были заняты поиском решения, помню что долго это происходило. Как-то рандомно наткнулся на замечательное решение CRM. А именно gallopercrm. Меня оно устроило полностью. Потому что было простым и в описании было указано для b2b и для звонков.

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

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

  • Так я и развлекался, звонил, заключал договора, собирал машину на отгрузки в регионы (по 1-2 машины в неделю), пытался контролировать дебиторку (чем до этого занималась только бухгалтерия)

  • И тут настало 10 декабря, появился собственник и дал задачу директору и бухгалтеру год закончился, делайте отчёт по отгрузкам менеджеров. Директор взял под козырёк и за пару дней создал с бухгалтером отчёт. Отчёт кстати мне понравился по количеству и частоте отгрузок, а самое главное по отсутствию глухой дебиторки я (со своей игрушкой) очень заметно опережал коллег-менеджеров. По обороту я явно был в аутсайдерах, мелкие клиенты, отказники и новички были у меня. А элитные клиенты были вычеркнуты из того самого Excel-ика коллегами в первую неделю.

  • После проверки файликов меня и директора вызвал собственник и спрашивает почему у новенького больше всего отгрузок, почти нет долгов по счетам и количество клиентов больше чем у 3 старожилов. Не буду вдаваться в диалог, но через 15 минут после возвращения директор дал мне задачу показать, научить, внедрить, и проконтролировать работу всего отдела продаж в CRM

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

  • Платить мне ни кто очевидно не стал, и я продолжал работать и изучать различные CRM-системы в свободное время.

За первый год работы я понял зачем мне нужна CRM

  • Чтобы не искать в куче бумажек кому и что говорил, не пытаться запомнить когда звонить

  • Чтобы знать кто, как и когда мне отказал

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

  • Чтобы делать отгрузки. Создавать сделки и печатать шпаргалки водителю

  • Чтобы она напомнила мне напомнить клиенту пора рассчитываться за поставку, или что мы будем в его городе и пора купить ещё

  • И ещё много зачем, но принцип думаю понятен.

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

P.P.S. Ровно через год я уволился из первой фирмы, где я начал работать продажником. За два месяца я показал план на год собственнику и директору. В плане было много чего и сделать сайт, и напечатать понятные клиентам брошюры, и форма заказа и подключение телефонии и много ещё чего. CRM там тоже конечно была. Были цифры от бюджетного до нормально варианта, много было помечено сделаю сам, только распечатать, сделаю сам, только купить пользователей и т.п. Собственник сказал хорошо, делай, а директор промолчал.

За месяц до истечения контракта я спросил будем делать?. И получил ответ нет не будем, нет денег, делай всё что можно бесплатно, потом посмотрим.

В общем, через месяц я уволился.

Подробнее..

Топот маленьких ножек

28.05.2021 18:18:56 | Автор: admin
автор оригинального изображения: MOSSAавтор оригинального изображения: MOSSA

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

Как это началось? Многие иностранные компании восприняли Маленькую победоносную войну 08.08.08 как четкий и недвусмысленный сигнал, отменив планы по развитию бизнеса России. В их числе оказалась компания, в которой я работал начальником СДО меня сократили, выплатив полугодовой оклад.

Деньги мы тут-же потратили, отправившись в Таиланд я был востребованным специалистом и без труда находил работу. Вот только вернувшись в Россию, мы словно оказались в другой стране рынок вакансий в Перми сократился в десятки раз. И если моя беременная подруга смогла найти работу (она химик), то у меня все было глухо.

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

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

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

Можно сказать, что весь первый год Андрей проспал. Как и положено младенцу, он спал по 18-20 часов в сутки, просыпаясь только за тем, чтоб покушать. Принимая решение взять младенца, я думал, основываясь на рассказах из интернета, что младенец будет требовать внимания в режиме non-stop.

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

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

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

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

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

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

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

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

Фигурки игрушки из Макдональдса, журналов, наборов ЛЕГО и прочих источников обретали имена, биографии, сверхспособности и участвовали в битвах, по сложным и запутанным правилам, сочиняемых на ходу Андреем то разбиваясь на противоборствующие группировки, то объединяясь против общего врага, которым в разных сезонах выступали кошка Дуня, запечатанные в пластике ужасающие твари из журнала Насекомые и их знакомые и Пингвины Мадагаскара.

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

Важный момент! Уже потом, когда Андрей стал старше, я узнал от мамочек на детской площадке, что многие из них приучили младенцев спать только тогда, когда их укачивают. Этого нужно категорически избегать. Младенец действительно замолкает, когда начинаешь его качать на руках. Так работает инстинкт обеспечивающий безопасность при переноске. Проблема тут в том, что ребенок моментально просыпается, стоит перестать качать обеспечивая мамочке бессонную ночь. Я с самого начала просто брал плачущего ребенка на руки, утешая и обнимая без покачивания. Как результат проревевшись Андрей спокойно засыпал, и я его перекладывал в кровать.

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

К моему счастью его было легко обмануть.
Компартия дать одна кошка-жена!Компартия дать одна кошка-жена!

Довольно быстро я вернулся к работе. Работая, я ставил корзинку с Андреем под стол, опустив туда ногу так сын не чувствовал себя брошенным. Разговоры и стук клавиш не мешали ему никак. Не представляли трудностей и выезды на объекты.

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

Путешествия тоже не представляли большой трудности. Детские билеты стоят недорого, так что мы объездили всю Юго-Восточную Азию, побывав во Вьетнаме, Лаосе, Камбоджии и (прости господи) Мьянме. Андрей постепенно взрослел и с ним стало интересно общаться.

Кампучия любовь мояКампучия любовь моя

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

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

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

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

С самого начала я твердо решил, что буду стараться объяснять сыну накладываемые на него ограничения. Этот подход породил забавную коллизию не сумев объяснить ребенку почему он должен заправлять днем кроватку, я прибегнул к читерству сказал: Так велел голос с неба. Мы всегда слушаемся голоса с неба. Сына объяснение устроило. И я еще несколько раз пользовался приёмом в сложных ситуациях ровно до тех пор, пока не заметил, что Андрей использует его в общении с другими детьми, важно воздевая вверх палец.

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

Сейчас Андрею 12, он живет вместе со мной в Москве, разделяя время между учебой в школе, гонками на велосипедах и битвами в Fortnite. У него своя комната, свои обязанности и свой бюджет он получает 100 рублей фиксированного дохода, которые тратит, покупая невообразимую ерунду в фикспрайсе.


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

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

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

Подробнее..

Категории

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

  • Имя: Макс
    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