Обов’язки Senior Software Engineer’a
Пост про те, що, на мою думку, має виконувати розробник коли він Senior. Я працюю в продуктовій компанії і в нас інженер приймає участь в розробці фічі від обговорення продуктового рішення до реалізації в продакшені і аналізі результатів. В інших компаніях скоуп може бути менший, щось можливо відрізняється, але основа буде +- така сама.
Навіщо це?
Я вірю що кожен розробник має розуміти що він робить і як це впливає на бізнес. Недостатньо написати код. Розуміння повного флоу допомагає приймати рішення. Ще кажуть що це “продуктове мислення”.
То ж розглянемо наступні етапи:
Підготовка до розробки
- На етапі коли продакт оунер презентує нову ідею необхідно зрозуміти, а що треба робити. Визначити питання які не розкриті, проговорити edge cases, негативні сценарії.
- Визначити технічний стек. Якщо це нова фіча/cервіс - технології, бібліотеки, мова програмування.
- Створити архітектуру фічі, розробити Тех дизайн документ.
- Проговорити з QA інженером тест план, тест кейси. Визначити на що звернути увагу, edge cases, auto tests coverage.
- Проговорити з бізнес аналітиком які метрики додати (будемо використовувати) для того, що б можна було провести A/B тестування
- Оцінити задачі (в днях, сторіпоінтах, сферичних конях) та оцінити ризики. Бути готовим захендлити ризики.
- Запланувати роботу в команді а також (якщо необхідно) роботу на сусідніх командах (приклад: бекенд має зробити API для фронтенду)
Кодінг
- Написати код
- Написати тести
Підготовка до релізу
- Обговорити з продуктовою командою як релізити фічу (аудиторія A/B тесту)
Реліз
- Реліз в продакшен
- Моніторинг фічі в продакшені. Zero-error policy
- Слідкувати за issues and fix bugs
- Допомогти аналітику проаналізувати результати A/B тесту. Якщо є падіння по метрикам в новому функціоналі, знайти проблеми і почати нову ітерацію A/B тесту. Падіння метрик - це очікуваний закономірний процес змін в процесі A/B тесту.
Cleanup
- Видалити залишки A/B тесту з коду
- Перевірити задачі які залишились (leftovers) та приорітизувати їх
Takeaways:
- Кожен інженер як individual contributor має вміти захендлити задачу від початку до кінця. ТА ми не знецінюємо командну роботу! Ми не відміняємо PR review, командну допомогу, сінки і парне програмування. Ідея в тому, що головний “водій” (рушійний механізм) який штовхає фічу вперед - розробник.
- Не всі етапи релевантні до кожної задачі
- Кожна задача має свій рівень складності. Це може бути coding complexity, може бути складність у релізі (багато міжкомандних звʼязків). То ж загальна складність задачі - це щось середнє між цими рівнями складності. Важливо це розуміти для тімліда при поділі задач.
- Якщо ви працюєте в англомовному середовищі, англійська мова стає найважливішою “мовою програмування” (ви використовуєте JS, Python, Kotlin що завгодно тільки на “Кодінг” етапі, в той час інші етапи потребують комунікацій з іншими командами чи продакт людьми)
Чи думаєте ви що це забагато ? 🙂