From 4051592cc5e57b5d174ac5638d35068539b7be2d Mon Sep 17 00:00:00 2001 From: "vladislav.khorev" Date: Wed, 17 Jan 2024 20:14:18 +0000 Subject: [PATCH] Write first version --- README.md | 234 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 233 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d53f41b..3ef6a91 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,234 @@ -# pulse-doc +# Набор команды и первые шаги +## Минимальная команда, размер и состав + +По моему опыту, самая минимальная команда (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. +Безопасность: Стандарты и практики безопасности в облачных средах.