235 lines
19 KiB
Markdown
235 lines
19 KiB
Markdown
# Набор команды и первые шаги
|
||
|
||
## Минимальная команда, размер и состав
|
||
|
||
По моему опыту, самая минимальная команда (Skeleton Crew) следующая:
|
||
1. Lead/Senior Backend Developer, вилка 300-500 тысяч рублей в месяц
|
||
2. Lead/Senior Frontend Developer, вилка 300-500 тысяч рублей в месяц
|
||
3. Lead/Senior Android Developer, вилка 300-500 тысяч рублей в месяц
|
||
4. Lead/Senior iOS Developer, вилка 300-500 тысяч рублей в месяц
|
||
5. Senior DevOps Engineer, вилка 150-500 тысяч рублей в месяц
|
||
6. Senior Project Manager, вилка 100-200 тысяч рублей в месяц
|
||
7. UI/UX Designer, Art Director, вилка от 100 до плюс бесконечности
|
||
8. Рекуртер, естественно. Стандартная ставка - от 1 до 3 месячных окладов найденного специалиста
|
||
|
||
В будущем разработчики по каждой категории (Frontend, Backend, iOS, Android) формируют команды разработки соответственно Frontend, Backend и т.д. Сколько брать в команду? Нужно смотреть по загруженности. Но обычно с одним Lead идут 1-2 Senior и 3-5 Middle/Junior разработчиков, это оптимальный размер команды. Если больше - то нужно дробить по более мелким командам.
|
||
|
||
DevOps может быть один, или может быть команда. Но команда DevOps растет не так быстро как команда разработки. Достаточно длительное время может быть один девопс на большую команду.
|
||
|
||
Project Manager обычно один, потому что он объединяет коммуникации со всей командой.
|
||
|
||
UI/UX Designer - это просто дизайнер, а Art Director это условно лид по дизайну, который задает общий тон и общий стиль всем остальным дизайнерам. На начальном этапе дизайнер может быть один.
|
||
|
||
Рекрутер - обычно это фрилансер который находит разработчиков по заданным критериям, чтобы мы могли его прособеседовать. На начальном этапе
|
||
|
||
## Найм и сложность найма
|
||
|
||
Разработчиков сложнее всего найти. Поэтому обычно поиск разработчиков нужно начинать раньше всего, и начинать заранее.
|
||
|
||
Ключевая позиция у Backend Lead, потому что от него будет зависеть все остальные разработчики. К примеру, пока не готова авторизация, профиль пользователя, лента новостей и прочие API, фронтенду и мобильным разработчикам нечего делать. Они будут рисовать интерфейсы и забивать их рыбными текстами, но это не то. Можно условно сравнить Frontend, Android и iOS разработчиков с строителями-отделочниками, сантехниками и электриками. Типа, пока дом не построен, отделывать нечего.
|
||
|
||
Поэтому на позицию Backend нужно выбирать тщательно. Если Backend будет медленно работать, то работа всей команды будет замедлена.
|
||
|
||
Frontend, Android и iOS - это уже позиции попроще. Там разработчики намного более взаимозаменяемы. Если один плохо справляется, можно достаточно быстро заменить его на другого.
|
||
|
||
В позиции Frontend, Android и iOS разработчики уровня Senior отличаются от уровня Middle/Junior тем, что в случае возникновения какого-то сложного бага, Senior решают этот баг быстрее. Однако если просто писать стандартный интерфейс используя стандартные компоненты, то Senior и Middle будут работать с одинаковой скоростью. Пример: опытный водитель и неопытный почти неотличимы на дороге. Различия проявляются только когда на дороге нестандартная ситуация - занос, дрифт, неожиданное препятствие и т.п.
|
||
|
||
При найме DevOps проблема в основном в том, что рынок завален резюме от псевдо-DevOps которые изучили Docker/Kubernetes по курсам и кроме этого ничего не знают. Опасность последних заключается в том что при более-менее нештатной ситуации они превращаются в беспомощных котят. Настоящих же DevOps находить может быть сложно.
|
||
|
||
Project Manager найти легко, по рынку ходят огромное количество безработных PM-ов и с низкими зарплатными ожиданиями. Можно взять любого PM-а наугад и он будет более-менее достоино справляться со своими обязанностями. Найти среди них лучшего будет довольно сложно. Я обычно выбираю PM-а главным образом чтобы у него в портфолио не было провальных проектов.
|
||
|
||
Про поиск UI/UX дизайнера. Если я просто делаю сайт для заказчика, то я могу взять любого безработного дизайнера за не слишком больщой прайс и он сделает более-менее достойный дизайн как у всех. Но если нужен уникальный дизайн, то здесь сложно что-то посоветовать. Рекомендую идти на https://www.behance.net/ , https://www.deviantart.com/ , https://dribbble.com/ или https://www.artstation.com/ и смотреть то что вам понравится. Если нашли то что вам нужно - пишите дизайнеру и приглашайте на работу. Но учтите, что в таком случае дизайнер может быть из другой страны, и еще дизайнер может заломить высокий ценник.
|
||
|
||
Рекрутеров искать легко, их достаточно много на рынке. Также на рынке полно рекрутинговых агентств, они везде предлагают свои услуги.
|
||
|
||
|
||
# Этапы
|
||
|
||
1. Находим рекрутера
|
||
2. Ищем Backend разработчика и дизайнера
|
||
3. Ищем остальных разработчиков и остальную команду (Android, iOS, Frontend, DevOps и т.д.)
|
||
4. Проходят раунды собеседований - из найденных резюме кто-то отсеивается, кто-то сам выбирает другой оффер, и в итоге формируется команда
|
||
5. Параллельно оформляется юрлицо
|
||
6. Когда юрлицо готово, можно регистрировать аккаунт в облачных сервисах (Yandex Cloud или Облако Mail.Ru или аналоги), регистрировать аккаунт разработчика в Apple ($300 в год) и в Google Play ($25 единоразово)
|
||
7. Собираем требования, проектируем архитектуру
|
||
8. Дизайнер делает дизайн, бекенд-разработчик делает прототип бекенда
|
||
9. Остальные разработчики подключаются к работе и делают веб часть, Android и iOS приложение
|
||
|
||
И дальше уже работаем по итерациям.
|
||
|
||
Параллелить можно так:
|
||
```
|
||
1----2----3----4
|
||
\ \
|
||
\ \
|
||
7----8----9--- ...разработка...
|
||
/
|
||
/
|
||
5-----6-----
|
||
```
|
||
|
||
|
||
|
||
## Подходящие объявления для вакансий
|
||
|
||
### Lead/Senior Backend Developer
|
||
|
||
**Обязанности:**
|
||
|
||
Разработка и поддержка серверных приложений на Node.js.
|
||
Работа с базами данных SQL и NoSQL.
|
||
Участие в проектировании архитектуры проектов.
|
||
Оптимизация производительности и масштабируемости приложений.
|
||
Автоматизация процессов развертывания и тестирования.
|
||
|
||
**Ожидания:**
|
||
|
||
Опыт работы с Node.js не менее 3-5 лет.
|
||
Глубокое понимание принципов работы серверных технологий.
|
||
Опыт работы с системой контроля версий Git.
|
||
Знание принципов разработки безопасного кода.
|
||
Опыт работы с Docker или Kubernetes.
|
||
Умение самостоятельно решать сложные задачи и принимать технические решения.
|
||
|
||
**Требования:**
|
||
|
||
Знание JavaScript (Node.js), Express.js, NestJS.
|
||
Опыт работы с базами данных PostgreSQL.
|
||
Опыт работы с RabbitMQ или его аналогами.
|
||
Навыки написания unit-тестов (Mocha, Jest).
|
||
DevOps: Docker, Kubernetes, CI/CD инструменты.
|
||
Работа с API, опыт построения API (REST или GraphQL).
|
||
|
||
### Lead/Senior Frontend Developer
|
||
|
||
**Обязанности:**
|
||
|
||
Разработка и поддержка фронтенд-приложений, основанных на React JS.
|
||
Создание адаптивных веб-интерфейсов.
|
||
Сотрудничество с UX/UI дизайнерами для реализации дизайна в жизнь.
|
||
Оптимизация приложений для максимальной скорости и масштабируемости.
|
||
Интеграция фронтенд-компонентов с серверными API.
|
||
|
||
**Ожидания:**
|
||
|
||
Опыт в разработке веб-приложений от 3-5 лет (React+Redux, NextJS)
|
||
Уверенные знания HTML, CSS, Javascript, TypeScript, React, Redux
|
||
Умение верстать адаптивные и кроссбраузерные интерфейсы
|
||
Опыт работы с Figma
|
||
Понимание принципов ООП, REST архитектуры, работы HTTP-протокола
|
||
|
||
**Требования:**
|
||
Основные: знание JavaScript (ES6+), React JS, Redux/MobX, NextJS.
|
||
Знание стилей: CSS, Sass/LESS.
|
||
Навыки написания unit-тестов: Jest, Enzyme, Cypress.
|
||
Знание дополнительных инструментов: GraphQL, Axios, Lodash.
|
||
Навыки работы с Chrome DevTools, ESLint, Prettier.
|
||
|
||
### Lead/Senior Android Developer
|
||
|
||
**Обязанности:**
|
||
|
||
Разработка и поддержка приложений для Android.
|
||
Проектирование и реализация сложных пользовательских интерфейсов.
|
||
Оптимизация производительности и стабильности приложений.
|
||
Работа с API (REST, GraphQL и другие).
|
||
Обеспечение совместимости приложений с различными версиями Android и устройствами.
|
||
Применение лучших практик кодирования и поддержание высоких стандартов качества кода.
|
||
Сотрудничество с UX/UI дизайнерами для реализации дизайна в жизнь.
|
||
Взаимодействие с другими командами разработчиков (Backend) и менеджером проектов.
|
||
|
||
|
||
**Ожидания:**
|
||
|
||
Опыт разработки на Android не менее 5 лет.
|
||
Знание Kotlin и Java.
|
||
Опыт работы с Android SDK и различными версиями Android.
|
||
Понимание принципов работы Material Design.
|
||
Опыт работы с архитектурными паттернами (MVC, MVP, MVVM).
|
||
Знание принципов работы с базами данных (SQLite).
|
||
Опыт автоматизации тестирования (JUnit, Espresso).
|
||
Желательно - опыт работы с Android NDK.
|
||
|
||
**Требования:**
|
||
|
||
Знания языков программирования Kotlin, Java.
|
||
Навыки разработки для разных версий Android, обработка жестов, анимации.
|
||
Опыт работы с базами данных: SQLite или Room.
|
||
Знание архитектурных паттернов: MVC, MVP, MVVM.
|
||
Навыки написания unit-тестов с использованием JUnit или Espresso.
|
||
Знание инструментов и библиотек: Android Jetpack, Retrofit, Dagger/Hilt.
|
||
Знание Git.
|
||
Желательно иметь опыт работы с Android NDK и опыт написания кода на C/C++.
|
||
|
||
### Lead/Senior iOS Developer
|
||
|
||
**Обязанности:**
|
||
|
||
Разработка и поддержка приложений для iOS.
|
||
Реализация сложных пользовательских интерфейсов с использованием Swift, Storyboard и UIKit.
|
||
Работа с CoreData и Realm для локального хранения данных.
|
||
Интеграция приложений с серверными API (RESTful и GraphQL).
|
||
Обеспечение совместимости приложений с разными версиями iOS и устройствами Apple.
|
||
Использование Auto Layout и Size Classes для создания адаптивных интерфейсов.
|
||
Применение best practices для обеспечения высокого качества и безопасности кода.
|
||
Сотрудничество с UX/UI дизайнерами для реализации дизайна в жизнь.
|
||
Взаимодействие с другими командами разработчиков (Backend) и менеджером проектов.
|
||
|
||
**Ожидания:**
|
||
|
||
Опыт разработки на iOS не менее 5 лет.
|
||
Глубокие знания Swift и понимание Objective-C.
|
||
Опыт работы с iOS Frameworks, включая UIKit, CoreData, CoreAnimation.
|
||
Понимание принципов работы MVC, MVP, MVVM и других архитектурных паттернов.
|
||
Опыт работы с системой версионирования Git.
|
||
Опыт написания unit-тестов.
|
||
|
||
**Требования:**
|
||
|
||
Знание языков программирования: Swift, Objective-C.
|
||
Знание фреймворков: UIKit, CoreData, CoreAnimation, SwiftUI.
|
||
Опыт работы с Storyboard.
|
||
Знание архитектурных паттернов: MVC, MVP, MVVM.
|
||
Навыки написания unit-тестов с использованием XCTest, SwiftLint.
|
||
Опыт работы с инструментами и библиотеками: Alamofire, Realm, Firebase.
|
||
Опыт работы с CocoaPods.
|
||
Опыт работы с системой версионирования Git.
|
||
|
||
|
||
### Senior DevOps Engineer
|
||
|
||
**Обязанности:**
|
||
|
||
Автоматизация процессов разработки, тестирования, развертывания и мониторинга.
|
||
Управление инфраструктурой на платформах облачных сервисов (AWS, Azure или Google Cloud).
|
||
Разработка и поддержка CI/CD пайплайнов.
|
||
Управление контейнеризацией и оркестрацией (Docker, Kubernetes).
|
||
Обеспечение безопасности инфраструктуры и данных.
|
||
Работа с системами мониторинга и логирования (Prometheus, Grafana, ELK stack).
|
||
Оптимизация ресурсов для повышения производительности и снижения затрат.
|
||
Взаимодействие с командами разработчиков для обеспечения CI/CD и эффективности процессов разработки.
|
||
|
||
|
||
**Ожидания:**
|
||
|
||
Опыт работы в DevOps не менее 4 лет.
|
||
Глубокое знание Linux.
|
||
Знание скриптовых языков Bash, Python.
|
||
Опыт использования одной из систем CI/CD: Jenkins, GitLab CI, CircleCI.
|
||
Опыт работы с IaC, например Terraform, Ansible.
|
||
Знание и опыт работы с Docker и Kubernetes.
|
||
Опыт работы с облачными платформами.
|
||
Понимание принципов и методологий безопасности.
|
||
Опыт работы с системами мониторинга и логирования.
|
||
|
||
|
||
Требования:
|
||
|
||
Облачные платформы: AWS, Azure, GCP.
|
||
Контейнеризация и оркестрация: Docker, Kubernetes.
|
||
CI/CD: Jenkins, GitLab CI, CircleCI.
|
||
Инфраструктура как код: Terraform, Ansible.
|
||
Скриптовые языки: Bash, Python.
|
||
Мониторинг и логирование: Prometheus, Grafana, ELK Stack.
|
||
Безопасность: Стандарты и практики безопасности в облачных средах.
|