Как стать автором
Обновить
58
0
Edtech на удаленке @Skyeng-Habr

Пишем код, который меняет систему образования

Отправить сообщение

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

Время на прочтение7 мин
Количество просмотров39K

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

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

Читать далее
Всего голосов 146: ↑142 и ↓4+165
Комментарии174

Решаем ошибку при миграции на Storybook 7

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров770

Привет, я фронтенд-разработчик в Skyeng. При переходе с шестой версии Storybook на седьмую встретилась ошибка «Providers from the BrowserModule have already been loaded. If you need access to common directives such as NgIf and NgFor, import the CommonModule instead».

В этой статье объясняю, почему возникает баг и как его исправить.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Как я искал ПДн в 300 базах данных [и сохранил рассудок]

Время на прочтение9 мин
Количество просмотров8.5K
image

Пришли как-то ко мне парни из службы безопасности и говорят: «Надо обойти все БД и собрать с них персональные данные». Потому что в России изменилось законодательство и теперь их нужно хранить в особо защищённых хранилищах.

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

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

Скорее всего, вам скоро предстоит такое же, поэтому сейчас покажу артефакты, которые я нашёл в процессе.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+19
Комментарии35

Итоги ежегодного опроса PHP-сообщества: результаты за 2023

Время на прочтение5 мин
Количество просмотров9K

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

Посмотрим, каким был 2023 для сообщества, в 1120 мнениях.

Результаты также можно найти на phpcommunity.ru. Вот итоги за 2022, 2021, 2020.

Читать далее
Всего голосов 37: ↑37 и ↓0+37
Комментарии7

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

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров6.1K

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

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

Позиция тимлида вообще предполагает relationship management, который может быть направлен как и на команду, так и наверх, в сторону стейкхолдеров. Но в этой статье я хочу поговорить именно про связку TL + Dev Team. Руководителю важно выстроить и поддерживать доверительные отношения с сотрудниками. Это поможет эффективно управлять командой и добиваться слаженной и продуктивной работы.

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

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

Читать далее
Всего голосов 21: ↑19 и ↓2+19
Комментарии8

Продакт против директора

Время на прочтение9 мин
Количество просмотров6.7K
image
Аджайл-аэропорт

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

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

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

«Обычные» менеджеры заточены под другое: они умеют продвигать проект вперёд. Они знают, почему важно заполнять кучу скучной документации, почему после встреч нужно закреплять результаты, они оставляют артефакты после каждого действия, они планируют риски сильно заранее, они считают в XLS-таблицах, рисуют диаграммы Ганта и знают, как зовут детей каждого в команде.

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

Про важность общего управления почему-то говорят очень мало. Кажется, пора признать, что нам всем оно нужно.
Читать дальше →
Всего голосов 20: ↑15 и ↓5+14
Комментарии5

Инклюзивность в продуктах: новые возможности? Или путь в никуда?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.9K

Привет, я Марго — инклюзивный продакт. Впервые вопросом «Какого черта одним можно, а другим нет?» я задалась после отдыха в Турции, где мы с друзьями покоряли горки в аквапарке. Все было круто, потом мы прилетели в Россию и решили повторить, но на аттракционы… меня не пустили.

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

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

И если вы подумали: «Эта ваша мораль и этика вовсе не про бизнес, а мы тут деньги зарабатываем», у меня для вас новости.

Инклюзивность — это действительно +100500 к карме, а еще способ сыграть на метриках и получить прибыль. Как? Погнали читать!

Читать далее
Всего голосов 16: ↑12 и ↓4+10
Комментарии5

Распланировать бюджет компании и не поседеть: как мы автоматизировали процесс, который не любит никто 

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4K


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

Полировать бюджет можно месяцами. Особенно если у вас 3 000 сотрудников. Нужно решение, которое позволит быстро запланировать ФОТ и не запутаться.

Меня зовут Марго Седова, я Head of HR Product в Skyeng. Планировать ФОТ в нашем случае вручную ― вообще не вариант. Расскажу, как мы боролись с нервным тиком при словах «планируем годовой бюджет» и пробирались через чащу ручных процессов к светлому автоматизированному будущему. Пристегните ремни, погнали.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+12
Комментарии2

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

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров22K
image
Социнжиниринг выглядит вот так

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

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

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

Наш случай сразу пошёл далеко от идеального. Рассказываю.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+26
Комментарии59

Standalone компоненты и tree-shaking

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров8.2K

Уже сложно представить наши приложения без такой оптимизации, как tree shaking.
Tree-shaking — «встряхивание дерева», удаление неиспользуемого кода из бандла приложения.

А причем тут standalone компоненты в названии статьи?

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

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

Метаданные как обезбол при миграции

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.1K

Привет! Меня зовут Наташа Красильникова, я старший аналитик команды Operations Analytics в Skyeng. Мы завязаны на работе с сотней сервисов компании: забираем данные из сервисов и интегрируем много локальных документов с бизнесовыми маппингами, таргетами, а иногда и просто какими-то дополнительными данными.

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

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

Ещё пара революций школьного образования

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров5.1K
image

Нам понадобилось переизобрести онлайн-образование для дошкольников и школьников.

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

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

Собственно, у нас было два пути:

  • Повышать цены для родителей, чтобы привлекать больше учителей. Но нет, так не выйдет, мы упёрлись в эластичность по цене, в России у людей не настолько много денег.
  • Или менять саму методологию так, чтобы убрать «бутылочное горлышко».

Автоматизировать учителя или убирать человека из обучения — это очень плохая идея.

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

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

В общем, сейчас традиционный учитель делает вовсе не то, в чём он может дать максимальный эффект для прогресса учеников.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+24
Комментарии13

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

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров13K
image
Ачивка «Терминатор»: прибить проект, потому что проще заново

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

Что пошло не так? Ну, в какой-то момент пришёл бизнес и сказал: чуваки, вот у нас замечательное ТЗ, его нужно сделать. Команда в первом составе собрала аналитику, прикинула список действий, заложила 15% времени на непредвиденное и приступила к разработке.

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

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

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

Второй тимлид выгорел и уехал в условный Гондурас.

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

Короче, мы посовещались и пристрелили к чертям весь проект.

Мечта была в том, чтобы написать его заново.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+16
Комментарии40

Не пропусти это при работе с Nx

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.2K

Работая с монорепозиторием, ты наверняка слышал о наборе инструментов Nrwl Nx. Если вкратце, то Nx ускоряет и упрощает работу с монорепой, снабжает полезными утилитами. Держи документацию.

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

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

Итак, что же ты мог упустить при работе с Nx:

nx run-many
dependency graph + nx affected
nx-enforce-module-boundaries es-linting
computation cache
nx cloud
buildable libs 

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии8

Меня нанял робот, или рекрутинг сотрудников как продукт

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3K
image

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

Однако мы с этой задачей справились, у нас просто не было другого выбора. Когда нужно привлекать по 800–1 000 новых преподавателей в месяц, невозможно делать это ручными методами, поэтому нам пришлось построить автоматическую систему найма, через которую сегодня проходит до 150 000 кандидатов в год. Это один из самых массовых наймов преподавателей в мире.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+16
Комментарии2

Анализ и приоритизация задач в тикетной системе: реализуем красиво на PHP

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.4K

Привет! Меня зовут Олег Мифле. Одной из команд, где удалось поработать за 7 лет с PHP, стала Customer Support. Мы автоматизировали анализ тысяч задач в день и оператору больше не нужно думать и включать голову для того, чтобы понять, какая задача прямо сейчас важна. О том, как работает приоритизация и что такое дерево игры, расскажу в статье.

На старте погружу в предметную область. Она непростая, но постараюсь быстро. Эта статья по моему докладу с PHP Russia 2022. Вот запись.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Когда игра учит больше, чем уроки

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.9K


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

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

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

Что касается метрик, то мы работаем над временем сессии и средним временем, которое игроки проводят в игре за неделю. Эти метрики мы считаем опережающими к LT. И если ученики будут много играть и игра сильно увеличит среднее время в неделю, то мы сможем оставить игру бесплатной для наших учеников.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+14
Комментарии9

Апгрейд и рефакторинг PHP-проектов — теперь это просто с Rector

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров23K

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

Статья написана на основе доклада с PHP Russia 2022.

Читать далее
Всего голосов 54: ↑54 и ↓0+54
Комментарии13

Готовим версионирование API в PHP-фреймворках: разбор способов и работа с организацией кода

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров8.2K

Привет! Меня зовут Олег Мифле. В Skyeng работаю над проектом Skypro. В IT я уже больше десяти лет, семь из которых пишу на PHP. За плечами десятки разных проектов: e-commerce, финтех, CRM, а недавно добавился и EdTech. Были и классические фуллстек-проекты, и проекты, где фронтенд и бэкенд «живут» отдельно и коммуницируют друг с другом по API. Боль от отсутствия версионирования я испытал на себе. Хочу поделиться, как избежать проблем, как всё структурировать и организовать.

Обсудим:

• Что такое API.

• Зачем версионировать API и нужно ли вообще.

• Какие способы версионирования существуют и как его организовать — и с точки зрения подходов, и с точки зрения кода.

• Разберёмся, когда избавляться от старой версии или как жить с легаси до конца существования проекта.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии11

Итоги третьего ежегодного опроса PHP-сообщества (и по традиции — слон)

Время на прочтение7 мин
Количество просмотров7.7K

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

Удалось собрать 1215 ответов. Расспросили сообщество, на какой версии PHP сидят в командах, какой фреймворк выбирают для рабочих, а какой для личных проектов, многие ли посматривают на Go. И не только.

- Итоги 2021

- Итоги 2020

Читать далее
Всего голосов 43: ↑43 и ↓0+43
Комментарии3

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность