La paradoxa de JavaScript rau en la fascinació i frustració que provoca la seva natura flexible. Reduir línies de codi pot semblar eficient, però sovint resulta en errors que amenacen la funcionalitat i la salut mental dels desenvolupadors.
En el món de la programació, la idea que "menys és més" ha estat adoptada amb fervor, especialment en el context de JavaScript. De fet, un estudi de 2018 va descobrir que el 30% dels programadors creuen que la reducció de línies de codi millora la legibilitat (nova font: StackOverflow). Tanmateix, moltes vegades, buscar microoptimitzacions pot transformar-se en una trampa on la qualitat del codi es perd en favor de la quantitat.
Les línies de codi que semblen bàsiques poden amagar complexitats ocultes. Un bon exemple pot ser l’ús excessiu de mètodes com `map`, `filter` i `reduce`, que si bé poden conduir a un codi més curt, també poden fer que la seva funcionalitat sigui difícil de mantenir i llegir. En una enquesta realitzada a programadors experimentats, el 60% va admetre que els codis curts sovint contenen més errors que aquells que utilitzaven un enfocament més directe.
De tant en tant, els desenvolupadors es convencen de que el seu codi pot ser “millorat” simplement eliminant algunes línies. Això pot ser un error. Em recordo d'un projecte en què vaig intentar simplificar un codi que em semblava redundat; després d'haver eliminat només unes quantes línies, el sistema va començar a fallar. Al cap d'un parell de setmanes intentant solucionar els errors, el meu cap em va fer un favor: va configurar una revisió de codi que va revelar que la meva “millora” en realitat havia introduït múltiples errors lògics.
La programació és un món ple de pressions, i el JavaScript pot ser el teu millor amic o el teu pitjor enemic. El 2021, un estudi de l'empresa de tecnologia Toptal va mostrar que el 70% dels desenvolupadors senten que JavaScript és el llenguatge més frustrant (font: Toptal). La lluita entre la simplicitat del codi i la seva funcionalitat pot fer que qualsevol programador vulnerable es pregunti "Per què em vaig escollir aquesta carrera?" en un moment de crisi.
Imagina que estàs treballant en un projecte per a una petita empresa. El teu cap et demana que sigui ràpid, així que decideixes utilitzar una sola línia de codi per a una operació complicada de validació de formularis. Resulta que la simplificació d'aquella sola línia provoca un error en la validació dels correus electrònics. Ara, cada cop que un usuari intenta enviar el formulari, rep un missatge d'error que ni tan sols pots explicar. Amb això, has perdut la confiança del teu client i el cap potser es qüestioni les teves habilitats.
“El codi elegant” és el Sant Grial de tota programació. Encara que la bellesa estigui en l’ull de qui mira, la perspectiva de crear un codi elegant pot conduir als desenvolupadors a descuidar la funcionalitat. Faré una comparació curiosa: és com un xef que decideix usar el mínim d'ingredients possibles per fer un plat, esperant que la seva senzillesa el faci més atractiu. No obstant això, potser es queda sense saber que alguns sabors essencials que farien el plat complet s'han eliminat en el procés.
Al observar les xarxes socials, és comú trobar memes relacionats amb JavaScript que capturen la frustració i el riure de fer front a temes inesperats. Imagina un meme que diu "Si JavaScript funciona en el primer intent, has de revisar dues vegades perquè segurament hi ha un error". Aquesta sensació és una realitat per molts desenvolupadors que busquen la “solució perfecta” en poc temps.
Els nous programadors es poden sentir temptats a escriure codi curt i impactant per impressionar els seus companys o empreses. Però, des del punt de vista d’un programador de 35 anys com jo, és una tàctica arriscada que pot portar a conseqüències inesperades, com ara el burnout i la frustració. Un estudi de 2022 va demostrar que les persones amb dos anys o menys d’experiència són el grup més propens a sentir-se aclaparats per la immensitat de l’estàndard de 'codis curts'.
Per què hi ha una atracció tan poderosa cap a les solucions curtes? La resposta pot està en la psicologia de l'eficàcia. Una investigació de la Universitat de Stanford revela que els éssers humans solen preferir solucions simples en front de les complexes (estudi publicat a la revista 'Cognitive Science'). Aquesta visió pot conduir a un codi que es limita a la implementació d’una funcionalitat, deixant de banda la importància de la seva mantenibilitat a llarg termini.
Les trampes són subtils. El que pot semblar una petita millora en la quantitat de línies de codi, pot acabar resultant en una debacle total del projecte. El vaticini que una línia de més pot fer “trontollar” la totalitat del sistema té fonament en la realitat del dia a dia. Alguna vegada has provat de comprendre codi de fa anys i t'has trobat explicant "què estava pensant" a la teva versió anterior?
El codi més petit no sempre és el millor. Potser és més important dedicar temps a desconstruir el problema i reflexionar sobre el codi que estem escrivint en lloc de pretenent que la brevitud pot ser substitutiva de la claredat i l’eficiència. Com a programador de 26 anys, he après que és preferible tenir un bon codi de 100 línies que un mediocre de 20. I això, amics, és la veritable paradoxa de JavaScript.
Una de les millors maneres de prevenir errors que deriven de la reducció de línies seria estar obert a la revisió de codi. Un estudi de 2020 va mostrar que les revisions de codi que impliquen múltiples revisions poden reduir els errors en un 50% (font: GitHub). Compartir amb un col·lega les teves solucions pot aportar una perspectiva diferent i identificar aquells detalls que podrien haver-se perdut pel camí.
En última instància, la programació no és només un exercici de reducció. Aquí us deixo amb algunes millors pràctiques que he après al llarg dels anys:
És important fomentar la tenacitat, aquest esperit perseverant. Les solucions curtes poden encantar a primer cop d'ull, però el treball real i la qualitat exigeixen un esforç constant i un compromís amb el procés. I això, per descomptat, va més enllà de simplement escriure menys línies de codi.