Viha koodi vastu: programmeerijad ja negatiivsus

Viha koodi vastu: programmeerijad ja negatiivsus

Vaatan koodijuppi. See võib olla halvim kood, mida ma kunagi näinud olen. Andmebaasis vaid ühe kirje värskendamiseks hangib see kõik kogus olevad kirjed ja saadab seejärel värskendustaotluse igale andmebaasi kirjele, isegi neile, mida ei ole vaja värskendada. Seal on kaardifunktsioon, mis lihtsalt tagastab talle edastatud väärtuse. Näiliselt sama väärtusega muutujate jaoks on tingimuslikud testid, mis on lihtsalt nimed erinevates stiilides (firstName и first_name). Iga VÄRSKENDUSE korral saadab kood sõnumi erinevasse järjekorda, mida haldab erinev serverita funktsioon, kuid mis teeb kogu töö samas andmebaasis erineva kogu jaoks. Kas ma mainisin, et see serverita funktsioon pärineb pilvepõhisest "teenusele orienteeritud arhitektuurist", mis sisaldab keskkonnas üle 100 funktsiooni?

Kuidas oli seda üldse võimalik teha? Katan näo ja nutan läbi naeru nähtavalt. Mu kolleegid küsivad, mis juhtus, ja ma jutustan seda värvides ümber Rakenduse BulkDataImporter.js 2018. aasta halvimad hitid. Kõik noogutavad mulle kaastundlikult ja nõustuvad: kuidas nad said seda meile teha?

Negatiivsus: emotsionaalne tööriist programmeerijakultuuris

Negatiivsus mängib programmeerimisel olulist rolli. See on meie kultuuri sisse lülitatud ja seda kasutatakse õpitu jagamiseks ("sa ei tee seda sa usud seda, milline see kood oli!”), väljendada kaastunnet läbi frustratsiooni (“Jumal, MIKS seda teha?”), näidata ennast (“Ma ei teeks kunagi nii ei teinud seda"), süüdistada kedagi teist ("me ebaõnnestusime tema koodi tõttu, mida on võimatu säilitada") või, nagu kõige "mürgisemates" organisatsioonides tavaks, kontrollida teisi häbitunne ("Millele sa üldse mõtlesid?"? Õige").

Viha koodi vastu: programmeerijad ja negatiivsus

Negatiivsus on programmeerijatele nii oluline, sest see on väga tõhus viis väärtuste edastamiseks. Osalesin kord programmeerimislaagris ja õpilastesse tööstuskultuuri juurutamise tavapärane tava oli pakkuda heldelt meeme, lugusid ja videoid, millest populaarseimad olid ära kasutatud. programmeerijate frustratsiooni, kui nad seisavad silmitsi inimeste vääritimõistmisega. On hea, kui saate kasutada emotsionaalseid tööriistu, et tuvastada Hea, Halb, Inetu, Ära tee seda, Mitte kunagi. Uustulnukaid tuleb ette valmistada selleks, et IT-kauged kolleegid saavad neist ilmselt valesti aru. Et nende sõbrad hakkavad neile miljoni dollari väärtuses rakenduseideid müüma. Et nad peavad rändama läbi lõputute aegunud koodi labürintide koos hulga minotaurustega nurga taga.

Kui me esimest korda programmeerima õpime, põhineb meie arusaam "programmeerimiskogemuse" sügavusest teiste inimeste emotsionaalsete reaktsioonide jälgimisel. See on selgelt näha postitustest sabe ProgrammerHumor, kus hängib palju algajaid programmeerijaid. Paljud humoorikad on ühel või teisel määral värvitud erinevate negatiivsete varjunditega: pettumus, pessimism, nördimus, kaastunne ja muud. Ja kui see teile ei tundu piisav, lugege kommentaare.

Viha koodi vastu: programmeerijad ja negatiivsus

Märkasin, et kui programmeerijad saavad kogemusi, muutuvad nad üha negatiivsemaks. Algajad, kes ei tea neid ees ootavaid raskusi, alustavad entusiasmist ja valmisolekust uskuda, et nende raskuste põhjuseks on lihtsalt kogemuste ja teadmiste puudumine; ja lõpuks seisavad nad silmitsi asjade reaalsusega.

Aeg möödub, nad saavad kogemusi ja suudavad eristada head koodi halvast. Ja kui see hetk saabub, tunnevad noored programmeerijad frustratsiooni ilmselgelt halva koodiga töötamisest. Ja kui nad töötavad meeskonnas (kaugelt või isiklikult), võtavad nad sageli omaks kogenumate kolleegide emotsionaalsed harjumused. See toob sageli kaasa negatiivsuse suurenemise, sest noored saavad nüüd koodist läbimõeldult rääkida ja jagada selle halvaks ja heaks, näidates sellega, et nad on asjaga kursis. See tugevdab veelgi negatiivset: pettumuse tõttu on lihtne kolleegidega läbi saada ja gruppi kuuluda; Bad Code'i kritiseerimine suurendab teie staatust ja professionaalsust teiste silmis: inimesi, kes avaldavad negatiivset arvamust, peetakse sageli intelligentsemaks ja pädevamaks.

Negatiivsuse suurendamine ei pruugi olla halb. Arutelud programmeerimise üle on muu hulgas äärmiselt keskendunud kirjutatud koodi kvaliteedile. See, mis kood on, määratleb täielikult funktsiooni, mida see on ette nähtud (kui riistvara, võrguühendus jne kõrvale jätta), seega on oluline, et saaksite selle koodi kohta oma arvamust avaldada. Peaaegu kõik arutelud taanduvad sellele, kas kood on piisavalt hea, ja halva koodi ilmingute hukkamõistmisele, mille emotsionaalne varjund iseloomustab koodi kvaliteeti:

  • "Selles moodulis on palju loogilisi vastuolusid, see on hea kandidaat jõudluse oluliseks optimeerimiseks."
  • "See moodul on üsna halb, me peame selle ümber kujundama."
  • "Sellel moodulil pole mõtet, see tuleb ümber kirjutada."
  • "See moodul on nõme, seda tuleb parandada."
  • "See on jäära tükk, mitte moodul, seda ei olnud vaja üldse kirjutada, mida kuradit selle autor mõtles."

Muide, just see "emotsionaalne väljalase" paneb arendajad nimetama koodi "seksikaks", mis on harva õiglane – välja arvatud juhul, kui töötate PornHubis.

Probleem on selles, et inimesed on kummalised, rahutud, emotsionaalsed olendid ning igasuguse emotsiooni tajumine ja väljendamine muudab meid: alguses peenelt, kuid aja jooksul dramaatiliselt.

Negatiivsuse probleemne libe tee

Paar aastat tagasi olin mitteametlik meeskonnajuht ja intervjueerisin arendajat. Ta meeldis meile väga: ta oli tark, küsis häid küsimusi, oli tehnikatundlik ja sobis hästi meie kultuuriga. Mulle avaldas erilist muljet tema positiivsus ja see, kui ettevõtlik ta tundus. Ja ma palkasin ta.

Olin tol ajal ettevõttes paar aastat töötanud ja tundsin, et meie kultuur ei ole kuigi efektiivne. Proovisime toodet turule tuua kaks, kolm korda ja veel paar korda enne minu saabumist, mis tõi kaasa suuri kulutusi ümbertöötamisele, mille jooksul ei olnud meil midagi näidata peale pikkade ööde, kitsaste tähtaegade ja toodete, mis töötasid. Ja kuigi ma töötasin endiselt kõvasti, olin juhtkonna poolt meile määratud viimase tähtaja suhtes skeptiline. Ja ta vandus juhuslikult, kui arutas mu kolleegidega koodi mõningaid aspekte.

Seega polnud üllatav – kuigi ma olin üllatunud –, et mõni nädal hiljem ütles sama uus arendaja samu negatiivseid asju, mida mina (sealhulgas vandumine). Sain aru, et ta käitub erinevas ja erineva kultuuriga seltskonnas teisiti. Ta lihtsalt kohanes minu loodud kultuuriga. Mind valdas süütunne. Oma subjektiivse kogemuse tõttu sisendasin uustulnukasse, keda tajusin täiesti erinevana, pessimismi. Isegi kui ta tõesti ei olnud selline ja oli lihtsalt välimusega, et näidata, et ta sobib, sundisin talle oma nõmedat suhtumist peale. Ja kõigel, mida öeldakse, isegi naljaks või möödaminnes, on halb viis muutuda selleks, mida usutakse.

Viha koodi vastu: programmeerijad ja negatiivsus

Negatiivsed viisid

Tuleme tagasi oma endiste algajate programmeerijate juurde, kes on saanud veidi tarkust ja kogemusi: nad on programmeerimistööstusega rohkem tuttavaks saanud ja mõistavad, et halb kood on kõikjal, seda ei saa vältida. Seda esineb isegi kõige arenenumates kvaliteedile keskendunud ettevõtetes (ja lubage mul märkida: ilmselt ei kaitse modernsus halva koodi eest).

Hea stsenaarium. Aja jooksul hakkavad arendajad leppima sellega, et halb kood on tarkvara reaalsus ja nende ülesanne on seda täiustada. Ja et kui halba koodi vältida ei saa, siis pole mõtet sellest ka kära teha. Nad lähevad Zeni teele, keskendudes nende ees seisvate probleemide või ülesannete lahendamisele. Nad õpivad tarkvara kvaliteeti täpselt mõõtma ja ettevõtete omanikele edastama, kirjutama oma aastatepikkuse kogemuse põhjal põhjendatud hinnanguid ja saavad lõpuks heldeid tasusid oma uskumatu ja püsiva väärtuse eest ettevõttele. Nad teevad oma tööd nii hästi, et saavad 10 miljonit dollarit boonuseid ja lähevad pensionile, et teha elu lõpuni seda, mida tahavad (palun ärge võtke seda enesestmõistetavana).

Viha koodi vastu: programmeerijad ja negatiivsus

Teine stsenaarium on pimeduse tee. Selle asemel, et aktsepteerida halba koodi kui paratamatust, võtavad arendajad endale ülesandeks kutsuda välja kõik programmeerimismaailma halvad, et nad saaksid sellest üle. Nad keelduvad parandamast olemasolevat halba koodi mitmel mõjuval põhjusel: "inimesed peaksid rohkem teadma ja mitte olema nii rumalad"; "see on ebameeldiv"; "see on ärile halb"; "see tõestab, kui tark ma olen"; "Kui ma ei ütle teile, kui jabur kood see on, kukub kogu ettevõte ookeani" ja nii edasi.

Kindlasti ei saa need inimesed soovitud muudatusi ellu viia, sest ettevõte peab kahjuks edasi arenema ega saa kulutada aega koodi kvaliteedi pärast muretsemisele, omandavad need inimesed kaebajate maine. Neid jäetakse alles nende kõrge kompetentsi tõttu, kuid nad surutakse ettevõtte äärealadele, kus nad ei tüüta paljusid inimesi, kuid toetavad siiski kriitiliste süsteemide toimimist. Ilma juurdepääsuta uutele arenguvõimalustele kaotavad nad oskused ja ei vasta enam tööstuse nõudmistele. Nende negatiivsus muutub kibedaks kibeduseks ja selle tulemusena toidavad nad oma ego kahekümneaastaste õpilastega vaidledes, millise teekonna nende lemmik vanatehnika on läbinud ja miks see ikka nii kuum on. Nad lähevad lõpuks pensionile ja elavad vanaduspõlve linde vandudes.

Tõenäoliselt asub tegelikkus kusagil nende kahe äärmuse vahepeal.

Mõned ettevõtted on olnud äärmiselt edukad äärmiselt negatiivsete, saareliste ja tahtejõuliste kultuuride loomisel (nagu Microsoft enne oma kaotatud kümnend) - sageli on need ettevõtted, mille tooted sobivad ideaalselt turule ja vajadusega võimalikult kiiresti kasvada; või ettevõtted, millel on juhtimis- ja kontrollihierarhia (Apple Jobsi parimatel aastatel), kus igaüks teeb seda, mida kästakse. Kaasaegsed äriuuringud (ja terve mõistus) viitavad aga sellele, et maksimaalne leidlikkus, mis toob kaasa ettevõtete uuenduslikkuse ja üksikisikute kõrge tootlikkuse, nõuab madalat stressitaset, et toetada pidevat loovat ja metoodilist mõtlemist. Ja väga raske on teha loomingulist, arutelupõhist tööd, kui muretsete pidevalt selle pärast, mida kolleegidel teie koodi iga rea ​​kohta öelda on.

Negatiivsus on popkultuuri projekteerimine

Tänapäeval pööratakse inseneride suhtumisele rohkem tähelepanu kui kunagi varem. Inseneriorganisatsioonides kehtib reegel "Sarvi pole". Twitteris ilmub üha rohkem anekdoote ja lugusid inimestest, kes lahkusid sellelt erialalt, kuna ei suutnud (ei tahaks) taluda vaenulikkust ja pahatahtlikkust kõrvaliste inimeste suhtes. Isegi Linus Torvalds vabandas hiljuti aastatepikkune vaenulikkus ja kriitika teiste Linuxi arendajate suhtes – see on toonud kaasa arutelu selle lähenemisviisi tõhususe üle.

Mõned kaitsevad endiselt Linuse õigust olla väga kriitiline – need, kes peaksid teadma palju "toksilise negatiivsuse" eelistest ja puudustest. Jah, viisakus on äärmiselt oluline (isegi põhimõtteline), aga kui võtta kokku põhjused, miks paljud meist lasevad negatiivsete arvamuste avaldamisel muutuda "toksilisuseks", siis need põhjused tunduvad paternalistlikud või nooruklikud: "nad väärivad seda, sest nad on idioodid ", "ta peab olema kindel, et nad seda enam ei tee", "kui nad poleks seda teinud, ei peaks ta nende peale karjuma" ja nii edasi. Näiteks juhi emotsionaalsete reaktsioonide mõjust programmeerimiskogukonnale on Ruby kogukonna akronüüm MINASWAN – "Matz on kena, nii et me oleme kenad."

Olen märganud, et paljud tulihingelised "tappa loll" lähenemise pooldajad hoolivad sageli väga koodi kvaliteedist ja õigsusest, samastades end oma tööga. Kahjuks ajavad nad sageli kõvaduse ja jäikusega segi. Selle positsiooni miinus tuleneb lihtsast inimlikust, kuid ebaproduktiivsest soovist tunda end teistest üle. Inimesed, kes sellesse soovi sukelduvad, jäävad pimeduse teele kinni.

Viha koodi vastu: programmeerijad ja negatiivsus

Programmeerimismaailm kasvab kiiresti ja surub vastu oma konteineri – mitteprogrammeerimise maailma (või on programmeerimise maailm mitteprogrammeerimise maailma konteiner? Hea küsimus) – piiride vastu.

Kuna meie tööstus laieneb üha kiirenevas tempos ja programmeerimine muutub kättesaadavamaks, väheneb vahemaa “tehniliste” ja “normaalide” vahel kiiresti. Programmeerimismaailm puutub üha enam kokku varajase tehnoloogiabuumi isoleeritud nohikukultuuris üles kasvanud inimestevahelise suhtlusega ning just nemad kujundavad uue programmeerimismaailma. Ja sõltumata sotsiaalsetest või põlvkondadevahelistest argumentidest, ilmneb kapitalismi nimel tõhusus ettevõtte kultuuris ja värbamispraktikas: parimad ettevõtted lihtsalt ei võta tööle kedagi, kes ei suuda teistega neutraalselt suhelda, rääkimata headest suhetest.

Mida ma negatiivsuse kohta õppisin

Kui lubate liiga palju negatiivsust kontrollida oma meelt ja inimestega suhtlemist, muutudes mürgiseks, on see tootemeeskondadele ohtlik ja ärile kulukas. Olen näinud (ja kuulnud) lugematuid projekte, mis lagunesid ja ehitati täielikult üles suurte kuludega, kuna ühel usaldusväärsel arendajal oli viha tehnoloogia, teise arendaja või isegi kogu koodibaasi kvaliteeti esindava faili vastu.

Negatiivsus demoraliseerib ja hävitab suhteid. Ma ei unusta kunagi, kuidas kolleeg sõimas mind CSS-i valesse faili pannes, see häiris mind ja ei lubanud mitu päeva oma mõtteid koguda. Ja tulevikus ma tõenäoliselt ei luba sellisel inimesel mõne oma meeskonna läheduses viibida (aga kes teab, inimesed muutuvad).

Lõpuks negatiivne sõna otseses mõttes kahjustab teie tervist.

Viha koodi vastu: programmeerijad ja negatiivsus
Ma arvan, et selline peaks naeratuste meistriklass välja nägema.

Muidugi pole see argument õnnest säramise, kümne miljardi emotikonide sisestamise igasse tõmbetaotlusse või naeratuste meistriklassi mineku poolt (ei, noh, kui see on see, mida soovite, pole probleemi). Negatiivsus on programmeerimise (ja inimelu) äärmiselt oluline osa, mis annab märku kvaliteedist, võimaldab väljendada tundeid ja kaastunnet kaasinimestega. Negatiivsus näitab läbinägelikkust ja ettenägelikkust, probleemi sügavust. Märkan sageli, et arendaja on jõudnud uuele tasemele, kui ta hakkab väljendama umbusku selle suhtes, milles ta oli varem pelglik ja ebakindel. Inimesed näitavad oma arvamustega üles mõistlikkust ja enesekindlust. Sa ei saa jätta tähelepanuta negatiivsuse väljendust, see oleks orwellilik.

Negatiivsust tuleb aga doseerida ja tasakaalustada teiste oluliste inimlike omadustega: empaatia, kannatlikkus, mõistmine ja huumor. Sa võid alati inimesele öelda, et ta ajas kurja ilma karjumise ja vandumiseta. Ärge alahinnake seda lähenemist: kui keegi ütleb teile ilma igasuguste emotsioonideta, et olete tõsiselt sassi läinud, on see tõesti hirmutav.

Sel ajal, mitu aastat tagasi, rääkis minuga tegevjuht. Arutasime projekti hetkeseisu, seejärel küsis ta, kuidas ma end tunnen. Vastasin, et kõik on korras, projekt liigub, töötame aeglaselt, võib-olla jäi mul midagi kahe silma vahele ja on vaja uuesti läbi mõelda. Ta ütles, et on kuulnud mind pessimistlikumaid mõtteid büroo kolleegidega jagamas ja et ka teised on seda märganud. Ta selgitas, et kui mul on kahtlusi, võin need juhtkonnale täielikult väljendada, kuid mitte neid maha võtta. Juhtinsenerina pean arvestama sellega, kuidas mu sõnad teisi mõjutavad, sest mul on palju mõjuvõimu isegi siis, kui ma seda ei mõista. Ja ta rääkis seda kõike mulle väga sõbralikult ja lõpuks ütles, et kui ma tõesti nii tunnen, siis ilmselt pean mõtlema, mida ma endale ja oma karjäärile tahan. See oli uskumatult leebe, saa-või-tõuse-kohalt-vestlus. Tänasin teda teabe eest, kuidas minu kuue kuu jooksul muutunud suhtumine mõjutas teisi minu jaoks märkamatult.

See oli näide tähelepanuväärsest, tõhusast juhtimisest ja pehme lähenemisviisi jõust. Sain aru, et tundus vaid täielikku usku ettevõttesse ja selle võimesse oma eesmärke saavutada, kuid tegelikult rääkisin ja suhtlesin teistega hoopis teistmoodi. Samuti mõistsin, et isegi kui tunnen projekti, mille kallal töötan, suhtes skeptiline, ei tohiks ma oma tundeid kolleegidele välja näidata ja levitada pessimismi kui nakkust, vähendades meie eduvõimalusi. Selle asemel võiksin oma juhtkonnale agressiivselt edastada tegelikku olukorda. Ja kui ma tundsin, et nad ei kuula mind, võisin oma eriarvamust väljendada ettevõttest lahkumisega.

Sain uue võimaluse, kui asusin personalihindamise juhi kohale. Endise peainsenerina olen väga ettevaatlik, et avaldada oma arvamust meie (pidevalt paraneva) pärandkoodi kohta. Muudatuse heakskiitmiseks tuleb ette kujutada hetkeolukorda, aga sa ei jõua kuhugi, kui oigad, rünnad vms. Lõppkokkuvõttes olen siin selleks, et täita ülesannet ega peaks koodi üle kurtma, et seda mõista, hinnata või parandada.

Tegelikult, mida rohkem ma kontrollin oma emotsionaalset reaktsiooni koodile, seda rohkem saan aru, mis sellest võib saada, ja seda vähem ma tunnen segadust. Kui väljendasin end vaoshoitult (“siin peab olema veel arenguruumi”), siis tegin endale ja teistele rõõmu ega võtnud olukorda liiga tõsiselt. Sain aru, et suudan teistes stimuleerida ja vähendada negatiivsust, olles täiesti (tüütult?) mõistlik (“sul on õigus, see kood on päris halb, aga me parandame seda”). Mul on hea meel näha, kui kaugele ma Zen-teel jõuan.

Sisuliselt õpin ja õpin pidevalt ümber olulise õppetunni: elu on liiga lühike, et olla pidevalt vihane ja valus.

Viha koodi vastu: programmeerijad ja negatiivsus

Allikas: www.habr.com

Lisa kommentaar