У управленца компании-разработчика биллинга есть два пути построения команды. Первый – набрать уже готовых «сеньоров» и непрерывно создавать такие условия работы, чтобы они использовали навыки и опыт по максимуму, развивались и при этом не передрались. Второй – создать команду из микса новичков, «мидов» и профи, чтобы те общались, влияли друг на друга, учились и росли внутри компании. Я против замкнутого круга а-ля «нет опыта – нет работы – нет опыта» и не вижу проблемы в найме начинающего разраба. В Forward Telecom давно действует стажерская программа, которая стала трамплином карьеры для многих работающих сотрудников.
Сейчас расскажу, как я вижу путь развития разработчика биллинга, и в какой последовательности нужно осваивать профессиональные навыки.
1. Изучить язык программирования
Для начала – любой. В приоритете Java, Python и JavaScript, но для получения базовых знаний подойдут Ruby, Go, С, С++. Как учить? Проходить платные и бесплатные курсы, могу посоветовать обучение от Golang. Если уровень английского позволяет, смотреть зарубежные видео – это неплохой дополнительный скилл.
2. Понять концепции ОС
В основе операционных систем семь составляющих, которые нужно знать и уметь объяснять принцип действия:
- Управление процессами;
- Потоки и многопоточный код;
- Сокет (программный интерфейс);
- Диспетчеризация ввода/вывода;
- Виртуализация;
- Хранилище;
- Файловые системы.
Рекомендую пройти базовый курс администрирования Linux. Вторые ОС на очереди: Windows и Unix.
3. Привыкнуть к терминалу
По аналогии с фобией чистого листа есть фобия пустого черного экрана с мигающим курсором. Придется ее преодолеть, чтобы научиться писать хорошие команды в командной строке.
Обязательно знать:
- Оболочки Bash и KornShell;
- Команды find, grep, awk, sed, lsof;
- Сетевые команды nslookup и netstat.
4. Сеть и безопасность
Биллинг тесно связан с сетью и требованиями защиты данных. Нельзя писать онлайн-сервисы, не понимая, как работает сеть, поэтому нужно выучить основные понятия и протоколы: DNS, модель OSI, HTTP, HTTPS, FTP, SSL, TLS. Тогда при встрече с ошибкой Connection Refused вы будете знать, что делать.
5. Серверы
После изучения принципов передачи информации в сети можно приступить к основам работы серверов. Начните с веб-серверов: IIS, Apache, Nginx, Caddy и Tomcat.
Дальше по списку:
- Обратный прокси-сервер;
- Анонимный прокси;
- Кэширование;
- Балансировка нагрузки;
- Файрволл.
6. Изучить инфраструктуру как код
Считаю, что этот этап – один из самых важных. Придется разобраться в трех обширных темах:
- Контейнеры: Docker и Kubernetes
- Инструменты управления конфигурациями: Ansible, Chef, Salt и Puppet
- Резервирование: Terraform, облака.
7. Изучить CI / CD
Еще один полезный навык для разработчика биллинга – уметь настраивать конвейер для непрерывной интеграции и доставки. В области CI / CD есть инструменты Jenkins, TeamCity, Drone, Circle CI и другие. Спойлер: изучения широко используемого Jenkins на первых порах будет достаточно.
8. Контроль ПО и инфраструктуры
Ключевая цель — разобраться в основах мониторинга приложений. Инструменты в этой области делятся на три группы:
- Мониторинг инфрастуктуры: Nagios, Icinga, Datadog, Zabbix, Monit.
- Мониторинг производительности приложений: AppDynanic, New Relic.
- LMS: ELK Stack, Graylog, Splunk, Papertrail.
9. Облачные сервисы
В недалеком будущем каждое приложение или ПО будет иметь облачный аналог. Рано или поздно разработчики сталкиваются с облаками, так что почитайте о популярных облачных провайдерах (AWS, Google Cloud и Azure) и основах технологии.
10. Работа с БД
Все текущие проекты используют базы данных, и опыт взаимодействия с СУБД и SQL облегчит начало работы. Научитесь писать SQL запросы, использовать explain и изучите принципы работы index. Самый простой путь – пройти курс. А еще можно попрактиковать навыки по документации Postgres, поиграться с репликацией.
11. Прокачать софтскиллз
Неожиданно выбивающийся из общей канвы пункт, но не менее важный. Для начала – запаситесь терпением. К ситуациям типа «почини утюг, тыжпрограммист» привыкаешь быстро, а вот к срокам запуска новых проектов нужно быть морально готовым. Если в программировании вы от нуля до года и считаетесь Junior, готовьтесь к критике и учитесь принимать ее, ревью кода наставником – процесс зачастую болезненный. Но одновременно обязательный скилл – умение отстаивать свою точку зрения и конструктивно спорить, иногда в споре рождается истина. Разработчики никогда не перестают обучаться, потолка в профессии практически не существует, так что обучаемость и ЖЕЛАНИЕ узнавать новое – основа вашего развития.
Меня часто спрашивают, когда новичок достигает уровня middle, а когда уже можно гордо именоваться «сеньором». Я считаю, что момент перехода от уровня к уровню определяет не количество отработанных лет, хотя практические навыки и являются ключевым критерием. Как раз-таки софтскиллз зачастую определяют скорость роста разработчика: обучаемый и трудолюбивый новичок уже через несколько месяцев может писать качественный код на нескольких языках и уметь работать в команде. А разработчик с опытом 10 лет может оказаться неспособным к решению нестандартных задач, управлению командой и иметь однобокие навыки.
Так я вижу путь развития разработчика биллинга, так мы растим квалифицированных спецов в нашей команде Forward Telecom. Кажется, ничего не упустил, но я всегда благодарен за полезные дополнения по существу.
Автор: Форвард-Телеком