3 прычыны, чаму мне падабаецца быць праграмістам
Колькасць распрацоўшчыкаў кожны год павялічваецца на некалькі мільёнаў, з’яўляюцца новыя сэрвісы і прыкладанні. Чарговы заснавальнік стартапа «Зробім свет лепшым» распавядае, як ён зробіць свет лепшым. У свеце IT поўная ідылія.
І толькі старэйшы распрацоўшчык Васіль — дзесьці ў цёмнай кватэры, у 3 гадзіны ночы, пад святлом настольнай лямпы — спрабуе разабрацца, чаму з карыстальнiка спісалі ў два разы большую суму за паслугу. Пра што той абавязкова паведаміў у тэхнічную падтрымку, лаканічна і дакладна апісаўшы праблему і ўвесь аддзел распрацоўкі. Так што ж прымушае Васіля працягваць працаваць нават начамі і пры гэтым атрымліваць задавальненне ад працы?
1. Праграмаванне — гэта крэатыўна
Ага, я ўжо чую, як строгі мужчына з велізарнай барадой кажа мне: “Гэй, хлопчык, праграмаванне — гэта цяжкая тэхнічная дысцыпліна! Тут няма месца забавам, і як ты сказаў? Крэатыўнасці!” І пляснуўшы сябе рукой па лбе (і гэта падчас COVID-19!), мужчына разгортваецца і сыходзіць. Што ж, хто я такі, каб спрачацца са сваім выдуманым суразмоўцам? Таму пачакаем, пакуль ён сыдзе, і працягнем!
Дык чаму быць праграмістам — гэта крэатыўна?
Як сапраўдныя сцэнарысты, кожны дзень мы дапаўняем зыходныя коды новымі сюжэтамі, нашы акцёры — гэта нашы аб’екты. Ключавых персанажаў мы прапісваем педантычна, ўдзяляем увагу дробязям. Пабочныя персанажы нават не заўсёды удастойваюцца асобнага класа. Зрэшты, некаторыя праграмісты хутчэй пісьменнікі дэтэктыўнага жанру. Іх код — гэта месца злачынства, але гэта тэма для асобнага паста.
Ці як сапраўдныя архітэктары мы ствараем велізарныя праекты, у чымсьці унікальныя, а недзе запазычваем гатовыя рашэнні. Па артэрыях велізарных сістэм перасылаюцца сотні тысяч паведамленняў, мільёны шчаслівых карыстальнікаў радасна дзеляцца тэрабайтамі асабістых дадзеных. Нашы сістэмы маштабныя і прыгожыя! Хоць часам нашы праекты больш нагадваюць стары сарцір, які не падае толькі таму, што яго падперлі палкай. Звычайна такія праекты добра апісаны праграмістамі-дэтэктывамі ў іх творах, але мы сёння пра іншае.
Пачуццё прыгожага ўласціва кожнаму ў той ці іншай ступені, але, на вялікі жаль, яно вельмі індывідуальна. Таму, каб творцы не пабіліся падчас чарговай рэвізіі кода (code review), мы ствараем правілы і стандарты кода (coding conventions).
Пры гэтым сам працэс задання стандартаў можа выклікаць яшчэ больш пытанняў. Але ж і інтэрнэт ужо поўны адкрытымі стандартамі, напрыклад, Google Style Guide, Microsoft C# Coding Conventions або Style Guide for Python Code, якія можна браць за аснову. Варта будзе згадаць і пра мноства цудоўных кніг — “Дасканалы код” С.Макконелла, “Шаблоны карпаратыўных сістэм” М.Фаўлера, “Праграміст-прагматык” Д.Томаса і Э.Ханта, — аўтары якіх не толькі апісалі добрыя практыкі, але і абгрунтавалі выбар такіх падыходаў.
Праграмаванне, вядома, нельга назваць цалкам творчай дысцыплінай. Але ў любым выпадку, пачуццё прыгожага і жаданне шукаць элегантныя і прыгожыя рашэнні дапамогуць пісаць чысты, стабільны код, які лёгка і прыемна падтрымліваць.
2. Праграмаванне — гэта пастаяннае вывучэнне
“Чарговае клішэ!” — закрычыць абураны чытач. “Ты яшчэ напішы нам, што праграмісты любяць сваю працу за гібкасць у графіку і месцазнаходжанні!”. Абавязкова! Але крыху пазней, а пакуль пачну з вядомага анекдота:
— Ну і слабая ж група мне трапілася! — Скардзіцца выкладчык пасля пары калегу, — Тлумачу ім тэарэму — не разумеюць. Тлумачу другі раз — не разумеюць. Тлумачу трэці раз — я ўжо зразумеў, а яны не разумеюць!
Вядомы анекдот
Распрацоўка — гэта досыць маладая дысцыпліна. Пастаянна з’яўляюцца новыя бібліятэкі і фрэймворкі, папярэднія становяцца старымі і “нямоднымі”. Вядома, для авалодання новымі ведамі звычайна нічога не трэба, акрамя кампутара і інтэрнэту. Але ў такім рытме мы паспяваем ахопліваць веды толькі па вярхам. У гэтай сітуацыі праграмісты ўнутры адной каманды, супольнасці або форуму вымушаны пастаянна абменьвацца ведамі, задаючы пытанні і адказваючы на пытанні сваіх калегаў. Кампаніі аплачваюць паездкі на розныя курсы і канферэнцыі.
Але не менш важна і самому дзяліцца ведамі, напрыклад, выступаючы з дакладам на канферэнцыі або публікуючы чарговы пост у блогу. Як у анекдоце вышэй — гэта дазваляе значна глыбей разабрацца ў цікавай тэматыцы.
Можна ўдзельнічаць у адаптацыі (onboarding) новых спецыялістаў, якія прыходзяць у кампанію. Гэта не толькі дапаможа самому глыбей зразумець, як працуе праект, але ж і ў момант усталяваць даверныя адносіны, і паказаць, хто на праекце татачка.
Працэс распрацоўкі — гэта не толькі напісанне кода і перамяшчэнне задачак у JIRA, але і ўзаемадзеянне са спецыялістамі, у тым ліку і ў сумежных абласцях. Пры жаданні заўсёды можна паспрабаваць заняцца распрацоўкай front-end або back-end, глыбей вывучыць DevOps або заняцца машынным навучаннем.
Больш за тое, з’яўляючыся прыкладной дысцыплінай, праграмаванне дазваляе ахопліваць не толькі тэхнічныя аспекты распрацоўкі, але і вывучаць мадэлі бізнесу.
Як адзначалася вышэй, тэхналогіі і веды пастаянна выходзяць з моды. Менавіта таму важна грунтавацца на нейкім базісе. Любое тэхнічнае рашэнне — гэта нейкі алгарытм. Любыя мадэлі па выніку апісваюцца нейкімі структурамі дадзеных. Напрыклад прачытанне “Алгарытмы. Пабудова і аналіз” Т.Кормана, “Мастацтва праграмавання” Д.Кнута, “Структуры дадзеных і алгарытмы” і “Пабудова і аналіз вылічальных алгарытмаў” А.Ахо, Д.Ульмана і Д.Хопкрафта прынясе на пачатковым этапе нашмат больш карысці, чым вывучэнне спецыфікацыі чарговай бібліятэкі, дазволіць знаходзіць аптымальныя рашэнні ў незалежнасці ад мовы ці фреймворка.
Вядома, бесперапыннае вывучэнне можа дэматаваць і вымотваць, але затое спрыяе пастаяннаму развіццю і падтрымцы мозга ў тонусе.
3. Дыстанцыйная праца і гібкі працоўны графік
Бераг мора. Лёгкі марскі брыз абдзімае твар. На гадзінніку другая гадзіна дня, а значыць самы час пачынаць працоўны дзень! Адна рука ляжыць на клавіятуры, другая трымае ахаладжальны кактэйль. У гэты момант сон сканчаецца…
Вядома, што дыстанцыйная праца і гібкі працоўны графік не маюць нічога агульнага з гультаяватымі націскамі клавіш, лежачы на беразе, і патрабуюць пэўнай самадысцыпліны. Але наколькі больш можна атрымаць задавальнення ад прэзентацыі калегі, паралельна жуючы бутэрброд! Ён ужо зусім не падобны на нуднага асла, які павольна пераключае слайды. А пад піва — так любая прэзентацыя зайграе новымі фарбамі! (Але ж мы усё-такі людзі сур’ёзныя і такое сабе не дазваляем. Ніколі. Гэта проста непрыгожа.)
Праца з дому дазваляе зэканоміць процьму часу. Нават калі дарога ў адзін бок да працы займае 20 хвілін, то толькі на дарогу на працягу працоўнага тыдня сыходзіць больш за тры гадзіны — гэта тры паўнацэнных пахода ў спартыўную залу! (Два добрых фільма.)
У той жа час, для дыстанцыйнай працы патрэбен пэўны ўзровень камфорту. Складана думаць аб працоўных задачах, калі на шыі вісіць дзіця, у суседнім пакоі грае музыка, а цябе адпраўляюць у краму — бо лепш за ўсё думаецца на свежым паветры. Таму калі ў кватэры няма магчымасці арганізаваць добрае працоўнае месца, то ногі самі будуць штораніцы несці свайго ўладальніка ў бок любімага офіса.
З гібкім працоўным графікам выходзіць крыху больш складана. Сучасныя працэсы распрацоўкі патрабуюць пастаяннага ўзаемадзеяння членаў каманды: штодзённыя стендапы, планавання, рэтраперспектывы. І гэта далёка не поўны пералік мітынгаў, у якіх даводзіцца ўдзельнічаць. Працоўны дзень ты можаш пачынаць у любы час, але на стэндапе ў 8:00 будзь добры быць. А ўжо а 16:00 вы будзеце дружна камандай планаваць задачы на наступны тыдзень. Вельмі гібка!
Між тым, прысутнічаць на ўсіх мітынгах звычайна няма вострай неабходнасці, таму заўсёды ёсць магчымасць дамовіцца з калегамі пра сваю адсутнасць (і нармальна выспацца). Ды і мітынгі стараюцца не расцягваць на ўвесь дзень, а групаваць у пэўныя часовыя рамкі, зручныя для ўсёй каманды.
Гібкі працоўны графік — гэта сапраўды зручны бонус, які дазваляе распланаваць свой працоўны дзень у адпаведнасьці са сваімі патрэбамі і заставацца максімальна прадуктыўным.