Miks on kasulik ratast leiutada

Miks on kasulik ratast leiutada

Hiljuti viisin lÀbi intervjuu JavaScript arendajaga, kes kandideeris senior positsioonile. Kaastöötaja, kes samuti intervjuul viibis, palus kandidaadil kirjutada funktsiooni, mis teeks HTTP-pÀringu ja ebaÔnnestumise korral prooviks veel mitu korda.

Ta kirjutas koodi otse tahvlile, seega piisanuks lihtsalt umbkaudse esituse tegemisest. Kui ta oleks lihtsalt nĂ€idanud, et mĂ”istab hĂ€sti, mis asi see on, oleksime tĂ€ielikult rahul olnud. Kahjuks ei Ă”nnestunud tal aga leida head lahendust. Nii et arvestades tema nĂ€rvilisust, otsustasime ĂŒlesannet veidi kergendada ja palusime tal muuta tagasikutsumisega funktsioon lubadustel pĂ”hinevaks funktsiooniks.

Kahjuks. Jah, oli selge, et sarnast koodi oli ta varem nĂ€inud. Ta teadis ĂŒldiselt, kuidas seal kĂ”ik toimib. Me oleksime rahul olnud lahenduse visandiga, mis nĂ€itaks, et ta mĂ”istab kontsepti. Siiski, kood, mida kandidaat tahvlil kirjutas, oli tĂ€ielik mĂ”ttetuks. Tal oli ÀÀrmiselt Ă€hmane arusaam sellest, mis on JavaScripti lubadused, ja ta ei suutnud korralikult selgitada, miks neid vaja on. Juniorina oleks see olnud veel andestatav, kuid vanema positsiooni jaoks ei olnud ta sobiv. Kuidas suudaks see arendaja parandada vigu keerulises lubaduste ahelas ja selgitada teistele, mida ta tĂ€pselt tegi?

Arendajad peavad valmis koodi iseenesestmÔistetavaks.

Arendamise protsessis kohtame pidevalt korduvaid materjale. Me kopeerime koodifragmente, et mitte iga kord neid uuesti kirjutama hakata. SeetĂ”ttu, keskendudes kĂ”ige olulisematele osadele, vaatame valmis koodi, millega töötame, kui millegi iseenesestmĂ”istetavaga – me lihtsalt eeldame, et see töötab nii, nagu peab.

Ja see tavaliselt tÔesti töötab, kuid kui tekivad raskused, tasub tema mehhanika mÔistmine rohkem kui positiivne.

Nii arvati, et meie kandidaat vanema arendaja positsioonile nĂ€gi promise objekti iseenesestmĂ”istetavalt. Ta tĂ”enĂ€oliselt kujutas ette, kuidas nendega hakkama saada, kui nad kuskil teiste koodis esinevad, kuid ĂŒldist pĂ”himĂ”tet ta ei mĂ”istnud ja ei suutnud seda intervjuul ise uuesti luua. VĂ”ib-olla mĂ€letas ta fragmenti peast – see pole ju ĂŒldse nii keeruline:

return new Promise((resolve, reject) => {
  functionWithCallback((err, result) => {
   return err ? reject(err) : resolve(result);
  });
});

Mina tegin seda ka – tĂ”enĂ€oliselt oleme kĂ”ik mingil hetkel seda teinud. Lihtsalt Ă”ppisime koodi tĂŒkki peast, et hiljem seda oma töös kasutada, omades ainult ĂŒldist ettekujutust, kuidas seal kĂ”ik töötab. Kuid kui arendaja mĂ”istaks tĂ”eliselt kontsepti, ei peaks ta midagi meelde jĂ€tma – ta lihtsalt teaks, kuidas see kĂ€ib, ja saaks kĂ”ik vajaliku koodis hĂ”lpsasti uuesti luua.

Pöörduge juurte poole

2012. aastal, kui frontend raamistike valitsemine veel ei olnud kehtestatud, valitses maailmas jQuery, ja ma lugesin raamatut Secrets of the JavaScript Ninja, mille autor oli John Resig, jQuery looja.

Raamat Ă”petab lugejat, kuidas luua oma jQuery nullist ja annab ainulaadse vĂ”imaluse tutvuda mĂ”tlemisega, mis viis raamatukogu loomisele. Viimastel aastatel on jQuery oma endise populaarsuse kaotanud, kuid ma soovitan seda raamatut siiski vĂ€ga. Mis mind raamatust kĂ”ige rohkem ĂŒllatas, oli tungiv tunne, et ma oleksin vĂ”inud sellele ise mĂ”elda. Autor kirjeldatud sammud tundusid nii loogilised ja arusaadavad, et mul hakkas tĂ”siselt tunduma, et ma oleksin ka vabalt vĂ”inud jQuery luua, kui oleksin vaid asja ette vĂ”tnud.

Muidugi, reaalsuses ma ei oleks sellega hakkama saanud – oleksin arvanud, et see on ĂŒlemÀÀra keeruline. Omandatud lahendused tunduksid mulle liiga lihtsad ja naiivsed, et töötada, ja ma oleksin kĂ€ed rĂŒppes alla andnud. Ma oleksin pidanud jQuery enesestmĂ”istetavaks asjaks, mille korralikku toimimist on lihtsalt pimesi usaldama. Hiljem ma tĂ”enĂ€oliselt ei oleks kulutanud aega, et mĂ”ista selle raamatukogu mehhanismi, vaid oleksin seda kasutanud kui mingit musta kasti.

Kuid selle raamatu tutvumine muutis mind teiseks inimeseks. Hakkasin sĂŒvenema lĂ€htekoodi ja avastasin, et paljude lahenduste rakendamine on tegelikult vĂ€ga lĂ€bipaistev, isegi ilmne. Loomulikult, et selleni jĂ”uda – see on juba hoopis teine lugu. Kuid just teiste koodi uurimine ja juba olemasolevate lahenduste rekonstrueerimine aitab meil midagi uut vĂ€lja mĂ”elda.

Inspiratsioon, mida te saad, ja mustrid, mida hakkate mÀrkama, muudavad teid arendajana. Te avastate, et see suurepÀrane teek, mida te pidevalt kasutate ja mille kohta olete harjunud mÔtlema kui maagilisele artefaktille, ei toimi sugugi maagia pÔhjal, vaid lahendab probleemi lihtsalt ja leidlikult.

MĂ”nikord tuleb koodi kallal vaeva nĂ€ha, seda samm-sammult lahti muukides, kuid just nii, liikudes vĂ€ikeste jĂ€rjestikuste sammudega, suudate te autori teekonna lahendusele korrata. See sĂŒvendab teie arusaamist koodi kirjutamisprotsessist ja annab rohkem enesekindlust oma lahenduste leidmisel.

Kui ma esmakordselt lubadustega töötama hakkasin, tundus see mulle nagu puhas maagia. Siis sain aru, et nende aluseks on samad tagasisidekutsed ning minu arendaja maailm pöördus peapeale. See tÀhendab, et mustrit, mille eesmÀrk on meid tagasisidest vabastada, rakendatakse ise tagasisidekutsede abil?!

See aitas mul vaadata asjadele uue nurga alt ja mĂ”ista, et minu ees ei ole mingid keerukad koodijupid, mille ĂŒletamatu keerukus jÀÀb mulle elu lĂ”puni arusaamatuks. Need on lihtsalt mustrid, millega saab lihtsasti hakkama, kui on piisavalt uudishimu ja sĂŒvenemist. Just nii inimesed programmeerimist Ă”pivad ja arendajatena kasvavad.

Leiutage see ratta uuesti

Nii et julgelt leiutage rattaid ĂŒmber: kirjutage ise kood andmete sidumiseks, looge kodune lubadus vĂ”i tehke isegi oma kĂ€tega lahendus seisundite haldamiseks.
Pole tĂ€htis, et keegi neist kunagi ei kasuta – nĂŒĂŒd oskate seda teha. Ja kui teil peaks hiljem olema vĂ”imalus neid töötulemusi oma projektides kasutada, on see suurepĂ€rane. Saate neid arendada ja Ă”ppida veel midagi uut.

MÔttepunkt ei ole oma koodi tootmisse saamine, vaid uue kogemuse omandamine. Juba olemasoleva lahenduse iseseisev rakendamine on suurepÀrane viis Ôppida parematelt programmeerijatelt ja teravdada oma oskusi.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster