Citu dienu es intervÄju JavaScript izstrÄdÄtÄju, kurÅ” pretendÄja uz vadoÅ”o amatu. KolÄÄ£is, kurÅ” arÄ« piedalÄ«jÄs intervijÄ, lÅ«dza kandidÄtu uzrakstÄ«t funkciju, kas veiktu HTTP pieprasÄ«jumu un, ja tas neizdodas, vairÄkas reizes mÄÄ£inÄtu vÄlreiz.
ViÅÅ” uzrakstÄ«ja kodu tieÅ”i uz tÄfeles, tÄpÄc pietiktu uzzÄ«mÄt kaut ko aptuvenu. Ja viÅÅ” vienkÄrÅ”i bÅ«tu parÄdÄ«jis, ka labi saprot, par ko ir runa, mÄs bÅ«tu bijuÅ”i diezgan apmierinÄti. Bet diemžÄl viÅÅ” nespÄja atrast veiksmÄ«gu risinÄjumu. Tad mÄs, sajÅ«sminÄdami, nolÄmÄm nedaudz atvieglot uzdevumu un lÅ«dzÄm viÅam funkciju ar atzvanÄ«Å”anu pÄrvÄrst par funkciju, kas balstÄ«ta uz solÄ«jumiem.
Bet diemžÄl. JÄ, bija acÄ«mredzams, ka viÅÅ” ar Å”Ädu kodu bija saskÄries jau iepriekÅ”. ViÅÅ” vispÄrÄ«gi zinÄja, kÄ tur viss darbojas. Viss, kas mums nepiecieÅ”ams, ir risinÄjuma skice, kas parÄda koncepcijas izpratni. TaÄu kods, ko kandidÄts uzrakstÄ«ja uz tÄfeles, bija pilnÄ«gs absurds. ViÅam bija ļoti neskaidrs priekÅ”stats par to, kÄdi solÄ«jumi ir JavaScript, un viÅÅ” nevarÄja Ä«sti izskaidrot, kÄpÄc tie bija nepiecieÅ”ami. Junioram tas bÅ«tu bijis piedodami, taÄu viÅÅ” vairs nebija piemÄrots seniora amatam. KÄ Å”is izstrÄdÄtÄjs spÄtu izlabot kļūdas sarežģītÄ solÄ«jumu Ä·ÄdÄ un izskaidrot citiem, ko tieÅ”i viÅÅ” darÄ«ja?
IzstrÄdÄtÄji gatavu kodu uzskata par paÅ”saprotamu
IzstrÄdes procesÄ mÄs pastÄvÄ«gi sastopamies ar reproducÄjamiem materiÄliem. MÄs pÄrsÅ«tÄm koda fragmentus, lai mums tie katru reizi nebÅ«tu jÄraksta no jauna. AttiecÄ«gi, koncentrÄjot visu savu uzmanÄ«bu uz galvenajÄm daļÄm, mÄs skatÄmies uz gatavo kodu, ar kuru strÄdÄjam, kÄ uz kaut ko paÅ”saprotamu - mÄs vienkÄrÅ”i pieÅemam, ka viss darbosies kÄ nÄkas.
Un parasti tas darbojas, bet, kad lietas kļūst sarežģītas, mehÄnikas izpratne vairÄk nekÄ atmaksÄjas.
LÄ«dz ar to mÅ«su kandidÄts uz vecÄkÄ attÄ«stÄ«tÄja amatu solÄ«jumu objektus uzskatÄ«ja par paÅ”saprotamiem. ViÅam, iespÄjams, bija ideja par to, kÄ ar tÄm rÄ«koties, kad tÄs parÄdÄs kaut kur kÄda cita kodÄ, taÄu viÅÅ” nesaprata vispÄrÄjo principu un nevarÄja to atkÄrtot intervijas laikÄ. VarbÅ«t viÅÅ” atcerÄjÄs fragmentu no galvas - tas nav tik grÅ«ti:
return new Promise((resolve, reject) => {
functionWithCallback((err, result) => {
return err ? reject(err) : resolve(result);
});
});
Es arÄ« to izdarÄ«ju ā un, iespÄjams, mÄs visi kaut kad to esam darÄ«juÅ”i. ViÅi vienkÄrÅ”i iegaumÄja koda gabalu, lai vÄlÄk varÄtu to izmantot savÄ darbÄ, vienlaikus iegÅ«stot tikai vispÄrÄju priekÅ”statu par to, kÄ viss tur darbojas. Bet, ja izstrÄdÄtÄjs patieÅ”Äm saprata koncepciju, viÅam nekas nebÅ«tu jÄatceras - viÅÅ” vienkÄrÅ”i zinÄtu, kÄ to izdarÄ«t, un viegli reproducÄtu visu nepiecieÅ”amo kodÄ.
Atgriezieties pie saknÄm
2012. gadÄ, kad priekÅ”gala ietvaru dominÄÅ”ana vÄl nebija noteikta, jQuery valdÄ«ja pasaulÄ, un es izlasÄ«ju grÄmatu
GrÄmata mÄca lasÄ«tÄjam, kÄ no nulles izveidot savu jQuery, un sniedz unikÄlu ieskatu domÄÅ”anas procesÄ, kas noveda pie bibliotÄkas izveides. PÄdÄjos gados jQuery ir zaudÄjis savu agrÄko popularitÄti, taÄu es joprojÄm ļoti iesaku grÄmatu. Mani visvairÄk viÅÄ pÄrsteidza neatlaidÄ«gÄ sajÅ«ta, ka es pati par to visu bÅ«tu varÄjusi domÄt. Autora aprakstÄ«tÄs darbÄ«bas Ŕķita tik loÄ£iskas, tik skaidras, ka es nopietni sÄku domÄt, ka es varÄtu viegli izveidot jQuery, ja tikko tikÅ”u pie tÄ.
Protams, Ä«stenÄ«bÄ es neko tÄdu nebÅ«tu varÄjis izdarÄ«t ā es bÅ«tu nolÄmis, ka tas bija neizturami grÅ«ti. Mani risinÄjumi Ŕķistu pÄrÄk vienkÄrÅ”i un naivi, lai strÄdÄtu, un es padoties. Es jQuery klasificÄtu kÄ paÅ”saprotamas lietas, kuru pareizai darbÄ«bai vajag tikai akli ticÄt. PÄc tam es diez vai veltu laiku, iedziļinoties Ŕīs bibliotÄkas mehÄnikÄ, bet vienkÄrÅ”i izmantotu to kÄ sava veida melno kasti.
TaÄu, lasot Å”o grÄmatu, es kļuvu par citu cilvÄku. Es sÄku lasÄ«t avota kodu un atklÄju, ka daudzu risinÄjumu ievieÅ”ana patiesÄ«bÄ ir ļoti caurspÄ«dÄ«ga, pat acÄ«mredzama. NÄ, protams, kaut ko tÄdu izdomÄt paÅ”am ir cits stÄsts. TaÄu tÄ ir citu cilvÄku koda izpÄte un esoÅ”o risinÄjumu reproducÄÅ”ana, kas palÄ«dz mums nÄkt klajÄ ar kaut ko savu.
IegÅ«tÄ iedvesma un modeļi, kurus sÄkat pamanÄ«t, mainÄ«s jÅ«s kÄ izstrÄdÄtÄju. JÅ«s atklÄsiet, ka Ŕī brÄ«niŔķīgÄ bibliotÄka, kuru jÅ«s pastÄvÄ«gi izmantojat un kuru esat pieradis uzskatÄ«t par maÄ£isku artefaktu, nemaz nedarbojas ar maÄ£iju, bet vienkÄrÅ”i lakoniski un atjautÄ«gi atrisina problÄmu.
DažkÄrt nÄksies pÄrspÄt kodu, soli pa solim to analizÄjot, taÄu Å”Ädi, maziem, konsekventiem solÄ«Å”iem, var atkÄrtot autora ceļu uz risinÄjumu. Tas ļaus jums dziļÄk ienirt kodÄÅ”anas procesÄ un sniegs jums lielÄku pÄrliecÄ«bu, izstrÄdÄjot savus risinÄjumus.
Kad sÄku strÄdÄt ar solÄ«jumiem, man tÄ Å”Ä·ita tÄ«ra maÄ£ija. Tad es uzzinÄju, ka tie ir balstÄ«ti uz tiem paÅ”iem atzvaniem, un mana programmÄÅ”anas pasaule apgriezÄs kÄjÄm gaisÄ. TÄtad modelis, kura mÄrÄ·is ir glÄbt mÅ«s no atzvanÄ«Å”anas, pati par sevi tiek Ä«stenota, izmantojot atzvanÄ«Å”anu?!
Tas man palÄ«dzÄja paskatÄ«ties uz Å”o lietu ar citÄm acÄ«m un saprast, ka manÄ priekÅ”Ä nav nekÄds neskaidrs koda fragments, kura pÄrmÄrÄ«go sarežģītÄ«bu es nekad mÅ«Å¾Ä nesapratÄ«Å”u. Tie ir tikai modeļi, kurus var bez problÄmÄm saprast ar pienÄcÄ«gu zinÄtkÄri un dziļu iedziļinÄÅ”anos. TÄdÄ veidÄ cilvÄki iemÄcÄs kodÄt un augt kÄ izstrÄdÄtÄji.
Izgudrojiet Ŕo riteni no jauna
TÄpÄc turpiniet un izgudrojiet riteÅus no jauna: uzrakstiet savu datu saistÄ«Å”anas kodu, izveidojiet paÅ”mÄju solÄ«jumu vai pat izveidojiet savu valsts pÄrvaldÄ«bas risinÄjumu.
Nav svarÄ«gi, ka neviens to visu neizmantos, taÄu tagad jÅ«s zinÄt, kÄ to izdarÄ«t. Un, ja jums ir iespÄja vÄlÄk izmantot Å”Ädas izstrÄdes savos projektos, tad tas parasti ir lieliski. VarÄsi tÄs attÄ«stÄ«t un iemÄcÄ«ties ko citu.
Å eit mÄrÄ·is nav nosÅ«tÄ«t savu kodu uz ražoÅ”anu, bet gan iemÄcÄ«ties kaut ko jaunu. PaÅ”a esoÅ”Ä risinÄjuma ievieÅ”anas rakstÄ«Å”ana ir lielisks veids, kÄ mÄcÄ«ties no labÄkajiem programmÄtÄjiem un tÄdÄjÄdi pilnveidot savas prasmes.
Avots: www.habr.com