Kodearekiko haserrea: programatzaileak eta negatiboa

Kodearekiko haserrea: programatzaileak eta negatiboa

Kode zati bat ikusten ari naiz. Hau izan daiteke inoiz ikusi dudan koderik okerrena. Datu-baseko erregistro bakarra eguneratzeko, bildumako erregistro guztiak berreskuratzen ditu eta, ondoren, eguneratze-eskaera bat bidaltzen die datu-baseko erregistro guztiei, baita eguneratu behar ez dutenei ere. Badago mapa-funtzio bat hari emandako balioa besterik gabe itzultzen duena. Badira baldintzazko probak itxuraz balio bera duten aldagaietarako, estilo ezberdinetan izendatuak (firstName и first_name). EGUNERAZIO bakoitzeko, kodeak beste ilara batera bidaltzen du mezu bat, zerbitzaririk gabeko funtzio ezberdin batek kudeatzen duena, baina datu-base berean bilduma ezberdin baterako lan guztia egiten duena. Zerbitzaririk gabeko funtzio hau ingurunean 100 funtzio baino gehiago dituen hodeian oinarritutako "zerbitzuetara zuzendutako arkitektura" dela aipatu al dut?

Nola izan zen posible hau egitea? Aurpegia estaltzen dut eta negar-zotinka egiten dut barre artean. Nire lankideek zer gertatu den galdetzen dute, eta nik koloretan kontatzen dut BulkDataImporter.js 2018ko arrakastarik txarrenak. Denek begi onez keinua egiten didate eta ados daude: nola egin liezagukete hau?

Negatibotasuna: tresna emozionala programatzaileen kulturan

Negatibotasunak paper garrantzitsua betetzen du programazioan. Gure kulturan txertatuta dago eta ikasitakoa partekatzeko erabiltzen da (“ez duzu sinetsiko duzu, nolakoa zen kode hori!”), frustrazioaren bidez sinpatia adierazteko (“Jainkoa, ZERGATIK egin hori?”), norbere burua erakusteko (“Inoiz ez nuke egingo beraz, ez du egin”), errua beste bati botatzea (“porrot egin dugu bere kodeagatik, ezinezkoa da mantentzea”), edo, erakunde “toxikoenetan” ohikoa den bezala, besteak kontrolatzea. lotsa sentimendua ("Zertan ari zinen pentsatzen?"? zuzena").

Kodearekiko haserrea: programatzaileak eta negatiboa

Negatibotasuna oso garrantzitsua da programatzaileentzat, balioa transmititzeko oso modu eraginkorra delako. Behin programazio-kanpamentu batera joan nintzen, eta ikasleei industria-kultura bat barneratzeko praktika estandarra memeak, istorioak eta bideoak eskuzabaltasunez hornitzea zen, ezagunenak ustiatu zituztenak. programatzaileen frustrazioa jendearen gaizki-ulertzearen aurrean. Ona da Ona, Txarra, Itsusia, Ez Egin Hori, Inoiz Inoiz identifikatzeko tresna emozionalak erabili ahal izatea. Beharrezkoa da etorri berriak prestatzea, ziurrenik ITtik urrun dauden lankideek gaizki ulertuko dituztelako. Beren lagunak milioi dolarreko aplikazioen ideiak saltzen hasiko direla. Kode zaharkituaren labirinto amaigabeetan barrena ibili beharko dutela minotauro mordoa izkinan.

Programatzen ikasten dugunean, “programazio-esperientziaren” sakontasuna ulertzeko beste pertsonen erreakzio emozionalak behatzean oinarritzen da. Hau argi eta garbi ikus daiteke mezuetan sabe ProgramatzaileaUmorea, non programatzaile hasiberri asko egoten diren. Umoretsu asko, neurri batean edo bestean, negatibotasun ñabardura ezberdinez koloreztatuta daude: etsipena, ezkortasuna, sumindura, kondeszendazioa eta beste. Eta hau nahikoa iruditzen ez bazaizu, irakurri iruzkinak.

Kodearekiko haserrea: programatzaileak eta negatiboa

Konturatu nintzen programatzaileek esperientzia hartzen duten heinean, gero eta negatiboagoak direla. Hasiberriak, zain dauden zailtasunez jabetu gabe, ilusioz eta zailtasun horien kausa esperientzia eta ezagutza falta besterik ez dela sinesteko gogoz hasten dira; eta azkenean gauzen errealitateari aurre egingo diote.

Denbora igarotzen da, esperientzia hartzen dute eta Good code eta Bad bereizteko gai bihurtzen dira. Eta une hori iristen denean, programatzaile gazteek kode txarrarekin lan egitearen frustrazioa sentitzen dute. Eta taldean lan egiten badute (urrunetik edo pertsonalki), askotan esperientziadun lankideen ohitura emozionalak hartzen dituzte. Horrek askotan negatiboa areagotzea dakar, gazteek orain kodeari buruz pentsakor hitz egin dezaketelako eta txar eta onetan banatzen baitute, horrela "jakinean" daudela erakutsiz. Horrek are gehiago indartzen du negatiboa: etsipenagatik, erraza da lankideekin ondo moldatzea eta talde bateko partaide izatea; Bad Code kritikatzeak zure egoera eta profesionaltasuna areagotzen ditu besteen aurrean: Iritzi negatiboak adierazten dituzten pertsonak sarritan adimentsuago eta konpetenteagotzat hartzen dira.

Ezezkotasuna areagotzea ez da zertan txarra izan. Programazioari buruzko eztabaidak, besteak beste, idatzitako kodearen kalitatean oso zentratuta daude. Kodea zer den guztiz definitzen du egin nahi duen funtzioa (hardwarea, sareak, etab. alde batera utzita), beraz, garrantzitsua da kode horri buruz zure iritzia adierazi ahal izatea. Eztabaida ia guztiak kodea nahikoa ona den ala ez, eta kode txarraren adierazpenak beraiek kodearen kalitatea ezaugarritzen duten konnotazio emozionalaren terminoetan gaitzesten dira:

  • "Modulu honetan logika inkoherentzia asko daude, errendimenduaren optimizazio esanguratsurako hautagai ona da".
  • "Modulu hau nahiko txarra da, birfaktorizatu behar dugu".
  • «Modulu honek ez du zentzurik, berridatzi behar da».
  • "Modulu hau txarto dago, parkeatu egin behar da".
  • "Hau ahari zati bat da, ez modulu bat, ez zen batere idatzi beharrik, zer demontre pentsatzen ari zen bere egilea".

Bide batez, "oharra emozional" hau da garatzaileek kodea "sexy" deitzen diena, eta hori oso gutxitan bidezkoa da - PornHub-en lan egiten ez baduzu behintzat.

Arazoa da pertsonak izaki arraroak, ezinegonak, emozionalak direla, eta edozein emozioren hautemateak eta adierazpenak aldatzen gaituela: hasieran sotilki, baina denborarekin, izugarri.

Negatibotasunaren malda labainkor nahasia

Duela urte batzuk, taldeko buru informala nintzen eta garatzaile bati elkarrizketa egin nion. Asko gustatu zitzaigun: inteligentea zen, galdera onak egiten zituen, teknologikoa zen eta gure kulturarekin ondo moldatzen zen. Bere positibotasunak eta ekintzailea zirudien bereziki harritu nau. Eta kontratatu nuen.

Garai hartan, pare bat urte zeramatzan enpresan lanean eta gure kultura ez zela oso eraginkorra iruditzen zitzaidan. Ni iritsi baino lehen birritan, hirutan eta beste pare bat aldiz saiatu ginen produktua abiarazten, eta horrek gastu handiak ekarri zizkion birlanketetan, eta horietan ez genuen ezer erakutsi gau luzeak, epeak estuak eta funtzionatzen zuten produktuak izan ezik. Eta oraindik gogor lanean nenbilen ere, zuzendaritzak esleitu zigun azken epearen aurrean zalantzan jarri nintzen. Eta kasualitatez zin egin zuen nire lankideekin kodearen alderdi batzuk eztabaidatzean.

Beraz, ez zen harritzekoa —harrituta geratu nintzen arren— aste batzuk geroago, garatzaile berri horrek nik egindako gauza negatibo berak (zinak barne) esan izana. Konturatu nintzen beste kultura bateko enpresa ezberdin batean portaera ezberdina izango zuela. Nik sortu nuen kulturara egokitu zen. Errudun sentimenduak gainditzen ninduen. Nire esperientzia subjektiboa dela eta, guztiz ezberdina ikusten nuen etorri berri bati ezkortasuna txertatu nion. Benetan horrelakoa ez bazen ere eta itxura bat besterik ez bazuen ere moldatzen zitekeela erakusteko, nire jarrera kakarrarengana behartu nuen. Eta esandako guztiak, txantxetan edo pasatzean ere, badu uste dena bihurtzeko modu txarra.

Kodearekiko haserrea: programatzaileak eta negatiboa

Modu negatiboak

Itzul gaitezen gure lehengo programatzaile hasiberriengana, jakinduria eta esperientzia apur bat lortu dutenak: programazio-industria gehiago ezagutu eta kode txarra nonahi dagoela ulertzen dute, ezin dela saihestu. Kalitatean ardaztutako enpresarik aurreratuenetan ere gertatzen da (eta ohar dezadan: itxuraz, modernitateak ez du kode txarretik babesten).

Gidoi ona. Denborarekin, garatzaileak onartzen hasten dira kode txarra softwarearen errealitatea dela eta haien lana hobetzea dela. Eta kode txarra saihestu ezin bada, orduan ez du zentzurik horri buruz zalaparta egiteak. Zen bidea hartzen dute, aurre egiten dieten arazoak edo zereginak konpontzera bideratuz. Enpresen jabeei softwarearen kalitatea zehaztasunez neurtzen eta komunikatzen ikasten dute, beren urteetako esperientzian oinarritutako kalkuluak idazten dituzte eta, azken finean, negozioarentzat duten balio ikaragarri eta etengabeagatik sari eskuzabalak jasotzen dituzte. Hain ondo egiten dute beren lana, non 10 milioi dolar ordaintzen dituzte hobarietan eta erretiroa hartzen dute bizitza osorako nahi dutena egiteko (mesedez, ez ezazu gauzatzat hartu).

Kodearekiko haserrea: programatzaileak eta negatiboa

Beste eszenatoki bat iluntasunaren bidea da. Kode txarra saihestezin gisa onartu beharrean, garatzaileek programazioaren munduan dagoen txarto deitzeko ardura hartzen dute, hori gainditzeko. Dauden kode txarra hobetzeari uko egiten diote arrazoi on askorengatik: “jendeak gehiago jakin beharko luke eta ez hain ergela izan”; "desatsegina da"; “hau txarra da negozioarentzat”; “horrek frogatzen du zein inteligente naizen”; «Ez badizut esaten zein den kode zitala, konpainia osoa ozeanora eroriko da», eta abar.

Segur aski, nahi dituzten aldaketak inplementatu ezinik negozioak, zoritxarrez, garatzen jarraitu behar duelako eta ezin duelako denborarik eman kodearen kalitateaz kezkatzen, pertsona hauek kexatzaileen ospea lortzen dute. Euren gaitasun handiagatik mantentzen dira, baina enpresaren ertzetara eramaten dira, non jende asko gogaitzen ez duten, baina hala ere sistema kritikoen funtzionamendua onartzen dute. Garapen-aukera berrietara sartu gabe, gaitasunak galtzen dituzte eta industria-eskaerei erantzuteari uzten diote. Haien ezezkotasuna mingots bilakatzen da, eta, ondorioz, euren egoa elikatzen dute hogei urteko ikasleekin eztabaidatuz euren teknologia zahar gogokoenak egin duen bidaiaz eta zergatik egiten duen oraindik horren beroa. Erretiroa hartu eta zahartzaroa bizitzen amaitzen dute txoriei zin eginez.

Errealitatea ziurrenik bi mutur horien artean kokatzen da.

Zenbait konpainiak arrakasta handia izan dute kultura oso negatiboak, insularrak eta borondate sendoak sortzen (Microsoftek bere aurretik hamarkada galdua) - askotan merkatura ezin hobeto egokitzen diren eta ahalik eta azkarren hazteko beharra duten produktuak dituzten enpresak dira; edo aginte eta kontrol hierarkia duten enpresak (Apple Jobs-en urte onenetan), non bakoitzak esandakoa egiten duen. Hala ere, enpresa-ikerketek (eta zentzu komunak) iradokitzen dute enpresetan berritzailetasuna eta produktibitate handia dakarten asmamen handienak estres maila baxua behar duela etengabeko pentsamendu sortzaile eta metodikoa laguntzeko. Eta oso zaila da sormenezko eta eztabaidan oinarritutako lana egitea, zure lankideek zure kodearen lerro bakoitzari buruz esan beharko dutenaz etengabe kezkatzen bazara.

Negatibotasuna pop kultura ingeniaritza da

Gaur egun, inoiz baino arreta handiagoa ematen zaio ingeniarien jarrerari. Ingeniaritza erakundeetan, araua “Adarrarik ez". Gero eta anekdota eta istorio gehiago agertzen dira Twitterren lanbide hau utzi zuten pertsonei buruz ezin zutelako (ez lukete) kanpotarrekiko etsaitasuna eta borondate txarra jasaten jarraitu. Baita Linus Torvalds ere duela gutxi barkamena eskatu zuen urteetako etsaitasuna eta kritika beste Linux garatzaileekiko - honek ikuspegi honen eraginkortasunari buruzko eztabaida ekarri du.

Batzuek oraindik Linusek oso kritiko izateko eskubidea defendatzen dute - "negatibotasun toxikoaren" abantailei eta desabantailei buruz asko jakin beharko luketenek. Bai, gizalegeak berebiziko garrantzia du (baina oinarrizkoa ere), baina gutako askok iritzi negatiboen adierazpena "toxikotasun" bilakatzeko aukera ematen duten arrazoiak laburbiltzen baditugu, arrazoi hauek paternalistak edo nerabeak dirudite: "merezi dute tontoak direlako. ", "ziur egon behar du ez dutela berriro egingo", "hori egin ez balute, ez lieke oihu egin beharko" eta abar. Lider baten erreakzio emozionalek programazio-komunitate batean duten eraginaren adibide bat Ruby komunitatearen MINASWAN akronimoa da - "Matz polita da, beraz, politak gara".

Konturatu naiz “ergel bat hiltzea” planteamenduaren defendatzaile sutsu askori asko axola zaiela kodearen kalitatea eta zuzentasuna, beren lanarekin identifikatzen direla. Zoritxarrez, askotan gogortasuna eta zurruntasuna nahasten dituzte. Jarrera honen desabantaila gizaki soiletik dator, baina besteen gainetik sentitzeko nahi ez-produktibotik. Desio horretan murgiltzen diren pertsonak iluntasunaren bidean trabatu egiten dira.

Kodearekiko haserrea: programatzaileak eta negatiboa

Programazioaren mundua azkar hazten ari da eta bere edukiontziaren mugen aurka ari da -programazioaren mundua (edo programazioaren mundua ez-programazioaren mundurako edukiontzi bat da? Galdera ona).

Gure industria gero eta erritmo handiagoan hedatzen den heinean eta programazioa irisgarriagoa denez, "teknologien" eta "normalen" arteko distantzia azkar ixten ari da. Programazioaren mundua gero eta gehiago jasango du teknologiaren boomaren hasierako nerd kultura isolatuan hazitako pertsonen arteko interakzioetara, eta haiek dira programazioaren mundu berria moldatuko dutenak. Eta gizarte- edo belaunaldi-argudioak alde batera utzita, kapitalismoaren izenean eraginkortasuna agertuko da enpresa-kulturan eta kontratazio-praktiketan: enpresa onenek, besterik gabe, ez dute kontratatuko besteekin modu neutralean interakzioan ezin duen inor, are gutxiago harreman onak izan.

Ezezkotasunari buruz ikasi dudana

Negatibotasun gehiegi zure adimena eta pertsonekiko interakzioak kontrolatzen uzten baduzu, toxikotasun bihurtuz, orduan arriskutsua da produktu-taldeentzat eta garestia da negozioentzat. Ikusi (eta entzun) hainbat proiektu erori eta guztiz berreraiki ziren gastu handiarekin konfiantzazko garatzaile batek kode-oinarri osoaren kalitatea irudikatzeko aukeratutako fitxategi bakarra teknologiarekin, beste garatzaile batekin edo kode-oinarri osoaren kalitatea irudikatzeko aukera izan zuelako.

Negatibotasunak ere harremanak desmoralizatu eta suntsitzen ditu. Inoiz ez dut ahaztuko nola lankide batek errieta egin zidan CSS fitxategi okerrean jartzeagatik, atsekabetu ninduen eta ez zidan nire pentsamenduak biltzen utzi hainbat egunez. Eta etorkizunean, nekez utziko diot halako pertsona bati nire talde baten ondoan egotea (baina nork daki, jendea aldatzen da).

Azkenik, negatiboa literalki zure osasuna kaltetzen du.

Kodearekiko haserrea: programatzaileak eta negatiboa
Nire ustez, hauxe izan beharko luke irribarreei buruzko master class batek.

Jakina, hau ez da zoriontasuna argitzearen aldeko argudio bat, tira eskaera guztietan hamar mila milioi emotikono txertatzearen edo irribarreei buruzko klase magistral batera joatearen aldekoa (ez, tira, hori nahi baduzu, ez dago arazorik). Negatibotasuna programazioaren (eta giza bizitzaren) atal oso garrantzitsua da, kalitatea adierazten duena, sentimenduak adierazteko eta beste gizakiekin errukitzeko aukera ematen duena. Negatibotasunak ikuspegia eta zuhurtasuna adierazten du, arazoaren sakontasuna. Askotan nabaritzen dut garatzaile bat maila berri batera iritsi dela lehen lotsatia eta ziur ez zenarekiko sinesgaitza adierazten hasten denean. Jendeak arrazoizkotasuna eta konfiantza erakusten du bere iritziekin. Ezin duzu negatiboaren adierazpena baztertu, hori orwelliarra litzateke.

Hala ere, ezezkotasuna beste giza ezaugarri garrantzitsu batzuekin dosifikatu eta orekatu behar da: enpatia, pazientzia, ulermena eta umorea. Beti esan diezaioke pertsona bati izorratu egin duela oihurik edo biraorik egin gabe. Ez gutxietsi ikuspegi hau: norbaitek emoziorik gabe esaten badizu larri nahastu duzula, benetan beldurgarria da.

Garai hartan, duela urte batzuk, zuzendari nagusiak hitz egin zidan. Proiektuaren egungo egoeraz eztabaidatu genuen, gero nola sentitzen nintzen galdetu zidan. Erantzun nion dena ondo zegoela, proiektua mugitzen ari zela, poliki-poliki lanean ari ginela, agian zerbait galdu nuen eta birplanteatu beharra zegoen. Bulegoko lankideekin pentsamendu ezkoragoak konpartitzen entzun ninduela esan zuen, eta beste batzuk ere konturatu zirela. Zalantzarik banu, zuzendaritzari oso-osorik adierazi niezaiokeela azaldu zuen, baina ez "behera kendu". Ingeniari nagusia naizen aldetik, kontuan izan behar dut nire hitzek besteei nola eragiten dieten, eragin handia baitut horretaz konturatu ez arren. Eta hori guztia oso adeitsu kontatu zidan, eta azkenean esan zidan benetan horrela sentitu banaiz gero, ziurrenik, pentsatu beharko nuela zer nahi dudan niretzat eta nire karrerarako. Izugarri leuna izan zen, eserlekutik atera edo ateratzeko elkarrizketa. Eskerrak eman nizkion informazioagatik, sei hilabetetan zehar nire jarrera aldatuak besteei nola eragiten dien ohartu gabe.

Kudeaketa aipagarri eta eraginkorren eta ikuspegi bigun baten boterearen adibidea izan zen. Konturatu nintzen enpresarengan eta bere helburuak lortzeko gaitasunean konfiantza osoa nuela iruditzen zitzaidala, baina errealitatean besteekin hitz egin eta komunikatzen nintzen guztiz beste modu batean. Konturatu nintzen, gainera, lantzen ari nintzen proiektuarekin eszeptiko sentitu banaiz ere, ez niola nire sentimenduak erakutsi behar nire lankideei eta ezkortasuna kutsadura bezala zabaldu behar, gure arrakasta izateko aukerak murriztuz. Horren ordez, modu oldarkorrean helarazi nezake benetako egoera nire zuzendaritzari. Eta ez nindutela entzuten sentituko banintz, enpresa utziz nire desadostasuna adieraz nezakeen.

Aukera berri bat jaso nuen langileen balorazio arduradun kargua hartu nuenean. Ingeniari-buru ohia naizen aldetik, kontu handiz ibiltzen naiz (etengabe hobetzen ari den) ondare-kodeari buruzko nire iritziak adierazteko. Aldaketa bat onartzeko, egungo egoera irudikatu behar duzu, baina ez zara inora iritsiko intziri, eraso edo antzekoetan murgiltzen bazara. Azken finean, zeregin bat burutzeko nago eta ez dut kodeaz kexatu behar ulertu, ebaluatu edo konpontzeko.

Izan ere, zenbat eta gehiago kontrolatzen dut kodearen aurrean nire erreakzio emozionala, orduan eta gehiago ulertzen dut zer izan daitekeen eta orduan eta nahasmen gutxiago sentitzen dut. Neurriz adierazi nuenean (“hemen gehiago hobetzeko aukera egon behar da”), nire burua eta besteak zoriontsu egiten ari nintzen eta ez nuen egoera serioegi hartzen. Konturatu nintzen besteengan negatiboa estimulatu eta murriztu nezakeela guztiz (gogaikarria?) arrazoizkoa izanik (“Arrazoi duzu, kode hau nahiko txarra da, baina hobetuko dugu”). Pozten naiz Zen bidetik noraino irits naitekeen ikusteak.

Funtsean, ikasgai garrantzitsu bat ikasten eta berriro ikasten ari naiz etengabe: bizitza laburregia da etengabe haserre eta minez egoteko.

Kodearekiko haserrea: programatzaileak eta negatiboa

Iturria: www.habr.com

Gehitu iruzkin berria