Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara

Tæknistjóri Skyeng Kirill Rogovoy (flashhhh) heldur erindi á ráðstefnum þar sem hann talar um þá færni sem sérhver góður verktaki ætti að þróa til að verða bestur. Ég bað hann um að deila þessari sögu með lesendum Habra, ég gef Kirill orðið.

Goðsögnin um góðan verktaki er sú að hann:

  1. Skrifar hreinan kóða
  2. Þekkir mikið af tækni
  3. Kóðunarverkefni hraðar
  4. Þekki fullt af reikniritum og hönnunarmynstri
  5. Getur breytt hvaða kóða sem er með Clean Code
  6. Eyðir ekki tíma í verkefni sem ekki eru forritunarmál
  7. 100% meistari í uppáhalds tækninni þinni

Svona sér HR fyrir sér kjörna umsækjendur og laus störf líta því líka svona út.

En mín reynsla segir að þetta sé ekki mjög rétt.

Í fyrsta lagi tveir mikilvægir fyrirvarar:
1) mín reynsla er vöruteymi, þ.e. fyrirtæki með eigin vöru, ekki útvistun; í útvistun getur allt verið mjög mismunandi;
2) ef þú ert yngri, þá eiga ekki öll ráð við, og ef ég væri þú myndi ég einbeita mér að forritun í bili.

Góður verktaki: raunveruleiki

1: Betri kóða en meðaltal

Góður verktaki veit hvernig á að búa til flottan arkitektúr, skrifa flottan kóða og ekki búa til of margar villur; Almennt séð stendur hann sig betur en meðaltalið, en hann er ekki í efstu 1% sérfræðinga. Flestir flottustu forritararnir sem ég þekki eru ekki svo miklir kóðarar: þeir eru frábærir í því sem þeir gera, en þeir geta ekki gert neitt ofurvenjulegt.

2: Leysir vandamál frekar en að búa þau til

Ímyndum okkur að við þurfum að samþætta utanaðkomandi þjónustu inn í verkefnið. Við fáum tækniforskriftirnar, skoðum skjölin, sjáum að eitthvað er úrelt þar, skiljum að við þurfum að senda fleiri færibreytur, gera einhverjar breytingar, reynum að útfæra þetta allt einhvern veginn og láta einhverja króka aðferð virka rétt, loksins, eftir nokkra daga sem við skiljum að við getum ekki haldið svona áfram. Venjuleg hegðun þróunaraðila í þessum aðstæðum er að snúa aftur til viðskipta og segja: „Ég gerði hitt og þetta, þessi virkar ekki þannig og þessi virkar alls ekki, svo farðu að finna út úr því sjálfur. ” Fyrirtæki á við vandamál að etja: þú þarft að kafa ofan í það sem gerðist, eiga samskipti við einhvern og reyna einhvern veginn að leysa það. Síminn sem er bilaður byrjar: „þú segir honum, ég skal senda henni skilaboð, sjáðu hvað þeir svöruðu.

Góður verktaki, sem stendur frammi fyrir slíkum aðstæðum, finnur sjálfur tengiliði, hefur samband við hann í síma, ræðir vandamálið og ef ekkert gengur upp mun hann safna réttu fólki, útskýra allt og bjóða upp á valkosti (líklegast er annað ytri þjónustu með betri stuðningi). Slíkur verktaki sér viðskiptavandamál og leysir það. Verkefni hans er lokað þegar hann leysir viðskiptavandamál, en ekki þegar hann lendir í einhverju.

3: Reynir að eyða lágmarks fyrirhöfn til að ná hámarks árangri, jafnvel þótt það þýði að skrifa hækjur

Hugbúnaðarþróun í vörufyrirtækjum er nánast alltaf stærsti kostnaðarliðurinn: þróunaraðilar eru dýrir. Og góður verktaki skilur að fyrirtæki vill fá hámarksupphæðina með því að eyða lágmarkinu. Til að hjálpa honum vill góður verktaki eyða lágmarkstímanum af dýrum tíma sínum til að ná hámarkshagnaði fyrir vinnuveitandann.

Hér eru tvær öfgar. Ein er sú að þú getur almennt leyst öll vandamál með hækju, án þess að vera að skipta sér af arkitektúr, án endurstillingar o.s.frv. Við vitum öll hvernig þetta endar venjulega: ekkert virkar, við endurskrifum verkefnið frá grunni. Annað er þegar einstaklingur reynir að finna tilvalinn arkitektúr fyrir hvern hnapp, eyðir klukkutíma í verkefnið og fjórum í endurstillingu. Niðurstaðan af slíkri vinnu lítur vel út, en vandamálið er að á viðskiptahliðinni tekur það tíu klukkustundir að klára hnapp, bæði í fyrsta og öðru tilviki, einfaldlega af mismunandi ástæðum.

Góður verktaki veit hvernig á að halda jafnvægi á milli þessara öfga. Hann skilur samhengið og tekur bestu ákvörðunina: í þessu vandamáli mun ég skera á hækju, því þetta er kóða sem er snert einu sinni á sex mánaða fresti. En í þessu mun ég nenna og gera allt eins rétt og mögulegt er, því hundrað nýir eiginleikar sem enn á eftir að þróa munu ráðast af því hvað mér tekst.

4. Hefur eigið viðskiptastjórnunarkerfi og getur unnið að öllum flóknum verkefnum í því.

Að vinna eftir meginreglum Getting Things Gjört – þegar þú skrifar niður öll þín verkefni í einhvers konar textakerfi, gleymir engum samningum, ýtir við öllum, mætir alls staðar á réttum tíma, veist hvað er mikilvægt og hvað er ekki mikilvægt í augnablikinu, þá taparðu aldrei verkefnum. Það sem einkennir slíkt fólk almennt er að þegar maður er sammála þeim um eitthvað hefur maður aldrei áhyggjur af því að það gleymi; og þú veist líka að þeir skrifa allt niður og munu þá ekki spyrja þúsund spurninga, sem þegar hefur verið rætt um svörin við.

5. Spurningar og skýra hvers kyns skilyrði og kynningar

Hér eru líka tvær öfgar. Annars vegar geturðu verið efins um allar kynningarupplýsingar. Fólk á undan þér kom með einhverjar lausnir en þú heldur að þú getir gert betur og byrjar að ræða allt sem kom á undan þér aftur: hönnun, viðskiptalausnir, arkitektúr o.s.frv. Þetta sóar miklum tíma fyrir bæði framkvæmdaraðilann og þá sem eru í kringum hann og hefur neikvæð áhrif á traust innan fyrirtækisins: annað fólk vill ekki taka ákvarðanir vegna þess að það veit að þessi gaur mun koma aftur og brjóta allt. Hin öfgin er þegar verktaki skynjar allar kynningar, tækniforskriftir og viðskiptaóskir sem eitthvað meitlað í stein, og aðeins þegar hann stendur frammi fyrir óleysanlegu vandamáli fer hann að hugsa um hvort hann sé að gera það sem hann er að gera. Góður verktaki finnur líka meðalveg hér: hann reynir að skilja þær ákvarðanir sem teknar voru fyrir eða án hans, áður en verkefnið fer í þróun. Hvað vill fyrirtæki? Erum við að leysa vandamál hans? Vöruhönnuðurinn kom með lausn, en skil ég hvers vegna lausnin mun virka? Hvers vegna kom liðsstjórinn upp með þennan tiltekna arkitektúr? Ef eitthvað er ekki ljóst, þá þarftu að fara að spyrja. Í ferli þessarar skýringar gæti góður verktaki séð aðra lausn sem einfaldlega hafði ekki dottið í hug áður.

6. Bætir ferla og fólk í kringum þig

Það eru fullt af ferlum í gangi í kringum okkur - daglegir fundir, fundir, scrums, tæknirýni, kóðadóma osfrv. Góður verktaki mun standa upp og segja: sjáðu, við komum saman og ræðum það sama í hverri viku, ég skil ekki hvers vegna, við gætum eins eytt þessum klukkutíma í Contra. Eða: fyrir þriðja verkefnið í röð kemst ég ekki inn í kóðann, ekkert er ljóst, arkitektúrinn er fullur af holum; Kannski er endurskoðunarkóði okkar lélegur og við þurfum að endurskoða, við skulum endurskoða fundinn á tveggja vikna fresti. Eða við endurskoðun kóðans sér einstaklingur að einn samstarfsmaður hans er ekki að nota ákveðið verkfæri nægilega vel, sem þýðir að hann þarf að koma upp seinna og gefa ráð. Góður verktaki hefur þetta eðlishvöt; hann gerir slíka hluti sjálfkrafa.

7. Frábær í að stjórna öðrum, jafnvel þótt hann sé ekki stjórnandi

Þessi kunnátta passar vel við þemað „að leysa frekar en að skapa vandamál“. Oft er ekkert skrifað um stjórnun í texta lausu embættisins sem við sækjum um, en síðan, þegar þú stendur frammi fyrir vandamáli sem þú hefur ekki stjórn á, verður þú samt að stjórna öðrum á einn eða annan hátt, ná einhverju úr þeim, ef þú gleymdi - ýttu á, vertu viss um að þeir skildu allt. Góður framkvæmdaraðili veit hver hefur áhuga á hverju, getur boðað til fundar við þetta fólk, skrifað niður samninga, sent þá í slökun, minnt á það á réttum degi, gengið úr skugga um að allt sé tilbúið þó hann beri ekki persónulega ábyrgð á þetta verkefni, en árangur hans fer eftir framkvæmd þess.

8. Lítur ekki á þekkingu sína sem dogma, er stöðugt opinn fyrir gagnrýni

Það muna allir eftir samstarfsmanni úr fyrra starfi sem getur ekki gert málamiðlanir á tækninni sinni og öskrar að allir brenni í hel fyrir einhverjar rangar stökkbreytingar. Góður þróunaraðili, ef hann vinnur í 5, 10, 20 ár í greininni, skilur að helmingur þekkingar hans er rotinn og á hinum helmingnum veit hann ekki tíu sinnum meira en hann veit. Og í hvert sinn sem einhver er ósammála honum og býður upp á annan valkost er það ekki árás á egóið hans, heldur tækifæri til að læra eitthvað. Þetta gerir honum kleift að vaxa miklu hraðar en þeir sem eru í kringum hann.

Við skulum bera saman hugmynd mína um kjörinn verktaki við þann almennt viðurkennda:

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara

Þessi mynd sýnir hversu margir af punktunum sem lýst er hér að ofan tengjast kóðanum og hversu margir ekki. Þróun í vörufyrirtæki er aðeins þriðjungur forritun, hinir 2/3 hafa lítið með kóða að gera. Og þó að við skrifum mikið af kóða, veltur árangur okkar mjög á þessum „óviðkomandi“ tveimur þriðju hlutum.

Sérhæfing, alhæfing og 80-20 reglan

Þegar einstaklingur lærir að leysa einhver þröng vandamál, lærir lengi og vel, en leysir þau síðan auðveldlega og einfaldlega, en hefur ekki sérfræðiþekkingu á skyldum sviðum, þá er þetta sérhæfing. Almenning er þegar helmingur þjálfunartímans er fjárfest í eigin hæfni og annar helmingur í skyldum sviðum. Samkvæmt því, í fyrra tilvikinu, geri ég eitt fullkomlega og restina illa, og í öðru, geri ég allt meira eða minna vel.

80-20 reglan segir okkur að 80% af niðurstöðunni komi frá 20% af áreynslunni. 80% af tekjum koma frá 20% viðskiptavina, 80% af hagnaði kemur frá 20% starfsmanna, og svo framvegis. Í kennslu þýðir þetta að 80% af þekkingu öðlumst á fyrstu 20% tímans.

Það er hugmynd: kóðarar ættu aðeins að kóða, hönnuðir ættu aðeins að hanna, sérfræðingar ættu að greina og stjórnendur ættu aðeins að stjórna. Að mínu mati er þessi hugmynd eitruð og virkar ekki mjög vel. Þetta snýst ekki um að allir þurfi að vera alhliða hermenn, þetta snýst um að spara auðlindir. Ef þróunaraðili skilur að minnsta kosti aðeins um stjórnun, hönnun og greiningu, mun hann geta leyst mörg vandamál án þess að hafa annað fólk með í för. Ef þú þarft að búa til einhvers konar eiginleika og athuga síðan hvernig notendur vinna með hann í ákveðnu samhengi, sem mun krefjast tveggja SQL fyrirspurna, þá er frábært að geta ekki truflað sérfræðinginn með þessu. Ef þú þarft að fella inn hnapp á hliðstæðan hátt við þá sem fyrir eru, og þú skilur almennar meginreglur, geturðu gert það án þess að taka þátt í hönnuði og fyrirtækið mun þakka þér fyrir það.

Samtals: þú getur eytt 100% af tíma þínum í að læra hæfileika til hins ýtrasta, eða þú getur eytt sama tíma á fimm sviðum, jafnað allt að 80% á hverju. Eftir þessa barnalegu stærðfræði getum við náð fjórfalt fleiri færni á sama tíma. Þetta eru ýkjur, en það sýnir hugmyndina.

Tengda færni er ekki hægt að þjálfa með 80%, heldur með 30-50%. Eftir að hafa eytt 10-20 klukkustundum muntu bæta þig verulega á skyldum sviðum, öðlast mikinn skilning á ferlunum sem eiga sér stað í þeim og verða miklu sjálfstæðari.

Í upplýsingatæknivistkerfi nútímans er betra að búa yfir eins mörgum færni og hægt er og ekki vera sérfræðingur í neinni þeirra. Vegna þess að í fyrsta lagi dofnar öll þessi færni fljótt, sérstaklega þegar kemur að forritun, og í öðru lagi vegna þess að 99% af tímanum notum við ekki aðeins grunnfærni, heldur örugglega ekki flóknustu færni, og þetta er nóg jafnvel í kóðun, jafnvel í flott fyrirtæki.

Og að lokum er þjálfun fjárfesting og fjölbreytni er mikilvæg í fjárfestingum.

Hvað á að kenna

Svo hvað á að kenna og hvernig? Dæmigerður verktaki í sterku fyrirtæki notar reglulega:

  • samskipti
  • sjálfsskipulagi
  • áætlanagerð
  • hönnun (venjulega kóða)
  • og stundum stjórnun, forysta, gagnagreining, skrif, ráðningar, leiðbeiningar og margt annað

Og nánast engin af þessum hæfileikum skerast kóðann sjálfan. Þeim þarf að kenna og uppfæra sérstaklega og ef það er ekki gert verða þeir áfram á mjög lágu stigi sem gerir ekki kleift að nýta þá á áhrifaríkan hátt.

Á hvaða sviðum er þess virði að þróast?

  1. Mjúk færni er allt sem snertir ekki að ýta á hnappa í ritlinum. Þannig skrifum við skilaboð, hvernig við hegðum okkur á fundum, hvernig við höfum samskipti við samstarfsmenn. Þetta virðast allt vera augljósir hlutir, en mjög oft eru þeir vanmetnir.

  2. Sjálfsskipulagskerfi. Fyrir mig persónulega hefur þetta orðið gríðarlega mikilvægt umræðuefni síðastliðið ár. Meðal allra flottu upplýsingatæknistarfsmanna sem ég þekki er þetta ein þróaðasta færni: þeir eru ofurskipulagðir, þeir gera alltaf það sem þeir segja, þeir vita nákvæmlega hvað þeir ætla að gera á morgun, eftir viku, eftir mánuð. Nauðsynlegt er að byggja upp kerfi í kringum sjálfan sig þar sem öll mál og allar spurningar eru skráðar, það auðveldar mjög vinnuna sjálfa og hjálpar mjög til í samskiptum við annað fólk. Mér finnst að undanfarið ár hafi þróun í þessa átt bætt mig miklu meira en að bæta tæknikunnáttu mína; ég fór að vinna verulega meira á hverja tímaeiningu.

  3. Fyrirbyggjandi, víðsýnn og skipulagður. Viðfangsefnin eru mjög almenn og mikilvæg, ekki einstök fyrir upplýsingatækni, og allir ættu að þróa þau. Frumvirkni þýðir að bíða ekki eftir merki um að grípa til aðgerða. Þú ert uppspretta atburða, ekki viðbrögð við þeim. Víðsýni er hæfileikinn til að meðhöndla allar nýjar upplýsingar á hlutlægan hátt, að meta aðstæður í einangrun frá eigin heimsmynd og gömlum venjum. Skipulagning er skýr sýn á hvernig verkefni dagsins í dag leysir vandamálið fyrir vikuna, mánuðina, árin. Ef þú sérð framtíðina umfram ákveðið verkefni er miklu auðveldara að gera það sem þú þarft og ekki vera hræddur eftir tíma að átta sig á því að það var sóað. Þessi kunnátta er sérstaklega mikilvæg fyrir feril: þú getur náð árangri í mörg ár, en á röngum stað, og að lokum missir allan uppsafnaðan farangur þegar það verður ljóst að þú varst að fara í ranga átt.

  4. Öll svið sem tengjast grunnstigi. Allir hafa sín sérsvið, en það er mikilvægt að skilja að með því að eyða 10-20 klukkustundum í að efla einhverja „erlenda“ kunnáttu geturðu uppgötvað mörg ný tækifæri og snertifleti í daglegu starfi þínu, og þessir tímar geta duga til loka starfsferils.

Hvað á að lesa

Það eru til mjög margar bækur um sjálfsskipulagningu; þetta er heill iðnaður þar sem skrýtnir krakkar skrifa söfn af ráðum og safna þjálfun. Á sama tíma er óljóst hverju þeir sjálfir hafa áorkað í lífinu. Því er mikilvægt að setja síur á höfundana, skoða hverjir þeir eru og hvað þeir hafa á bak við sig. Þroski minn og viðhorf urðu fyrir mestum áhrifum af fjórum bókum, sem allar tengdust á einn eða annan hátt að bæta þá færni sem lýst er hér að ofan.

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara1. Dale Carnegie „Hvernig á að vinna vini og hafa áhrif á fólk“. Sértrúarsöfnuður um mjúka færni, ef þú veist ekki hvar þú átt að byrja, þá er valkostur til að vinna. Hún er byggð á dæmum, er auðlesin, krefst ekki mikillar fyrirhafnar til að skilja það sem maður les og hægt er að beita þeirri kunnáttu sem áunnist er strax. Í heildina fjallar bókin um samskipti við fólk.

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara2. Stephen R. Covey „7 venjur mjög áhrifaríks fólks“. Blanda af mismunandi færni, frá frumkvæði til mjúkrar færni, með áherslu á að ná samlegðaráhrifum þegar þú þarft að breyta litlu teymi í risastórt afl. Það er líka auðvelt að lesa.

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara3. Ray Dalio "Principles". Sýnir þemu um víðsýni og frumkvæði, byggt á sögu fyrirtækisins sem höfundurinn byggði, sem hann stýrði í 40 ár. Mörg erfið dæmi úr lífinu sýna hversu fordómafullur og háður maður getur verið og hvernig á að losna við það.

Af hverju bara að uppfæra kóðun þinn mun ekki gera þig að betri forritara4. David Allen, „Getting Things Done“. Skyldulestur til að læra sjálfsskipulagningu. Það er ekki svo auðvelt að lesa það, en það gefur yfirgripsmikið verkfæri til að skipuleggja líf og málefni, skoðar allar hliðar í smáatriðum og hjálpar þér að ákveða hvað þú þarft nákvæmlega. Með hjálp hennar byggði ég mitt eigið kerfi sem gerir mér kleift að gera alltaf mikilvægustu hlutina án þess að gleyma restinni.

Þú verður að skilja að það er ekki nóg að lesa bara. Þú getur gleypt að minnsta kosti eina bók í viku, en áhrifin endast í nokkra daga og þá fer allt aftur á sinn stað. Bækur ættu að vera notaðar sem uppspretta ráðlegginga sem eru strax prófuð í reynd. Ef þú gerir þetta ekki, þá er allt sem þeir gefa er að víkka sjóndeildarhringinn þinn.

Heimild: www.habr.com

Bæta við athugasemd