У кіраўніка кампаніі-распрацоўніка білінгу ёсць два шляхі пабудовы каманды. Першы - набраць ужо гатовых "сеньёраў" і бесперапынна ствараць такія ўмовы працы, каб яны выкарыстоўвалі навыкі і вопыт па максімуме, развіваліся і пры гэтым не перадраліся. Другі - стварыць каманду з мікса пачаткоўцаў, "мідаў" і профі, каб тыя размаўлялі, уплывалі адзін на аднаго, вучыліся і раслі ўнутры кампаніі. Я супраць замкнёнага круга а-ля «няма досведу - няма працы - няма досведу» і не бачу праблемы ў найманні пачаткоўца распрацоўніка. У 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. Здаецца, нічога не выпусціў, але я заўсёды ўдзячны за карысныя дапаўненні па сутнасці.
Крыніца: habr.com