Woede vir kode: programmeerders en negatiwiteit

Woede vir kode: programmeerders en negatiwiteit

Ek kyk na 'n stukkie kode. Dit is dalk die ergste kode wat ek nog ooit gesien het. Om net een rekord in die databasis op te dateer, haal dit al die rekords in die versameling op en stuur dan 'n opdateringsversoek na elke rekord in die databasis, selfs dié wat nie opgedateer hoef te word nie. Daar is 'n kaartfunksie wat eenvoudig die waarde wat daaraan oorgedra is, terugstuur. Daar is voorwaardelike toetse vir veranderlikes met blykbaar dieselfde waarde, net in verskillende style genoem (firstName и first_name). Vir elke UPDATE stuur die kode 'n boodskap na 'n ander tou, wat deur 'n ander bedienerlose funksie hanteer word, maar wat al die werk doen vir 'n ander versameling in dieselfde databasis. Het ek genoem dat hierdie bedienerlose funksie van 'n wolk-gebaseerde "diens-georiënteerde argitektuur" is wat meer as 100 funksies in die omgewing bevat?

Hoe was dit selfs moontlik om dit te doen? Ek bedek my gesig en snik sigbaar deur my lag. My kollegas vra wat gebeur het, en ek vertel dit in kleure oor Slegste treffers van BulkDataImporter.js 2018. Almal knik simpatiek vir my en stem saam: hoe kon hulle dit aan ons doen?

Negatiwiteit: 'n emosionele hulpmiddel in 'n programmeerderkultuur

Negatiwiteit speel 'n belangrike rol in programmering. Dit is ingebed in ons kultuur en word gebruik om te deel wat ons geleer het (“jy doen nie jy sal dit glo, hoe was daardie kode!”), om simpatie uit te druk deur frustrasie (“God, WAAROM doen dit?”), om met jouself te spog (“Ek sou nooit so het dit nie gedoen nie"), om die skuld op iemand anders te pak ("ons het misluk weens sy kode, wat onmoontlik is om te handhaaf"), of, soos gebruiklik in die mees "giftige" organisasies, om ander te beheer deur 'n gevoel van skaamte ("Waaraan het jy selfs gedink?" ? korrek").

Woede vir kode: programmeerders en negatiwiteit

Negatiwiteit is so belangrik vir programmeerders omdat dit 'n baie effektiewe manier is om waarde oor te dra. Ek het eenkeer 'n programmeringskamp bygewoon, en die standaardpraktyk om 'n nywerheidskultuur by studente te vestig was om mildelik memes, stories en video's te verskaf, waarvan die gewildste uitgebuit is programmeerders se frustrasie wanneer hulle gekonfronteer word met mense se misverstand. Dit is goed om emosionele gereedskap te kan gebruik om die Goeie, die Slegte, die Lelike te identifiseer, moenie dit doen nie, glad nie. Dit is nodig om nuwelinge daarop voor te berei dat hulle waarskynlik verkeerd verstaan ​​sal word deur kollegas wat ver van IT is. Dat hul vriende aan hulle miljoen-dollar app-idees sal begin verkoop. Dat hulle deur eindelose labirinte van verouderde kode sal moet dwaal met 'n klomp minotaurusse om die draai.

Wanneer ons die eerste keer leer programmeer, is ons begrip van die diepte van die “programmeringservaring” gebaseer op die waarneming van ander mense se emosionele reaksies. Dit kan duidelik gesien word uit die plasings in sabe ProgrammerHumor, waar baie nuwelingprogrammeerders uithang. Baie humoristiese is in een of ander mate gekleur met verskillende skakerings van negatiwiteit: teleurstelling, pessimisme, verontwaardiging, neerbuigend en ander. En as dit nie vir jou genoeg lyk nie, lees die kommentaar.

Woede vir kode: programmeerders en negatiwiteit

Ek het opgemerk dat soos wat programmeerders ondervinding opdoen, hulle meer en meer negatief word. Beginners, onbewus van die probleme wat op hulle wag, begin met entoesiasme en 'n gewilligheid om te glo dat die oorsaak van hierdie probleme bloot 'n gebrek aan ervaring en kennis is; en uiteindelik sal hulle met die werklikheid van dinge gekonfronteer word.

Die tyd gaan verby, hulle doen ondervinding op en word in staat om Goeie kode van Bad te onderskei. En wanneer daardie oomblik aanbreek, voel jong programmeerders die frustrasie om met duidelik slegte kode te werk. En as hulle in 'n span werk (op afstand of persoonlik), neem hulle dikwels die emosionele gewoontes van meer ervare kollegas aan. Dit lei dikwels tot 'n toename in negatiwiteit, want jongmense kan nou bedagsaam oor kode praat en dit in sleg en goed verdeel, en sodoende wys dat hulle "in die wete" is. Dit versterk die negatiewe verder: uit teleurstelling is dit maklik om met kollegas oor die weg te kom en deel van 'n groep te word; om Bad Code te kritiseer verhoog jou status en professionaliteit in die oë van ander: mense wat negatiewe menings uitspreek, word dikwels as meer intelligent en bekwaam ervaar.

Toenemende negatiwiteit is nie noodwendig 'n slegte ding nie. Besprekings van onder andere programmering is uiters gefokus op die kwaliteit van die kode wat geskryf is. Wat die kode is, definieer heeltemal die funksie wat dit bedoel is om te doen (hardeware, netwerk, ens. tersyde), daarom is dit belangrik om jou mening oor daardie kode te kan uitspreek. Byna alle besprekings kom daarop neer of die kode goed genoeg is, en om die einste manifestasies van slegte kode te veroordeel in terme waarvan die emosionele konnotasie die kwaliteit van die kode kenmerk:

  • "Daar is baie logika teenstrydighede in hierdie module, dit is 'n goeie kandidaat vir aansienlike prestasie-optimalisering."
  • "Hierdie module is redelik sleg, ons moet dit herfaktoriseer."
  • "Hierdie module maak nie sin nie, dit moet herskryf word."
  • "Hierdie module suig, dit moet reggemaak word."
  • "Dit is 'n stuk ram, nie 'n module nie, dit hoef glad nie geskryf te word nie, wat de hel het die skrywer daarvan gedink."

Terloops, dit is hierdie "emosionele vrystelling" wat ontwikkelaars die kode "sexy" laat noem, wat selde regverdig is - tensy jy by PornHub werk.

Die probleem is dat mense vreemde, rustelose, emosionele wesens is, en die persepsie en uitdrukking van enige emosie verander ons: aanvanklik subtiel, maar met verloop van tyd, dramaties.

'n Troebel glybaan van negatiwiteit

'n Paar jaar gelede was ek 'n informele spanleier en het 'n onderhoud met 'n ontwikkelaar gevoer. Ons het baie van hom gehou: hy was slim, het goeie vrae gevra, was tegnies vaardig en het goed by ons kultuur ingepas. Ek was veral beïndruk deur sy positiwiteit en hoe ondernemend hy gelyk het. En ek het hom gehuur.

Op daardie stadium het ek al 'n paar jaar in die maatskappy gewerk en gevoel dat ons kultuur nie baie effektief was nie. Ons het twee keer, drie keer en nog 'n paar keer probeer om die produk bekend te stel voordat ek opgedaag het, wat gelei het tot groot uitgawes aan herwerk, waartydens ons niks gehad het om te wys nie, behalwe lang nagte, streng spertye en produkte wat gewerk het. En hoewel ek nog hard gewerk het, was ek skepties oor die laaste sperdatum wat die bestuur aan ons toegeken het. En hy het terloops gevloek toe hy sommige aspekte van die kode met my kollegas bespreek het.

Dit was dus nie verbasend nie - al was ek verbaas - dat dieselfde nuwe ontwikkelaar 'n paar weke later dieselfde negatiewe dinge gesê het wat ek gedoen het (insluitend vloek). Ek het besef dat hy anders sou optree in 'n ander maatskappy met 'n ander kultuur. Hy het net aangepas by die kultuur wat ek geskep het. Ek was oorval met 'n skuldgevoel. As gevolg van my subjektiewe ervaring het ek pessimisme ingeboesem by 'n nuweling wat ek as heeltemal anders ervaar het. Al was hy regtig nie so nie en het net 'n verskyning gemaak om te wys dat hy kan inpas, het ek my kak houding op hom afgedwing. En alles wat gesê word, selfs in die grap of in die verbygaan, het die slegte manier om te verander in wat geglo word.

Woede vir kode: programmeerders en negatiwiteit

Negatiewe maniere

Kom ons keer terug na ons voormalige nuwelingprogrammeerders, wat 'n bietjie wysheid en ervaring opgedoen het: hulle het meer vertroud geraak met die programmeringsbedryf en verstaan ​​dat slegte kode oral is, dit kan nie vermy word nie. Dit kom selfs in die mees gevorderde maatskappye voor wat op kwaliteit fokus (en laat ek daarop let: moderniteit beskerm blykbaar nie teen slegte kode nie).

Goeie draaiboek. Met verloop van tyd begin ontwikkelaars aanvaar dat slegte kode 'n werklikheid van sagteware is en dat hul taak is om dit te verbeter. En dat as slegte kode nie vermy kan word nie, dit geen sin is om 'n bohaai daaroor te maak nie. Hulle neem die pad van Zen, en fokus op die oplossing van probleme of take wat hulle konfronteer. Hulle leer hoe om sagtewarekwaliteit akkuraat aan sake-eienaars te meet en te kommunikeer, gegronde ramings te skryf gebaseer op hul jare se ondervinding, en uiteindelik ruim belonings ontvang vir hul ongelooflike en deurlopende waarde vir die besigheid. Hulle doen hul werk so goed dat hulle $10 miljoen aan bonusse betaal word en aftree om vir die res van hul lewens te doen wat hulle wil (moet dit asseblief nie as vanselfsprekend aanvaar nie).

Woede vir kode: programmeerders en negatiwiteit

Nog 'n scenario is die pad van duisternis. In plaas daarvan om slegte kode as 'n onvermydelikheid te aanvaar, neem ontwikkelaars dit op hulself om alles sleg in die programmeringswêreld uit te roep sodat hulle dit kan oorkom. Hulle weier om bestaande slegte kode te verbeter om baie goeie redes: "mense moet meer weet en nie so dom wees nie"; "dit is onaangenaam"; “dit is sleg vir besigheid”; “dit bewys hoe slim ek is”; "as ek jou nie vertel wat 'n slegte kode dit is nie, sal die hele maatskappy in die see val," ensovoorts.

Sekerlik nie in staat om die veranderinge te implementeer wat hulle wil hê nie, want die besigheid moet ongelukkig aanhou ontwikkel en kan nie tyd spandeer om te bekommer oor die kwaliteit van die kode nie, hierdie mense kry 'n reputasie as klaers. Hulle word behou vir hul hoë bevoegdheid, maar word na die marges van die maatskappy gestoot, waar hulle nie baie mense sal irriteer nie, maar steeds die werking van kritieke stelsels sal ondersteun. Sonder toegang tot nuwe ontwikkelingsgeleenthede, verloor hulle vaardighede en hou hulle op om aan die industrie se eise te voldoen. Hul negatiwiteit verander in bitter bitterheid, en gevolglik voed hulle hul ego's deur met twintig-jarige studente te stry oor die reis wat hul gunsteling ou tegnologie afgelê het en hoekom dit nog so warm is. Hulle gaan op die ou end aftree en leef hul oudag deur voëls te vloek.

Die werklikheid lê waarskynlik iewers tussen hierdie twee uiterstes.

Sommige maatskappye was uiters suksesvol in die skep van uiters negatiewe, insulêre, sterk-wil kulture (soos Microsoft voor sy verlore dekade) - dikwels is dit maatskappye met produkte wat perfek by die mark pas en die behoefte om so vinnig as moontlik te groei; of maatskappye met 'n hiërargie van bevel en beheer (Apple in die beste jare van Jobs), waar almal doen wat hulle vertel word. Moderne besigheidsnavorsing (en gesonde verstand) dui egter daarop dat maksimum vernuf, wat lei tot innovering in maatskappye, en hoë produktiwiteit by individue, lae vlakke van stres vereis om deurlopende kreatiewe en metodiese denke te ondersteun. En dit is uiters moeilik om kreatiewe, besprekingsgebaseerde werk te doen as jy voortdurend bekommerd is oor wat jou kollegas oor elke reël van jou kode te sê sal hê.

Negatiwiteit is ingenieurswese popkultuur

Vandag word meer aandag gegee aan die houding van ingenieurs as ooit tevore. In ingenieursorganisasies is die reël "Geen horings nie". Al hoe meer staaltjies en stories verskyn op Twitter oor mense wat hierdie beroep verlaat het omdat hulle nie kon (sou) aanhou om vyandigheid en kwaadwilligheid teenoor buitestanders te verdra nie. Selfs Linus Torvalds onlangs om verskoning gevra jare van vyandigheid en kritiek teenoor ander Linux-ontwikkelaars - dit het gelei tot debat oor die doeltreffendheid van hierdie benadering.

Sommige verdedig steeds Linus se reg om baie krities te wees – diegene wat baie behoort te weet van die voor- en nadele van “toksiese negatiwiteit”. Ja, beskaafdheid is uiters belangrik (selfs fundamenteel), maar as ons die redes opsom waarom baie van ons toelaat dat die uitdrukking van negatiewe menings in "toksisiteit" verander, lyk hierdie redes paternalisties of adolessent: "hulle verdien dit omdat hulle idiote is. ", "hy moet seker wees dat hulle dit nie weer sal doen nie," "as hulle dit nie gedoen het nie, sou hy nie op hulle hoef te skree nie," ensovoorts. 'n Voorbeeld van die impak wat 'n leier se emosionele reaksies op 'n programmeringsgemeenskap het, is die Ruby-gemeenskap se akroniem MINASWAN - "Matz is nice so we are nice."

Ek het opgemerk dat baie vurige voorstanders van die "kill a fool"-benadering dikwels baie omgee vir die kwaliteit en korrektheid van die kode en hulself met hul werk identifiseer. Ongelukkig verwar hulle dikwels hardheid met styfheid. Die nadeel van hierdie posisie spruit uit die eenvoudige menslike, maar onproduktiewe begeerte om verhewe bo ander te voel. Mense wat in hierdie begeerte verdiep raak, sit vas in die pad van duisternis.

Woede vir kode: programmeerders en negatiwiteit

Die wêreld van programmering groei vinnig en stoot teen die grense van sy houer – die wêreld van nie-programmering (of is die wêreld van programmering 'n houer vir die wêreld van nie-programmering? Goeie vraag).

Soos ons bedryf teen 'n toenemende tempo uitbrei en programmering meer toeganklik word, is die afstand tussen "tegnologie" en "normale" vinnig besig om toe te neem. Die wêreld van programmering word toenemend blootgestel aan die interpersoonlike interaksies van mense wat grootgeword het in die geïsoleerde nerd-kultuur van die vroeë tegnologie-oplewing, en dit is hulle wat die nuwe wêreld van programmering sal vorm. En ongeag enige sosiale of generasie-argumente, sal doeltreffendheid in die naam van kapitalisme in die maatskappykultuur en aanstellingspraktyke na vore kom: die beste maatskappye sal eenvoudig nie iemand aanstel wat nie neutraal met ander kan omgaan nie, wat nog te sê van goeie verhoudings.

Wat ek oor negatiwiteit geleer het

As jy te veel negatiwiteit toelaat om jou verstand en interaksies met mense te beheer, wat in toksisiteit verander, dan is dit gevaarlik vir produkspanne en duur vir besigheid. Ek het al talle projekte gesien (en daarvan gehoor) wat uitmekaar geval het en ten duurste heeltemal herbou is omdat een betroubare ontwikkelaar 'n wrok gehad het teen die tegnologie, 'n ander ontwikkelaar, of selfs 'n enkele lêer wat gekies is om die kwaliteit van die hele kodebasis te verteenwoordig.

Negatiwiteit demoraliseer en vernietig ook verhoudings. Ek sal nooit vergeet hoe 'n kollega my uitgeskel het omdat ek CSS in die verkeerde lêer geplaas het nie, dit het my ontstel en my vir 'n paar dae nie toegelaat om my gedagtes te versamel nie. En in die toekoms is dit onwaarskynlik dat ek so 'n persoon sal toelaat om naby een van my spanne te wees (maar wie weet, mense verander).

Ten slotte, die negatiewe jou gesondheid letterlik benadeel.

Woede vir kode: programmeerders en negatiwiteit
Ek dink dit is hoe 'n meesterklas oor glimlagte moet lyk.

Dit is natuurlik nie 'n argument ten gunste daarvan om van geluk te straal, tien biljoen emoticons in elke trekversoek in te voeg, of na 'n meesterklas oor glimlagte te gaan nie (nee, wel, as dit is wat jy wil hê, dan is dit geen twyfel nie). Negatiwiteit is 'n uiters belangrike deel van programmering (en menslike lewe), wat kwaliteit sein, wat 'n mens in staat stel om gevoelens uit te druk en met medemens meegevoel te wees. Negatiwiteit dui op insig en omsigtigheid, die diepte van die probleem. Ek merk dikwels dat 'n ontwikkelaar 'n nuwe vlak bereik het wanneer hy begin om ongeloof uit te spreek in dit waaroor hy voorheen bedees en onseker was. Mense toon redelikheid en selfvertroue met hul opinies. Jy kan nie die uitdrukking van negatiwiteit verwerp nie, dit sal Orwelliaans wees.

Negatiwiteit moet egter gedoseer en gebalanseer word met ander belangrike menslike eienskappe: empatie, geduld, begrip en humor. Jy kan altyd vir 'n persoon sê dat hy gemors het sonder om te skree of te vloek. Moenie hierdie benadering onderskat nie: as iemand sonder enige emosie vir jou sê dat jy ernstig opgemors het, is dit regtig skrikwekkend.

Daardie tyd, etlike jare gelede, het die HUB met my gepraat. Ons het die huidige status van die projek bespreek, toe vra hy hoe ek voel. Ek het geantwoord dat alles reg is, die projek beweeg, ons werk stadig, miskien het ek iets gemis en moet heroorweeg word. Hy het gesê dat hy gehoor het dat ek meer pessimistiese gedagtes met kollegas in die kantoor deel, en dat ander dit ook opgemerk het. Hy het verduidelik dat as ek twyfel, ek dit ten volle aan die bestuur kan uitspreek, maar nie "dit afneem nie." As 'n hoofingenieur moet ek bedag wees op hoe my woorde ander raak, want ek het baie invloed al besef ek dit nie. En hy het dit alles baie vriendelik vertel, en uiteindelik gesê dat as ek regtig so voel, dan moet ek seker dink oor wat ek vir myself en my loopbaan wil hê. Dit was 'n ongelooflike sagte, kry-dit-of-kom-uit-jou-stoel gesprek. Ek het hom bedank vir die inligting oor hoe my veranderde houding oor ses maande ander ongemerk beïnvloed het.

Dit was 'n voorbeeld van merkwaardige, doeltreffende bestuur en die krag van 'n sagte benadering. Ek het besef dit lyk asof ek net volkome vertroue in die maatskappy en sy vermoë het om sy doelwitte te bereik, maar in werklikheid het ek op 'n heel ander manier met ander gepraat en gekommunikeer. Ek het ook besef dat selfs al voel ek skepties oor die projek waaraan ek gewerk het, ek nie my gevoelens aan my kollegas moet wys en pessimisme soos 'n besmetting moet versprei, wat ons kanse op sukses verminder nie. In plaas daarvan kon ek die werklike situasie aggressief aan my bestuur oordra. En as ek voel dat hulle nie na my luister nie, kan ek my meningsverskil uitspreek deur die maatskappy te verlaat.

Ek het 'n nuwe geleentheid gekry toe ek die pos van hoof van personeelassessering beklee het. As 'n voormalige hoofingenieur is ek baie versigtig om my opinies oor ons (altyd verbeterde) nalatenskapkode uit te spreek. Om 'n verandering goed te keur, moet jy jou die huidige situasie voorstel, maar jy sal nêrens kom as jy jou kerm, aanval, of dies meer nie. Uiteindelik is ek hier om 'n taak te voltooi en moet nie kla oor die kode om dit te verstaan, te evalueer of dit reg te stel nie.

Trouens, hoe meer ek my emosionele reaksie op die kode beheer, hoe meer verstaan ​​ek wat dit kan word en hoe minder verwarring voel ek. Toe ek myself met selfbeheersing uitdruk ("hier moet ruimte vir verdere verbetering wees"), het ek myself en ander gelukkig gemaak en die situasie nie te ernstig opgeneem nie. Ek het besef dat ek negatiwiteit by ander kan stimuleer en verminder deur volkome (irriterende?) redelik te wees (“jy is reg, hierdie kode is redelik sleg, maar ons sal dit verbeter”). Ek is bly om te sien hoe ver ek op die Zen-pad kan gaan.

In wese leer en leer ek voortdurend 'n belangrike les: die lewe is te kort om voortdurend kwaad en in pyn te wees.

Woede vir kode: programmeerders en negatiwiteit

Bron: will.com

Voeg 'n opmerking