Керівник компанії-розробника білінгу має два шляхи побудови команди. Перший – набрати вже готових «сеньйорів» і безперервно створювати такі умови роботи, щоб вони використовували навички та досвід по максимуму, розвивалися і при цьому не побилися. Другий – створити команду з міксу новачків, «мідів» та профі, щоб ті спілкувалися, впливали один на одного, навчалися та росли всередині компанії. Я проти замкнутого кола а-ля «немає досвіду – немає роботи – немає досвіду» і не бачу проблеми в наймі розробника-початківця. У Forward Telecom давно діє стажистська програма, яка стала трампліном кар'єри для багатьох співробітників.
Зараз розповім, як бачу шлях розвитку розробника білінгу, і у якій послідовності потрібно освоювати професійні навички.
1. Вивчити мову програмування
Для початку – будь-хто. У пріоритеті Java, Python та JavaScript, але для отримання базових знань підійдуть Ruby, Go, C, C++. Як учити? Проходити платні та безкоштовні курси, можу порадити навчання від 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. Здається, нічого не прогаяв, але я завжди вдячний за корисні доповнення по суті.
Джерело: habr.com