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") .
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.
Kun aloitamme koodaamisen oppimisen, käsityksemme "ohjelmointikokemuksen" syvyydestä tulee havainnoimalla muiden ihmisten emotionaalisia reaktioita. Tämä näkyy selvästi viesteissä
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ä:
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.
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ä).
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ä
Negatiivisuus on popkulttuurin suunnittelua
Nykyään insinöörien asenteeseen kiinnitetään enemmän huomiota kuin koskaan. Insinööriorganisaatioissa sääntö "
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.
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
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ä.
Lähde: will.com