Как стать автором
Обновить
97.65
Рейтинг
Skyeng
Крутой edtech с удаленкой для айтишников
Сначала показывать

Чем заменить New Relic: 11 альтернатив и наш выбор

Блог компании Skyeng Системное администрирование *PHP *IT-инфраструктура *

Это лишь часть таблицы инструментов, которые мы рассматривали. Подробнее по ссылке.

Мы используем New Relic в каждом из наших 250 PHP-сервисов. С его помощью отслеживаем взаимосвязи между сервисами, их зависимости, смотрим нагруженные транзакции, анализируем полный трейс запроса пользователя. Наши основные функциональные требования: связи, оценка по времени отклика и параметру APDEX (собирательное значение удовлетворенности пользователя).

Отказаться от New Relic хотели давно. Главная причина — он стал дорогой. Весной добавилась вторая причина — мы из России. Запереживали, что нас могут отключить. А мы в команде инфраструктуры стараемся все сервисы держать на своей стороне.

В августе закончился договор с New Relic, так что заранее стали искать ему замену. И вот, как оно было.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 2.4K
Комментарии 9

Новости

Кризис рынка преподавателей английского: для чего там ИТ (ответ Хабру)

Блог компании Skyeng Управление проектами *Изучение языков


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

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

Ещё одна причина — это непрекращающийся дефицит хороших (и укладывающихся в понятие разумных цен) преподавателей. Их просто не хватит каждому! Мы и так вычерпали почти весь рынок подходящих преподавателей ещё в 2018 году, так в марте этого года спрос на изучение языка вырос ещё — и вырос сильно.

В общем, когда вы говорите, что у нас что-то не так — да, мы знаем, где автоматизация косячит. Но это достаточно малая цена в сравнении с невозможностью изучать язык или изучением его по учебнику без помощи человека.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 3.5K
Комментарии 12

Делаем эффекты в видеосвязи, используя Canvas API и MediaPipe

Блог компании Skyeng Работа с видео *JavaScript *Canvas *Видеоконференцсвязь

Привет! На связи Влад из команды видеоплатформы Skyeng. Мы отвечаем за аудио и видео коммуникацию в образовательных продуктах, применяем WebRTC и реализуем фичи вокруг Video Conferencing. О реализации одной из них хочу рассказать: мы сделали видеоэффекты для веба.

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

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

Все сошлось. Решили делать.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 1.8K
Комментарии 1

Как вообще можно управлять отдельными людьми в команде разработки?

Блог компании Skyeng Управление персоналом *Карьера в IT-индустрии


Перформанс — это результативность команды. Начиная с этого места понятийный аппарат разваливается. Чтобы измерять результативность, нужно знать какую-то метрику. Метрика «строчки кода» определённо не подходит, а метрика «готовые фичи» измеряет продуктолога или команду, а не индивидуального разработчика. И вот этим «чем-то» ещё нужно управлять. Логика в том, чтобы разработчик разрабатывал нужное и с понятной скоростью, чтобы на него можно было полагаться в задачах.

Управлять можно, например:

  • Балансом между костылями и оверинжинирингом.
  • Балансом между тестированием кода и быстрой выкаткой на прод.
  • Балансом между техническим долгом и TTM.
  • Балансом между «пиши код» и «развивай своего джуна» и так далее.

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

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

Собственно, вот эта тонкая грань и есть перформанс-менеджмент.
Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Просмотры 6.6K
Комментарии 6

Как прокачаться в PHP: 70 ресурсов из опроса русскоязычного сообщества

Блог компании Skyeng PHP *Управление сообществом *Учебный процесс в IT

В чаты по PHP часто приходят с вопросами про развитие: какие книги стоит прочитать в первую очередь, на какие каналы подписаться, какие курсы хороши. Если повезет, в ответ чат поделится парой рекомендаций. Мы решили агрегировать их в список и собрали 150+ мнений по актуальным ресурсам для PHP-разработчика. 

Без длинных интро. Самые упоминаемые ресурсы идут первыми в разделах, а те, которые советовали новичкам, отмечены флажком 🚩. 

Читать далее
Всего голосов 35: ↑32 и ↓3 +29
Просмотры 14K
Комментарии 5

Наш опыт, как не надо растить тимлидов (не делайте как мы)

Блог компании Skyeng Управление проектами *Управление персоналом *Карьера в IT-индустрии


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

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

В общем, мы решили в этих условиях обучать своих тимлидов. Сейчас расскажу, что из этого получилось.
Читать дальше →
Всего голосов 46: ↑43 и ↓3 +40
Просмотры 28K
Комментарии 13

Где именно лежит граница между зарплатными грейдами: как это устроено у нас

Блог компании Skyeng Управление проектами *Управление персоналом *Карьера в IT-индустрии


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

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

Пока мы попробовали этот подход на 120 разработчиках. Выглядит многообещающе. Но я хотел бы показать вам сам опросник, детали системы и обсудить, насколько прозрачной получилась такая система. Дальше в посте — предпосылки её создания, разбор каждого из параметров и ссылка на форму, которая показывает результат по нашей системе грейдов.
Читать дальше →
Всего голосов 41: ↑36 и ↓5 +31
Просмотры 16K
Комментарии 40

Как мы перевели операторов на единую платформу и стали закрывать по 240 тысяч задач в месяц

Блог компании Skyeng PHP *Angular *Управление проектами *Управление персоналом *

Так масштабировался сервис с марта 2020. Каждый цвет — группа операторов.

В Skyeng есть несколько отделов, которые сопровождают учеников. Например, отделы, отвечающие за входящую телефонную линию и техподдержку в чате на сайте. Есть группа Awake, работающая с учениками, которые брали перерыв в обучении. Есть группа Quality Control — она проверяет кейсы качества: например, что-то случилось на уроке и ученик оставил жалобу.

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

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

О жизни с внешними сервисами


Для работы с обращениями мы использовали такие системы как Usedesk, Omnidesk и Google Sheets. Это накладывало ограничения:

  • Операторам и менеджерам приходилось вручную создавать задачи. Такая рутина забирала много времени. Ошибиться проще простого.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Просмотры 4.4K
Комментарии 0

Функциональные тесты на проекте: жизнь до и после (на примерах)

Блог компании Skyeng Тестирование IT-систем *PHP *Программирование *Тестирование веб-сервисов *

Наша команда отвечает в Skyeng за личный кабинет и CJM пользователя до оплаты. Изначально проект был написан на Symfony 4.4 и представлял собой набор слабо связанных компонентов, которые были ответственны за правила работы для фронтенда.

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

У нас были лишь юнит-тесты: каждый покрывал логику одного класса. Все тесты вместе давали покрытие основной логики кода и гарантию, что все работает правильно. Но 100% покрытие кода тесты не обеспечивали. И сейчас не обеспечивают.

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

И мы обратились к функциональным.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Просмотры 5K
Комментарии 5

Как автоматически уйти в отпуск, уволиться и снова приняться на работу

Блог компании Skyeng Управление проектами *Управление персоналом *Удалённая работа


«Бюрократия» — про обычные кадровые процессы. Мы в Skyeng всегда работали удалённо с основания. С ростом встала задача удобного поддержания HR-процессов, так как в ручном режиме поддерживать их стало невозможно: сотрудникам было неудобно и непонятно, а HR валился от количества заявок.

Что сделали:

  • Продукт, где находятся все базовые запросы сотрудников. По нажатию пары кнопок можно получить все нужные справки, доступы, отметить отпуск, отгул или вообще оформить увольнение. То есть не надо ни с кем разговаривать. Каждое действие запускает набор скриптов, который создаёт все нужные задачи в Джире или автоматически оформляет все нужные документы.
  • Сами наборы скриптов. У любой заявки есть процесс, который мы продумали и автоматизировали, то есть не надо ничего придумывать. Например, при смене роли пользователя (переходе на другую должность) собираются и добавляются-отзываются все доступы и ставятся все нужные задачи.
  • SLA на каждое действие. Как только есть описанный процесс — можно назначать ответственных и сроки. Теперь, если вам нужна какая-то бумажка от кадров, не вы заходите и спрашиваете, готово ли, а уже кадры должны уложиться в свои SLA, и у каждого шага есть ответственный.
  • Бота, который в первые дни работы «ведёт» сотрудника.
  • Автоматизацию микромоментов. Например, за день до ухода в отпуск в слаке проставляется соответствующий статус плюс у сотрудника становится видно в профиле, кто за него работает и по каким вопросам.

Знаете что? Получилось удобно!
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры 6.8K
Комментарии 14

Три кризиса подряд с 24 февраля: блокировки видео, баны русских аккаунтов и опенсорс-зловреды

Блог компании Skyeng Управление разработкой *Управление проектами *Видеоконференцсвязь

Период скачка проблем с видео

26 февраля у нас начались серьёзные проблемы с видеосвязью. Роскомнадзор начал замедлять трафик для Facebook (запрещённой в России организации). Если вы помните, как они блокировали Телеграм, когда из нормально работающих сервисов остался только он, то вот получилось примерно то же самое. Конкретно, как мы предполагаем, они закрывали целые подсети, и наши Янус-сервера для видео тоже попали под эти баны. Также, похоже, применялась какая-то маска по пакетам, потому что в Хроме видео отвалилось почти сразу, а вот в Firefox ещё работало. Проблемы были у всего WebRTC-сообщества.

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

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

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

Пришлось заняться большой уборкой, заменой вендоров и вообще масштабно рассмотреть все возможные риски.
Читать дальше →
Всего голосов 43: ↑42 и ↓1 +41
Просмотры 11K
Комментарии 15

Зачем использовать materialize и dematerialize операторы и что такое Notification в RxJS?

Блог компании Skyeng Разработка веб-сайтов *JavaScript *Angular *

Вы когда-нибудь встречали такие операторы, как materialize и dematerialize в RxJS? А что насчет класса Notification? Вероятно, многие слышали, но не до конца представляли, где их можно применить на практике.

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

Materialize

Для начала вспомним, какие типы значений может эмитить объект типа Observable: это next, error и complete. Если вы не помните, что это значит, здесь можно почитать.
Соответственно и про observer, набор коллбэков (onNext, onError, onComplete), тоже советую вспомнить.

Вот что говорится в документации о materialize операторе: «A function that returns an Observable that emits Notification objects that wrap the original emissions from the source Observable with metadata».

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 3.2K
Комментарии 7

Как мы измеряем успешность ученика в английском (4 года разработки)

Блог компании Skyeng Data Mining *Машинное обучение *Управление проектами *

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

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

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

  1. Собрал по данным методологических исследований карту навыков английского языка, разбитую на сотни отдельных веток, связанных друг с другом, как в хорошей RPG.
  2. Отскринил несколько реальных учеников по этой карте и придумал, как с её помощью вычислить образовательный прогресс.
  3. Наложил карту навыков на контент, чтобы каждое упражнение автоматически учитывалось в оценке прогресса (о, это было долго и сложно).
  4. Провалидировал на тысячах внутренних тестов, не зависящих от системы оценки прогресса.
  5. Заложил адаптацию для учеников разных языковых групп, поскольку родной язык ученика даёт ему какие-то навыки сразу, а какие-то делает очень сложными.
  6. Семь раз усложнил, а после существенно упростил систему.

В итоге каждый урок моя система скорит каждому ученику баллы опыта в разные ветки навыков.
Читать дальше →
Всего голосов 40: ↑38 и ↓2 +36
Просмотры 6.6K
Комментарии 29

Матчинг преподавателей и учеников с помощью ML

Блог компании Skyeng Машинное обучение *

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

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.7K
Комментарии 7

Архитектура на «микросервисах» в монолите: проект из практики

Блог компании Конференции Олега Бунина (Онтико) Блог компании Skyeng PHP *Node.JS *Микросервисы *

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

На старте было просто: связаться с нами можно было только через почту. Входящим ящиком был IMAP, исходящим — SaaS сервис по отправке почты, забрать письма с которого было то еще приключение. Мы смотрели на заголовки и соединяли письма в цепочки, как в любом почтовике: Gmail, Outlook. В таком виде передавали операторам. 

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

Так появился проект линковка.

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 9.7K
Комментарии 2

Погружаемся в работу со скроллом в Jetpack Compose

Блог компании Skyeng Разработка мобильных приложений *Разработка под Android *

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

Какое-то время назад я решил, что надо попробовать Compose в деле и начал делать pet project приложение Хотелки, суть которого в записи своих желаний и возможности делиться списком желаний с помощью любого мессенджера.

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 4.2K
Комментарии 2

Создать динамический компонент теперь проще: изменения в Angular 13

Блог компании Skyeng Разработка веб-сайтов *Angular *

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

Но с 13 версией фреймворка API этого метода немного изменился. В этой статье поделюсь тем, как теперь выглядит процесс динамического добавления компонента.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 4.6K
Комментарии 6

Как UIView мешал слоям анимироваться

Блог компании Skyeng Разработка под iOS *Разработка мобильных приложений *Интерфейсы *Дизайн мобильных приложений *

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

Заодно разберемся с таким понятием, как неявные анимации.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 4.1K
Комментарии 2

Что смотрели и читали по PHP в 2021: список от сообщества

Блог компании Skyeng PHP *Управление сообществом *Исследования и прогнозы в IT *

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

Как собирались мнения

Ссылку на опрос помогли распространить городские чаты и админы крупных PHP-каналов, деврелы компаний, где в стеке есть PHP, конференция PHP Russia, сайт phpcommunity.ru. Вот полный список классных ребят и компаний, которые помогли исследованию сбыться.

Еще пара полезных ссылок на старте.

- Подробнее про результаты опроса за 2021 и сравнение с 2020.

- А здесь 80+ видео и статей за 2020 — в подборке, подготовленной @spasibo_kep

Поехали.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Просмотры 10K
Комментарии 0

Как мы проводили нагрузочное тестирование видеосвязи для встреч на 100 человек

Блог компании Skyeng Тестирование веб-сервисов *Видеоконференцсвязь

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

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

Мы учим не только английскому, но и математике, и другим предметам. Вдруг выяснилось, что для ряда занятий нужно собирать больше 10 человек, и при этом нужно иметь возможность разговаривать с каждым. Понятно, что учителю можно дать толстый канал в 1 Мбит/с, а ученикам — каналы потоньше: в 144p или 240p, например, но всё равно квадратичный рост трафика выглядел угрожающе.

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

Вы же тоже хотите посмотреть, как быстро он упадёт, да?
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Просмотры 4.7K
Комментарии 7

Информация

Дата основания
Местоположение
Россия
Сайт
www.skyeng.team
Численность
1 001–5 000 человек
Дата регистрации
Представитель
Alisa Kruglova