Шта очекивати у првој недељи као програмер софтвера

Знате да уживате у кодирању, али како је то радити за посао? Шта бисте могли очекивати у првој недељи?

Нисам могао да замислим своју прву недељу на новом послу. Да ли одмах почињете да кодирате? Шта ако користе језик / оквир који нисте научили? Како убрзати рад са кодном базом и знати који су приоритети? Да ли је лако ући у тим? Да ли само ... отворите свој едитор и започнете са кодирањем? Шта ако нешто ужасно погрешите и све сломите?

Радио сам две године на боотцамп-у за кодирање и чуо сам слична питања од многих ученика. Знали су да воле кодирање и волели су оно што свакодневно раде у боотцампу - али желели су да знају какав је осећај отићи у прави посао.

У овом посту ћу користити примере онога што сам радио током првих неколико дана у својој најновијој улози да бих вам пружио представу о томе шта бисте могли очекивати.

Позадина

Радим као програмер комплетних стекова у малој компанији. У инжењерском тиму су четири програмера (укључујући мене) и техничког директора. Такође блиско сарађујемо са власником производа, који је један од оснивача. Ушао сам са неколико година искуства у кодирању.

Све услуге су на АВС-у и користимо НодеЈС и Руби.

1. дан: Углавном подешавање

У канцеларију сам стигао у 9:00. На мом столу чекао ме је сјајни нови МацБоок Про, у комплету са адаптерима и два екрана. Развојни тим ме извео на доручак у оближњи кафић, а кад смо се вратили, сео сам и почео да постављам машину.

Будући да сам раније радио безброј развојних окружења док сам радио на боотцамп-у за кодирање, ово је било прилично једноставно и није ми требало дуго. Међутим, само једном сам на свом лаптопу поставио окружење Руби / Раилс, тако да ми је тај део требало мало дуже.

Добио сам лист А4 са списком захтева, бројевима верзија и тако даље, које сам пажљиво следио. Такође сам добио приступ разним веб локацијама као што су БитБуцкет, менаџер лозинки, АВС и Гитлаб и подесио ССХ кључеве на мојој новој машини.

Пре ручка, отишао сам на ћаскање са техничким директором и детаљно смо разговарали о производу, архитектури и циљевима и приоритетима које развојни тим има у догледној будућности.

После ручка клонирао сам неке услуге које чине апликацију и почео да се упознајем са базом кодова. Срећом по мене, придружио сам се тиму у време када су се развијали неки нови, свежи делови услуге, што значи да нисам имао превише кода да бих убрзао.

Последњих неколико сати у дану седео сам са једним од старијих програмера док је он примењивао функцију. Искористили смо га као прилику да ме води кроз тај део апликације, објашњавајући зашто су ствари урађене на одређени начин, делове који су стварали проблеме и аспекте који би се могли променити у будућности.

2. дан: Тестирање

Добио сам задатак да тестирам неколико функција у једном од репоа за апликацију. Давање нових тестова за писање је одличан начин да их упознате са базом кода и упознате са неком логиком апликације.

Провела сам прилично времена само читајући код, схватајући како то све заједно функционише и видећи да ли могу да следим ток логике. Занимали су ме конвенције које је тим одабрао, начин на који је кода подијељена и стилски избори. Писање тестова није било тешко, али увек сам врло опрезан и први пут означавам базу кодова на којој раније нисам радио!

Нисам желео да мој рад стрши, па сам покушао да посматрам и упијем стил кода који се тренутно користио. Донекле вам добра пракса попут облагања много помаже, али постоје и општи архитектонски и стилски избори у којима вам облагање не може помоћи.

Један мали изазов који сам имао био је навикавање на Гит ток рада који је тим користио. Сваки тим има свој начин рада: неки тимови се спајају, неки тимови пребацују, неки тимови извршавају сквош, а други не, неки прате популарне токове посла као што је овај, а други само на силу гурају у мастер нехотично. Уз то постоје конвенције поруке и описа урезивања како би се исправило, поступак прегледа итд.

Све у свему, постоји много неексплицитних ствари „овако радимо“ које треба покупити. Након што сам неколико пута прошао кроз поступак, исправљајући своје грешке и постављајући питања, то је сада друга природа.

Све време сам писао белешке у бележницу и чувао исечке кода у апликацији која се зове Беар. Требало је узети толико тога - како то учинити, префериране процедуре за тим, ствари које раније нисам радио и нове језике и оквире за учење.

Морао сам да будем заиста активан у бележењу онога што учим. На крају или на почетку сваког дана нагласио сам да прегледам своје белешке, додам додатна објашњења стварима које сам написао у журби и истраживам ствари које нисам у потпуности разумео. Све ово такође је потрајало.

3. дан: Спикинг АВС

Као део издања које смо имали у току, морали смо да одлучимо како да применимо услугу коју градимо. Користили смо АВС, али постојао је избор између употребе инстанце ЕЦ2, што би био најједноставнији избор, јер је то само сервер у облаку који покреће вашу апликацију или нешто мало лепше попут Еластиц Цонтаинер Сервице. Предност ЕЦС-а је у томе што би управљао скалирањем вишеструких инстанци ЕЦ2 и стога био добра опција за будућност. Али то за сада није било потпуно битно.

С обзиром на ово, добио сам (добровољно пријављен) задатак да истакнем како би било лако распоредити нашу службу на ЕЦС. Шиљање само значи испробати нешто како бисте истражили изводљивост. Ако ће то бити тешко, није вредело, јер је то била будућа оптимизација која нам тренутно није била очајнички потребна.

Ово је подразумевало пуно учења за мене, јер раније нисам користио Амазонов ЕЦС, плус апликација је била апликација Раилс и био сам много мање упознат са целим екосистемом Руби / Раилс. Провео сам можда укупно 30 сати учећи Рубија пре него што сам се придружио компанији, јер сам знао да је то део њиховог стека, али једва да сам додирнуо Раилс. Плус, задатак је подразумевао мало рада са Доцкером, што је такође за мене било ново.

Моје технолошко вођство ме је натерало да започнем са оним што је у основи представљало једносатни увод у Доцкер који је био изузетно користан. Одатле сам провео већи део дана стварајући нову апликацију Раилс и пратећи разне чланке, документе и примере да видим да ли могу да покренем ствар на ЕЦС-у. Скоро сам стигао, али успостављање интеграције базе података је постало камен спотицања. Било је баш толико нових ствари.

Сигуран сам да неко познавалац ЕЦС-а или Раилс-а не би имао толико проблема. Нисам могао да одем да кажем да је процес био објективно тежак. Било је тешко за мене , али то не значи да је тешко за све.

Није био изузетно продуктиван дан у погледу употребљивог кода или резултата, али осећао сам се као да сам научио много и из те перспективе и било је сјајно.

4. дан: Упаривање и менторство

У канцеларију сам стигао у 8 сати ујутро и док сам чекао да дођу други, пратио сам део Доцкер курса који сам гледао на Плуралсигхту. Још увек сам желео да довршим скок од јуче, али препознао сам да ми треба више уземљења бар у једној од нових технологија са којима сам радио.

Провео сам око сат времена на курсу, пре него што је још људи стигло у канцеларију и одлучили смо ко ће шта радити. Још један нови програмер, који је почео нешто пре мене, управо се вратио са одмора. Одлучили смо да се удружимо на задатку. Градили смо нову функцију у апликацији Раилс. Ово је био прилично једноставан задатак, али Раилс је био нов за обоје, па је било сјајно радити заједно. Када нам је требало нешто објаснити, једноставно бисмо питали неког од других програмера, било лично или на Слацку. Имали смо сјајне дискусије на овај начин и почео сам да схватам како функционише Раилс.

Поподне сам имао менторску сесију са технолошким водством, која је била издашна, јер сам већ дан раније имао приватни час Доцкера! Менторство је прилика да преиспитујете, заједно пролазите кроз проблеме, научите нешто заједно или једноставно одаберете нечији мозак. Пренос знања је веома користан.

Имао сам пуно чудних питања о стварима из базе података и Раилс-у, али жалим што нисам имао нити један циљ за ту прву сесију. Претпостављам да једноставно нисам био сигуран шта да очекујем. У наредним сесијама тражио сам од свог ментора да ми покаже како да урадим нешто специфично, попут конфигурисања НГИНКС сервера или конфигурације ЕЦ2 инстанце за приступ бази података - ствари које би он већ знао, али требало би ми много више времена да схватим сам.

5. дан: Састанци и спајања

Многи софтверски тимови ће користити комбинације станд-уп састанака (често свакодневних), редовних ретроспектива (о радним праксама или техничким питањима) и планирања сесија како би организовали свој радни процес на високом нивоу, у комбинацији са неком врстом алата за праћење где рад у могу се визуализовати напредак и преостали посао.

Наш тим се не разликује, а већину заказаних састанака имамо у петак. Као и многи тимови, нагласак током наших састанака је да размислимо о томе како смо радили и шта смо постигли, да заједнички решимо проблеме или блокове и да идентификујемо и планирамо предстојећи рад, тако да увек имамо нешто испред нас спремни да пређемо на.

Такође идемо на доручак да се вежемо, што је страшно!

Све у свему, већи део јутра је потрошен на ове активности. Нисам имао шта да допринесем, јер сам још увек обилазио сву терминологију и структуру производа, и увек сам заостајао за реченицом, покушавајући да сустигнем оно што је управо речено. Сећам се да сам се током те прве недеље осећао као да ми се мозак топи док сам покушавао да држим у мислима све различите компоненте архитектуре (постаје све боље како време одмиче, зато не брините!).

Поподне смо мој пар и ја успели да завршимо оно на чему смо радили, затражимо преглед кода, извршимо измене и отворимо захтев за обједињавање нашег рада у апликацији. Нисмо се распоредили јер је био петак поподне, али следећег понедељка. ?

Хвала на читању, надам се да вам је овај чланак дао неку идеју о томе како би могла да изгледа ваша прва недеља програмера.

Волео бих да чујем ваше коментаре и искуства!