Enuig amb el codi: programadors i negativitat

Enuig amb el codi: programadors i negativitat

Estic mirant un tros de codi. Aquest pot ser el pitjor codi que he vist mai. Per actualitzar només un registre de la base de dades, recupera tots els registres de la col·lecció i després envia una sol·licitud d'actualització a tots els registres de la base de dades, fins i tot aquells que no s'han d'actualitzar. Hi ha una funció de mapa que simplement retorna el valor que se li passa. Hi ha proves condicionals per a variables amb aparentment el mateix valor, només anomenades en diferents estils (firstName и first_name). Per a cada ACTUALITZACIÓ, el codi envia un missatge a una cua diferent, que és gestionada per una funció sense servidor diferent, però que fa tot el treball per a una col·lecció diferent a la mateixa base de dades. He esmentat que aquesta funció sense servidor prové d'una "arquitectura orientada a serveis" basada en núvol que conté més de 100 funcions a l'entorn?

Com va ser possible fer això? Em tapo la cara i ploro visiblement pel meu riure. Els meus companys pregunten què va passar, i ho torno a explicar amb colors Els pitjors èxits de BulkDataImporter.js 2018. Tothom m'assenteix amb simpatia i està d'acord: com ens podrien fer això?

Negativitat: una eina emocional en la cultura del programador

La negativitat té un paper important en la programació. Està integrat a la nostra cultura i s'utilitza per compartir el que hem après ("tu no t'ho creuràs, com era aquell codi!”), per expressar simpatia a través de la frustració (“Déu, PER QUÈ fer això?”), per mostrar-se (“Jo mai tan no ho va fer”), per culpar a algú altre (“vam fallar pel seu codi, que és impossible de mantenir”), o, com és costum a les organitzacions més “tòxiques”, controlar els altres mitjançant un sensació de vergonya ("En què estaves pensant?"? Correcte").

Enuig amb el codi: programadors i negativitat

La negativitat és molt important per als programadors perquè és una manera molt eficaç de transmetre valor. Una vegada vaig assistir a un camp de programació, i la pràctica estàndard d'inculcar una cultura de la indústria als estudiants era proporcionar generosament memes, històries i vídeos, els més populars dels quals explotaven. frustració dels programadors davant la incomprensió de la gent. És bo poder utilitzar eines emocionals per identificar el bo, el dolent, el lleig, no ho facis, mai. Cal preparar els nouvinguts per al fet que probablement seran incompresos per companys que estan lluny de les TIC. Que els seus amics començaran a vendre'ls idees d'aplicacions de milions de dòlars. Que hauran de passejar per infinits laberints de codi obsolet amb una colla de minotaures a la volta de la cantonada.

Quan aprenem a programar per primera vegada, la nostra comprensió de la profunditat de l'"experiència de programació" es basa en observar les reaccions emocionals d'altres persones. Això es pot veure clarament a les publicacions a sabeu ProgrammerHumor, on hi passen molts programadors novells. Molts d'humoristes estan, en un grau o un altre, acolorits amb diferents matisos de negativitat: decepció, pessimisme, indignació, condescendència i altres. I si això no us sembla prou, llegiu els comentaris.

Enuig amb el codi: programadors i negativitat

Em vaig adonar que a mesura que els programadors van adquirint experiència, es tornen cada cop més negatius. Els principiants, inconscients de les dificultats que els esperen, comencen amb entusiasme i ganes de creure que la causa d'aquestes dificultats és simplement la manca d'experiència i de coneixements; i finalment s'enfrontaran a la realitat de les coses.

El temps passa, adquireixen experiència i són capaços de distingir el bon codi del dolent. I quan arriba aquest moment, els programadors joves senten la frustració de treballar amb codi òbviament dolent. I si treballen en equip (a distància o presencial), sovint adopten els hàbits emocionals dels companys amb més experiència. Això sovint condueix a un augment de la negativitat, perquè els joves ara poden parlar reflexivament sobre el codi i dividir-lo en dolent i bo, demostrant així que estan "al corrent". Això reforça encara més el negatiu: per decepció, és fàcil portar-se bé amb els companys i formar part d'un grup; criticar Bad Code augmenta el vostre estatus i professionalitat als ulls dels altres: Les persones que expressen opinions negatives sovint són percebudes com més intel·ligents i competents.

Augmentar la negativitat no és necessàriament una cosa dolenta. Les discussions sobre programació, entre altres coses, estan molt centrades en la qualitat del codi escrit. El que és el codi defineix completament la funció que pretén fer (maquinari, xarxes, etc. a part), per la qual cosa és important poder expressar la vostra opinió sobre aquest codi. Gairebé totes les discussions es redueixen a si el codi és prou bo i a condemnar els mateixos manifestos del codi dolent en termes la connotació emocional dels quals caracteritza la qualitat del codi:

  • "Hi ha moltes incoherències lògiques en aquest mòdul, és un bon candidat per a una optimització significativa del rendiment".
  • "Aquest mòdul és bastant dolent, hem de refactoritzar-lo".
  • "Aquest mòdul no té sentit, s'ha de reescriure".
  • "Aquest mòdul és una merda, s'ha de corregir".
  • "Aquest és un tros de RAM, no un mòdul, no calia escriure-ho en absolut, què dimonis estava pensant el seu autor".

Per cert, és aquest "alliberament emocional" el que fa que els desenvolupadors anomenin el codi "sexy", que poques vegades és just, tret que treballeu a PornHub.

El problema és que les persones som criatures estranyes, inquietes, emocionals, i la percepció i expressió de qualsevol emoció ens canvia: al principi de manera subtil, però amb el temps, de manera espectacular.

Un pendent relliscós problemàtic de negativitat

Fa uns anys, vaig ser líder d'un equip informal i vaig entrevistar un desenvolupador. Ens va agradar molt: era intel·ligent, feia bones preguntes, coneixia la tecnologia i encaixava bé amb la nostra cultura. Em va impressionar especialment la seva positivitat i com em semblava emprenedor. I el vaig contractar.

En aquell moment, feia un parell d'anys que treballava a l'empresa i sentia que la nostra cultura no era gaire efectiva. Vam intentar llançar el producte dues, tres vegades i un parell de vegades més abans que jo arribés, la qual cosa va comportar grans despeses de reelaboració, durant les quals no teníem res a mostrar excepte nits llargues, terminis ajustats i productes que funcionaven. I tot i que encara estava treballant molt, em vaig mostrar escèptic sobre l'últim termini que ens va assignar la direcció. I va jurar casualment quan parlava d'alguns aspectes del codi amb els meus companys.

Així que no va ser sorprenent, encara que em va sorprendre, que unes setmanes més tard, el mateix desenvolupador nou digués les mateixes coses negatives que vaig fer jo (incloent juraments). Em vaig adonar que es comportaria de manera diferent en una empresa diferent amb una cultura diferent. S'acaba d'adaptar a la cultura que vaig crear. Em va envair un sentiment de culpa. A causa de la meva experiència subjectiva, vaig inculcar el pessimisme en un nouvingut que vaig percebre com a completament diferent. Fins i tot si realment no era així i només feia una aparença per demostrar que podia encaixar, li vaig forçar la meva actitud de merda. I tot el que es diu, fins i tot de broma o de passada, té la mala manera de convertir-se en allò que es creu.

Enuig amb el codi: programadors i negativitat

Maneres negatives

Tornem als nostres antics programadors novells, que han adquirit una mica de saviesa i experiència: s'han familiaritzat més amb la indústria de la programació i entenen que el codi dolent està a tot arreu, que no es pot evitar. Es dóna fins i tot a les empreses més avançades centrades en la qualitat (i deixeu-me notar: pel que sembla, la modernitat no protegeix contra el codi dolent).

Bon guió. Amb el temps, els desenvolupadors comencen a acceptar que el codi dolent és una realitat del programari i que la seva feina és millorar-lo. I que si el codi dolent no es pot evitar, no té cap sentit fer-ho. Prenen el camí del Zen, centrant-se en la resolució de problemes o tasques que se'ls enfronten. Aprenen a mesurar i comunicar amb precisió la qualitat del programari als propietaris d'empreses, a escriure estimacions ben fonamentades basades en els seus anys d'experiència i, finalment, reben generoses recompenses pel seu increïble i constant valor per al negoci. Fan tan bé la seva feina que se'ls paguen 10 milions de dòlars en bonificacions i es jubilen per fer el que volen per a la resta de les seves vides (si us plau, no ho donin per fet).

Enuig amb el codi: programadors i negativitat

Un altre escenari és el camí de la foscor. En lloc d'acceptar el codi dolent com una inevitable, els desenvolupadors s'encarreguen de cridar tot el dolent del món de la programació perquè puguin superar-lo. Es neguen a millorar el codi dolent existent per moltes bones raons: "la gent hauria de saber més i no ser tan estúpid"; "és desagradable"; “això és dolent per als negocis”; “això demostra com sóc intel·ligent”; "Si no us dic quin codi tan desagradable és aquest, tota l'empresa caurà a l'oceà", i així successivament.

Segurament incapaços d'implementar els canvis que volen perquè el negoci, malauradament, ha de seguir desenvolupant-se i no pot dedicar temps a preocupar-se per la qualitat del codi, aquestes persones guanyen una reputació de denunciants. Es mantenen per la seva alta competència, però s'empenyen als marges de l'empresa, on no molestaran a molta gent, però encara donaran suport al funcionament dels sistemes crítics. Sense accés a noves oportunitats de desenvolupament, perden habilitats i deixen de satisfer les demandes de la indústria. La seva negativitat es converteix en amargor i, com a resultat, alimenten el seu ego discutint amb estudiants de vint anys sobre el viatge que ha fet la seva antiga tecnologia preferida i per què encara fa tanta calor. Acaben jubilant-se i vivint la seva vellesa insultant els ocells.

La realitat probablement es troba entre aquests dos extrems.

Algunes empreses han tingut un gran èxit en la creació de cultures extremadament negatives, insulars i de voluntat forta (com Microsoft abans del seu dècada perduda) - sovint es tracta d'empreses amb productes que s'adapten perfectament al mercat i la necessitat de créixer el més ràpid possible; o empreses amb una jerarquia de comandament i control (Apple en els millors anys de Jobs), on cadascú fa el que li diuen. No obstant això, la investigació empresarial moderna (i el sentit comú) suggereix que el màxim enginy, que condueix a la innovació a les empreses i una alta productivitat en els individus, requereix nivells baixos d'estrès per donar suport al pensament creatiu i metòdic continu. I és extremadament difícil fer un treball creatiu basat en debats si us preocupa constantment el que els vostres companys hauran de dir sobre cada línia del vostre codi.

La negativitat és enginyeria de la cultura pop

Avui dia, es presta més atenció a l'actitud dels enginyers que mai. A les organitzacions d'enginyeria, la regla "Sense banyes". Cada cop apareixen més anècdotes i històries a Twitter sobre persones que van abandonar aquesta professió perquè no podien (no ho farien) seguir aguantant l'hostilitat i la mala voluntat cap als de fora. Fins i tot en Linus Torvalds recentment es va disculpar anys d'hostilitat i crítiques cap a altres desenvolupadors de Linux, això ha portat a debats sobre l'eficàcia d'aquest enfocament.

Alguns encara defensen el dret de Linus a ser molt crític: aquells que haurien de saber molt sobre els avantatges i els inconvenients de la "negativitat tòxica". Sí, el civisme és extremadament important (fins i tot fonamental), però si resumim els motius pels quals molts permetem que l'expressió d'opinions negatives es converteixi en "toxicitat", aquestes raons semblen paternalistes o adolescents: "s'ho mereixen perquè són idiotes". ", "ha d'estar segur que no ho tornaran a fer", "si no ho haguessin fet, no els hauria de cridar", etc. Un exemple de l'impacte que tenen les reaccions emocionals d'un líder en una comunitat de programació és l'acrònim de la comunitat Ruby MINASWAN: "Matz és agradable, així que som agradables".

M'he adonat que molts defensors ardents de l'enfocament de "matar un ximple" sovint es preocupen molt per la qualitat i la correcció del codi, identificant-se amb el seu treball. Malauradament, sovint confonen duresa amb rigidesa. El desavantatge d'aquesta posició prové del simple desig humà, però improductiu, de sentir-se superior als altres. Les persones que es submergeixen en aquest desig es queden atrapades en el camí de la foscor.

Enuig amb el codi: programadors i negativitat

El món de la programació està creixent ràpidament i està empenyent els límits del seu contenidor: el món de la no programació (o el món de la programació és un contenidor per al món de la no programació? Bona pregunta).

A mesura que la nostra indústria s'expandeix a un ritme cada cop més gran i la programació es fa més accessible, la distància entre els "tecnics" i els "normals" s'està tancant ràpidament. El món de la programació està cada cop més exposat a les interaccions interpersonals de persones que van créixer en la cultura nerd aïllada del primer boom tecnològic, i són ells qui donaran forma al nou món de la programació. I independentment de qualsevol argument social o generacional, l'eficiència en nom del capitalisme apareixerà en la cultura de l'empresa i les pràctiques de contractació: les millors empreses simplement no contractaran ningú que no pugui interactuar neutralment amb els altres, i molt menys tenir bones relacions.

El que vaig aprendre sobre la negativitat

Si permeteu que massa negativitat controli la vostra ment i les interaccions amb la gent, convertint-se en toxicitat, aleshores és perillós per als equips de producte i costós per a les empreses. He vist (i he sentit a parlar) d'innombrables projectes que es van ensorrar i es van reconstruir completament amb una gran despesa perquè un desenvolupador de confiança tenia rancor amb la tecnologia, un altre desenvolupador o fins i tot un únic fitxer escollit per representar la qualitat de tota la base de codi .

La negativitat també desmoralitza i destrueix les relacions. Mai oblidaré com un company em va renyar per haver posat CSS al fitxer equivocat, em va molestar i no em va permetre recollir els meus pensaments durant diversos dies. I en el futur, és poc probable que permeti que una persona així estigui a prop d'un dels meus equips (però qui sap, la gent canvia).

Finalment, el negatiu literalment perjudica la teva salut.

Enuig amb el codi: programadors i negativitat
Crec que així hauria de ser una classe magistral sobre somriures.

Per descomptat, aquest no és un argument a favor de transmetre felicitat, inserir deu mil milions d'emoticones a cada sol·licitud d'extracció o anar a una classe magistral sobre somriures (no, bé, si això és el que voleu, no hi ha dubte). La negativitat és una part extremadament important de la programació (i de la vida humana), senyalitzant la qualitat, permetent expressar sentiments i compadir-se amb els altres humans. La negativitat indica comprensió i prudència, la profunditat del problema. Sovint noto que un desenvolupador ha arribat a un nou nivell quan comença a expressar la incredulitat en allò que abans era tímid i insegur. Les persones mostren raonabilitat i confiança amb les seves opinions. No es pot descartar l'expressió de negativitat, això seria orwellià.

Tanmateix, cal dosificar la negativitat i equilibrar-la amb altres qualitats humanes importants: empatia, paciència, comprensió i humor. Sempre pots dir-li a una persona que s'ha enganxat sense cridar ni jurar. No subestimeu aquest enfocament: si algú et diu sense cap emoció que t'has equivocat seriosament, fa por.

Aquella vegada, fa uns quants anys, el CEO em va parlar. Vam parlar de l'estat actual del projecte, després em va preguntar com em sentia. Vaig respondre que tot anava bé, el projecte avançava, treballàvem a poc a poc, potser em faltava alguna cosa i calia replantejar-lo. Va dir que m'havia sentit compartir pensaments més pessimistes amb els companys de l'oficina i que altres també ho havien notat. Va explicar que si tenia dubtes, els podria expressar completament a la direcció, però no "eliminar-los". Com a enginyer principal, he de tenir en compte com afecten les meves paraules als altres perquè tinc molta influència encara que no me n'adoni. I em va dir tot això molt amablement, i finalment va dir que si realment em sentia així, probablement hauria de pensar què vull per a mi i la meva carrera. Va ser una conversa increïblement suau, d'aconseguir-ho o sortir del teu seient. Li vaig agrair la informació sobre com el meu canvi d'actitud durant sis mesos estava afectant els altres desapercebuts per a mi.

Va ser un exemple de gestió notable i eficaç i del poder d'un enfocament suau. Em vaig adonar que només semblava tenir una fe total en l'empresa i en la seva capacitat per assolir els seus objectius, però en realitat vaig parlar i comunicar-me amb els altres d'una manera completament diferent. També em vaig adonar que encara que em sentia escèptic sobre el projecte en què estava treballant, no hauria de mostrar els meus sentiments als meus companys i propagar el pessimisme com un contagi, reduint les nostres possibilitats d'èxit. En canvi, podria transmetre agressivament la situació real a la meva direcció. I si sentia que no m'escoltaven, podia manifestar el meu desacord deixant l'empresa.

Vaig rebre una nova oportunitat quan vaig assumir el càrrec de cap d'avaluació de personal. Com a antic enginyer en cap, tinc molta cura a l'hora d'expressar les meves opinions sobre el nostre codi heretat (en constant millora). Per aprovar un canvi, cal imaginar la situació actual, però no arribaràs enlloc si et revolques en gemecs, atacs o similars. En última instància, estic aquí per completar una tasca i no hauria de queixar-me del codi per entendre-lo, avaluar-lo o arreglar-lo.

De fet, com més controlo la meva reacció emocional davant el codi, més entenc en què es pot convertir i menys confusió em sento. Quan em vaig expressar amb moderació («aquí hi ha d'haver marge de millora»), em feia feliços a mi i als altres i no em prenc la situació massa seriosament. Em vaig adonar que podia estimular i reduir la negativitat dels altres si era perfectament (molesta?) raonable (“tens raó, aquest codi és bastant dolent, però el millorarem”). M'alegro de veure fins on puc arribar pel camí zen.

Essencialment, estic aprenent i reaprenent constantment una lliçó important: la vida és massa curta per estar constantment enfadat i patint.

Enuig amb el codi: programadors i negativitat

Font: www.habr.com

Afegeix comentari