Viha koodiin: ohjelmoijat ja negatiivisuus

Viha koodiin: ohjelmoijat ja negatiivisuus

Katson koodinpätkää. Ehkä pahin koodi, jonka olen koskaan tavannut. Jos haluat päivittää vain yhden tietueen tietokannassa, se hakee kaikki kokoelman tietueet ja lähettää sitten päivityspyynnön jokaiselle tietokannan tietueelle, myös niille, joita ei tarvitse päivittää. Tässä on karttatoiminto, joka yksinkertaisesti palauttaa sille välitetyn arvon. On olemassa ehdollisia tarkistuksia muuttujille, joilla on ilmeisesti sama arvo, vain nimetty eri tyyleillä (firstName и first_name). Jokaisen PÄIVITYKSEN yhteydessä koodi lähettää viestin toiseen jonoon, jota käsittelee eri palvelinton toiminto, mutta joka tekee kaiken työn eri kokoelmalle samassa tietokannassa. Mainitsinko, että tämä palvelimeton ominaisuus on pilvipalvelukeskeisestä arkkitehtuurista, jossa on yli 100 ominaisuutta ympäristössä?

Kuinka tällainen asia voitaisiin tehdä? Peitän kasvoni ja itken näkyvästi naurun kautta. Kollegani kysyvät, mitä tapahtui, ja minä kerron uudelleen värein BulkDataImporter.js 2018:n huonoimmat hitit. Kaikki nyökkäävät myötätuntoisesti minulle ja ovat samaa mieltä: kuinka he saattoivat tehdä tämän meille?

Negatiivisuus: emotionaalinen työkalu ohjelmoijakulttuurissa

Negatiivisuudella on tärkeä rooli ohjelmoinnissa. Se on rakennettu kulttuuriimme ja sitä käytetään jakamaan opittua ("et ole uskoamillainen se koodi oli!"), ilmaista myötätuntoa turhautuneena ("Jumala, MIKSI tekisit sen?"), näyttää itsesi suotuisassa valossa ("En koskaan niin ei") syyttää jotakuta muuta ("saimme virheen hänen ylläpitämättömän koodinsa takia"), tai "myrkyllisimmissä" organisaatioissa hallita muita häpeän kautta ("mitä ajattelit? korjata") .

Viha koodiin: ohjelmoijat ja negatiivisuus

Negatiivisuus on niin tärkeää ohjelmoijille, koska se on erittäin tehokas tapa välittää arvoa. Kävin ohjelmointileirillä, ja oli tavanomainen käytäntö rokottaa opiskelijoille kauppakulttuuria tarjoamalla heille avokätisesti meemejä, tarinoita ja videoita, joista suosituimpia hyödynnettiin. ohjelmoijien pettymys, kun he kohtasivat ihmisten väärinkäsityksen. On mukavaa pystyä käyttämään emotionaalisia työkaluja nimittämään Hyvä, huono, kauhea, älä koskaan tee sitä, älä koskaan tee sitä. Aloittelijat on valmisteltava siihen, että IT:stä kaukana olevat kollegat ymmärtävät heidät varmasti väärin. Että heidän ystävänsä alkavat tarjota heille miljoonan dollarin sovellusideoita. Että heidän täytyy vaeltaa vanhentuneen koodin loputtomissa labyrinteissa, kun kulman takana on joukko minotauruksia.

Kun aloitamme koodaamisen oppimisen, käsityksemme "ohjelmointikokemuksen" syvyydestä tulee havainnoimalla muiden ihmisten emotionaalisia reaktioita. Tämä näkyy selvästi viesteissä Sabe ProgrammerHumorjossa monet uudet ohjelmoijat viihtyvät. Monet humoristiset ovat jossain määrin värjätty negatiivisuuden eri sävyillä: pettymys, pessimismi, suuttumus, alentuminen ja muut. Ja jos se ei riitä sinulle, lue kommentit.

Viha koodiin: ohjelmoijat ja negatiivisuus

Huomasin, että kokemuksen kasvaessa ohjelmoijat muuttuvat yhä negatiivisemmiksi. Aloittelijat, jotka eivät ole tietoisia heitä odottavista vaikeuksista, aloittavat innostuksesta ja halusta uskoa, että näiden vaikeuksien syy on yksinkertaisesti kokemuksen ja tiedon puute; ja lopulta he kohtaavat asioiden todellisen tilan.

Aika kuluu, he saavat kokemusta ja oppivat erottamaan hyvän koodin huonosta. Ja kun se hetki koittaa, nuoret ohjelmoijat turhautuvat ilmeisen huonoon koodiin. Ja jos he työskentelevät ryhmässä (etänä tai henkilökohtaisesti), he omaksuvat usein kokeneempien kollegoiden emotionaaliset tavat. Usein tämä johtaa negatiivisuuden lisääntymiseen, koska nuoret voivat nyt puhua ajatuksella koodista ja jakaa sen huonoon ja hyvään osoittaen siten olevansa "tiedossa". Tämä vahvistaa entisestään negatiivista: pettymysten perusteella on helppo tulla toimeen kollegoiden kanssa ja tulla osaksi ryhmää, Bad coden kritiikki lisää asemaasi ja ammattitaitoasi muiden silmissä: negatiivisia mielipiteitä ilmaisevia ihmisiä pidetään usein älykkäämpinä ja pätevämpinä.

Negatiivisuuden lisääntyminen ei välttämättä ole huono asia. Keskustelu ohjelmoinnista on muun muassa erittäin keskittynyt kirjoitetun koodin laatuun. Se, mitä koodi on, määrittelee täysin sen toiminnon, johon se on tarkoitettu (jätämme pois laitteiston, verkon jne.), joten on tärkeää pystyä ilmaisemaan mielipiteesi tästä koodista. Melkein kaikki keskustelu tiivistyy siihen, onko tämä koodi tarpeeksi hyvä, ja huonon koodin manifestien tuomitsemiseen ilmaisuissa, joiden emotionaalinen väritys luonnehtii koodin laatua:

  • "Tässä moduulissa on paljon loogisia epäjohdonmukaisuuksia ja se on hyvä ehdokas merkittäviin suorituskyvyn optimointiin."
  • "Tämä moduuli on melko huono, meidän on muutettava se."
  • "Tässä moduulissa ei ole järkeä, se on kirjoitettava uudelleen."
  • "Tämä moduuli on perseestä, se on korjattava."
  • "Tämä on pässin pala, ei moduuli, sitä ei tarvinnut kirjoittaa ollenkaan, mitä helvettiä sen kirjoittaja ajatteli."

Muuten, juuri tämä "emotionaalinen julkaisu" saa kehittäjät kutsumaan koodia "seksiksi", mikä on harvoin reilua, ellet työskentele PornHubilla.

Ongelmana on, että ihmiset ovat outoja, levotonta, tunteellisia olentoja, ja minkä tahansa tunteen havaitseminen ja ilmaisu muuttaa meitä: aluksi hienovaraisesti, mutta ajan myötä dramaattisesti.

Negatiivisuuden levoton liukas rinne

Muutama vuosi sitten olin epävirallinen tiiminvetäjä ja haastattelin yhtä kehittäjää. Pidimme hänestä todella: hän oli älykäs, hän esitti hyviä kysymyksiä, hän oli tekniikkataito ja sopi täydellisesti kulttuuriimme. Minuun teki erityisen vaikutuksen hänen positiivisuutensa ja kuinka yritteliäs hän vaikutti. Ja palkkasin hänet.

Tuolloin työskentelin yrityksessä pari vuotta ja tuntui, että omaksumamme kulttuuri ei ollut kovin tehokas. Yritimme tuoda tuotteen markkinoille kahdesti, kolmesti ja vielä pari kertaa ennen kuin saavuin, mikä johti suuriin korjauskustannuksiin, joiden aikana meillä ei ollut muuta näytettävää kuin pitkiä öitä, tiukkoja määräaikoja ja tyyppitoimivia tuotteita. Ja vaikka työskentelin edelleen kovasti, olin skeptinen viimeisimmän johdon meille osoittaman määräajan suhteen. Ja rennosti kirottiin, kun keskustelimme joistakin koodin kohdista kollegoideni kanssa.

Joten ei ollut yllättävää - vaikka olinkin yllättynyt - että muutamaa viikkoa myöhemmin sama uusi kehittäjä puhui samalla kielteisellä tavalla kuin minä (mukaan lukien ekspletiivi). Tajusin, että hän käyttäytyisi eri tavalla eri yrityksessä, jossa on erilainen kulttuuri. Hän vain sopeutui luomaani kulttuuriin. Syyllisyys valtasi minut. Subjektiivisen kokemukseni vuoksi juurrutin tulokkaaseen pessimismiä, jonka pidin aivan erilaisena. Vaikka hän ei todellakaan ollut sellainen ja yritti vain näyttää olevansa sopiva, pakotin paskan asenteeni häneen. Ja kaikella sanotulla, jopa vitsillä tai ohimennen, on huono tapa muuttua siihen, mitä he uskovat.

Viha koodiin: ohjelmoijat ja negatiivisuus

Negatiivisuuden tapoja

Palataanpa entisiin aloittelijoihimme, jotka ovat saaneet hieman viisautta ja kokemusta: he tutustuivat ohjelmointialaan paremmin ja ymmärtävät, että huonoa koodia on kaikkialla, sitä ei voi välttää. Sitä löytyy jopa edistyneimmistä laatuun keskittyvistä yrityksistä (ja kerron teille, nykyaika ei näytä säästävän huonolta koodilta).

Hyvä käsikirjoitus. Ajan myötä kehittäjät ymmärtävät, että huono koodi on ohjelmistojen todellisuus ja että heidän tehtävänsä on parantaa sitä. Ja että jos huonoa koodia ei voida välttää, niin siitä on turha nostaa meteliä. He valitsevat Zenin polun keskittyen ongelmien tai tehtävien ratkaisemiseen. He oppivat mittaamaan ohjelmiston laatua tarkasti ja viestimään siitä yritysten omistajille, kirjoittamaan hyvin perusteltuja arvioita vuosien kokemuksensa perusteella ja saavat lopulta runsaita palkintoja uskomattomasta ja johdonmukaisesta liiketoiminta-arvostaan. He tekevät työnsä niin hyvin, että heille maksetaan 10 miljoonan dollarin bonuksia ja he jäävät eläkkeelle tekemään mitä haluavat loppuelämänsä (älä pidä sitä itsestäänselvyytenä).

Viha koodiin: ohjelmoijat ja negatiivisuus

Toinen skenaario on pimeyden polku. Sen sijaan, että hyväksyisivät huonon koodin väistämättömänä, kehittäjät ottavat sen tehtäväkseen ilmoittaa kaikesta ohjelmointimaailman huonosta, jotta he voivat voittaa sen. He kieltäytyvät parantamasta olemassa olevaa huonoa koodia useista hyvistä syistä: "ihmisten pitäisi tietää enemmän eikä olla niin tyhmiä"; "se on epämiellyttävää"; "tämä on huono liiketoiminnalle"; "tämä todistaa kuinka älykäs olen"; "Jos en kerro teille, mikä surkea koodi tämä on, koko yritys putoaa mereen" ja niin edelleen.

Todennäköisesti he eivät pysty toteuttamaan haluamiaan muutoksia, koska yrityksen on valitettavasti jatkuvasti kehitettävä, eivätkä he voi käyttää aikaa koodin laadusta huolehtimiseen, joten tällaiset ihmiset saavat mainetta valittajina. Heitä pidetään korkeasta osaamisestaan, mutta heidät työnnetään yrityksen takapuolelle, missä ne eivät häiritse monia, mutta samalla pitävät kriittiset järjestelmät käynnissä. Ilman uusia kehitysmahdollisuuksia he menettävät taitonsa ja eivät enää täytä alan vaatimuksia. Heidän negatiivisuutensa muuttuu katkeraksi katkeruudeksi, ja sen seurauksena he ruokkivat egoaan väittelemällä XNUMX-vuotiaiden opiskelijoiden kanssa siitä, mitä polkua heidän vanhan suosikkiteknologiansa on kulkenut ja miksi se on edelleen pirteää. Lopulta he jäävät eläkkeelle ja elävät vanhuutensa vannoen lintuja.

Todellisuus on luultavasti jossain näiden kahden ääripään välissä.

Jotkut yritykset ovat erittäin onnistuneita luomaan äärimmäisen negatiivisia, eristettyjä, vahvatahtoisia kulttuureja (kuten Microsoft ennen sitä menetetty vuosikymmen) - usein nämä ovat yrityksiä, joiden tuotteet vastaavat täydellisesti markkinoita ja tarvetta kasvaa mahdollisimman nopeasti; tai yritykset, joilla on komento- ja valvontahierarkia (Apple Jobsin parhaina vuosina), joissa jokainen tekee mitä käsketään. Nykyaikainen yritystutkimus (ja maalaisjärki) kuitenkin viittaa siihen, että mahdollisimman kekseliäs, joka johtaa yrityksen innovaatioihin ja korkeaan yksilön tuottavuuteen, tarvitaan alhaista stressitasoa jatkuvan luovan ja metodisen ajattelun tukemiseksi. Ja on äärimmäisen vaikeaa tehdä luovaa työtä keskustelun pohjalta, jos olet jatkuvasti huolissasi siitä, mitä kollegoillasi on sanottavaa koodisi jokaisesta rivistä.

Negatiivisuus on popkulttuurin suunnittelua

Nykyään insinöörien asenteeseen kiinnitetään enemmän huomiota kuin koskaan. Insinööriorganisaatioissa sääntö "Ei lampaita". Twitterissä on yhä enemmän vitsejä ja tarinoita ihmisistä, jotka jättivät tämän ammatin, koska he eivät voineet (eivät halunneet) jatkaa vihamielisyyttä ja pahaa tahtoa ulkopuolisia kohtaan. Jopa Linus Torvalds pyysi äskettäin anteeksi vuosien vihamielisyys ja muiden Linux-kehittäjien kritiikki - tämä on johtanut keskusteluun tämän lähestymistavan tehokkuudesta.

Joku puolustaa edelleen Linuksen oikeutta olla erittäin kriittinen - ne, joiden pitäisi tietää paljon "myrkyllisen negatiivisuuden" eduista ja haitoista. Kyllä, oikeellisuus on äärimmäisen tärkeää (jopa perustavanlaatuista), mutta jos tiivistää syyt, miksi monet meistä antavat negatiivisen mielipiteen ilmaisun muuttua "myrkyllisyydeksi", niin nämä syyt näyttävät paternalistisilta tai nuorilta: "he ansaitsevat sen, koska he ovat idiootit", "hänen täytyy olla varma, etteivät he toista tätä", "jos he eivät olisi tehneet niin, hänen ei olisi tarvinnut huutaa heille" ja niin edelleen. Esimerkki vaikutuksesta, joka johtajan tunnereaktioilla on ohjelmointiyhteisöön, on Ruby-yhteisön lyhenne sanoista MINASWAN, "Matz on mukava, joten olemme mukavia."

Olen huomannut, että monet kiihkeät "tappa tyhmä" kannattajat ovat usein hyvin huolissaan koodin laadusta ja oikeellisuudesta ja tunnistavat itsensä työhönsä. Valitettavasti ne sekoittavat usein kovuuden ja jäykkyyden. Tällaisen asenteen haittapuoli johtuu yksinkertaisesta inhimillisestä mutta tuottamattomasta halusta tuntea olevansa muita parempi. Ihmiset, jotka uppoavat tähän haluun, juuttuvat pimeyden tielle.

Viha koodiin: ohjelmoijat ja negatiivisuus

Ohjelmoinnin maailma kasvaa nopeasti ja lepää konttinsa rajoilla - ei-ohjelmoinnin maailmalla (vai onko ohjelmoinnin maailma kontti ei-ohjelmoinnin maailmalle? hyvä kysymys).

Kun toimialamme laajenee kiihtyvällä vauhdilla ja ohjelmointi helpottuu, "tekniikan" ja "normaalin" välinen etäisyys pienenee nopeasti. Ohjelmointimaailma on yhä enemmän alttiina ihmisten väliselle kommunikaatiolle, jotka kasvoivat varhaisen teknologiabuumin "nörttien" eristyksissä, ja juuri he muodostavat uuden ohjelmoinnin maailman. Ja sosiaalisista tai sukupolvien välisistä argumenteista huolimatta tehokkuus kapitalismin nimissä näkyy yrityskulttuurissa ja rekrytointikäytännöissä: parhaat yritykset eivät yksinkertaisesti palkkaa niitä, jotka eivät pysty olemaan neutraalisti vuorovaikutuksessa muiden kanssa, puhumattakaan hyvistä ihmissuhteista.

Mitä opin negatiivisuudesta

Jos annat ylimääräisen negatiivisuuden hallita mieltäsi ja vuorovaikutustasi ihmisten kanssa, muuttuen myrkyllisyydeksi, se on vaarallista tuoteryhmille ja kallista yrityksille. Olen nähnyt lukemattomia projekteja (ja kuullut niistä), jotka hajosivat ja tehtiin kokonaan uudelleen kalliilla kustannuksilla, koska yhdellä luotettavalla kehittäjällä oli kaunaa tekniikkaa, toista kehittäjää tai jopa yhtä tiedostoa kohtaan, joka oli valittu edustamaan tuotteen laatua. koko koodikanta.

Negatiivisuus myös demoralisoi ja tuhoaa ihmissuhteita. En koskaan unohda, kuinka kollega moitti minua siitä, että laitoin CSS:n väärään tiedostoon, se järkytti minua ja ei antanut minun kerätä ajatuksiani useisiin päiviin. Ja tulevaisuudessa en todennäköisesti salli sellaisen henkilön olla jonkun tiimini lähellä (mutta kuka tietää, ihmiset muuttuvat).

Lopuksi negatiivinen kirjaimellisesti vahingoittaa terveyttäsi.

Viha koodiin: ohjelmoijat ja negatiivisuus
Mielestäni hymyjen mestarikurssin pitäisi näyttää tältä.

Tämä ei tietenkään ole argumentti onnen säteilemisen, kymmenen miljardin emojin lisäämisen jokaiseen vetopyyntöön tai hymyn mestarikurssille menemisen puolesta (ei, no, jos se on mitä haluat, se ei ole kysymys). Negatiivisuus on äärimmäisen tärkeä osa ohjelmointia (ja ihmiselämää), signaloimalla laatua, jolloin voit ilmaista tunteita ja tuntea myötätuntoa ihmisveljiä kohtaan. Negatiivinen todistaa oivalluksesta ja varovaisuudesta, ongelman syvyydestä. Huomaan usein, että kehittäjä on saavuttanut uuden tason, kun hän alkaa ilmaista epäluottamusta siihen, mistä hän oli aiemmin arka ja epävarma. Mielipitellään ihmiset osoittavat varovaisuutta ja luottamusta. Et voi hylätä negatiivisuuden ilmaisua, se olisi orwellilaista.

Negatiivista on kuitenkin annosteltava ja tasapainotettava muiden tärkeiden inhimillisten ominaisuuksien kanssa: myötätunto, kärsivällisyys, ymmärrys ja huumori. Voit aina kertoa ihmiselle, että hän meni pilalle, huutamatta ja kiroilematta. Tätä lähestymistapaa ei pidä aliarvioida: jos he kertovat sinulle täysin ilman tunteita, että olet sekaisin vakavasti, se todella pelottaa.

Tuolloin, muutama vuosi sitten, toimitusjohtaja puhui minulle. Keskustelimme projektin nykytilasta, sitten hän kysyi, miltä minusta tuntuu. Vastasin, että kaikki on hyvin, projekti etenee, hitaasti etenemme, ehkä minulta jäi jotain ohi ja se on tarkistettava. Hän sanoi kuulleensa minun kertovan pessimistisempiä ajatuksia työtovereiden kanssa toimistossa ja että muutkin huomasivat sen. Hän selitti, että jos minulla on epäilyksiä, voin täysin ilmaista ne johdolle, mutta en "alentaa sitä". Pääinsinöörinä minun on muistettava, kuinka sanani vaikuttavat muihin, koska minulla on paljon vaikutusvaltaa, vaikka en sitä tajuakaan. Ja hän kertoi minulle tämän kaiken erittäin ystävällisellä tavalla ja päätteli, että jos minusta todella tuntuu siltä, ​​minun on luultavasti mietittävä, mitä haluan itselleni ja uralleni. Se oli uskomattoman pehmeää puhetta tyyliin "nouse ylös tai tule ulos". Kiitin häntä tiedosta, kuinka asenteeni muuttui puolessa vuodessa, minulle huomaamattomasti, vaikuttaa muihin.

Se oli esimerkki merkittävästä, tehokkaasta johtamisesta ja pehmeän lähestymistavan voimasta. Tajusin vain uskovani täysin yritykseen ja sen kykyyn saavuttaa tavoitteensa, mutta todellisuudessa puhuin ja kommunikoin muiden kanssa aivan eri tavalla. Ymmärsin myös, että vaikka suhtauduin skeptisesti työstämääni projektiin, minun ei olisi pitänyt näyttää asennettani kollegoilleni ja levittää pessimismiä kuin tartuntaa, mikä heikensi onnistumismahdollisuuksiamme. Sen sijaan voisin aggressiivisesti lähettää todellisen tilanteen johtajilleni. Ja jos minusta tuntui, että he eivät kuunnelleet minua, voisin ilmaista eri mieltä jättämällä yrityksen.

Sain uuden mahdollisuuden astuessani henkilöstöjohtajan tehtävään. Entisenä pääinsinöörinä olen erittäin varovainen ilmaiseessani mielipiteeni (jatkuvasti parantuvasta) vanhasta koodistamme. Sinun on oltava tietoinen nykyisestä tilanteesta voidaksesi hyväksyä muutoksen, mutta et pääse mihinkään, jos ryöstelet valittamisessa, hyökkäämisessä tai vastaavassa. Viime kädessä olen täällä tekemässä työni, eikä minun tarvitse valittaa koodista ymmärtääkseni, arvioidakseni tai korjatakseni sen.

Itse asiassa, mitä enemmän hillitsen emotionaalista reaktiota koodiin, sitä paremmin ymmärrän, mitä se voisi olla, ja sitä vähemmän koen hämmennystä. Kun ilmaisin pidättyväisyyttä ("parantamisen varaa pitäisi olla"), ilahduin siten itseäni ja muita enkä ottanut tilannetta liian henkilökohtaisesti. Tajusin, että voisin stimuloida ja vähentää negatiivisuutta muissa olemalla täysin (ärsyttävästi?) järkevä ("olet oikeassa, tämä koodi on aika huono, mutta me parannamme sitä"). Olen tyytyväinen siihen, kuinka pitkälle voin mennä Zenin polulla.

Itse asiassa opin jatkuvasti ja opin uudelleen tärkeän oppitunnin: elämä on liian lyhyt ollakseen jatkuvasti vihainen ja kärsivä.

Viha koodiin: ohjelmoijat ja negatiivisuus

Lähde: will.com

Lisää kommentti