La siguiente es la traducción del artículo “Programming Sucks” escrito por Peter Welch. En dicho artículo plasma en tono bastante sarcástico las cosas por las que pasamos muchos de los que se dedican profesionalmente a esto de picar código, y creo que es bueno compartirlas con todos ustedes. Sin más que agregar los dejo con el artículo.

code-horror

Cada amigo que tengo con un trabajo que involucre levantar algo más pesado que una laptop más de dos veces a la semana eventualmente encuentra la forma de incluir algo como esto en la conversación: “Hermano, tú no trabajas duro. Yo acabo de trabajar 4700 horas a la semana cavando un túnel debajo de Mordor con un desarmador”.

Tienen un punto. Mordor apesta, y ciertamente es más desgastante físicamente cavar un tunel que presionar un teclado a menos que seas una hormiga. Pero,  por el bien del argumento, ¿podemos estar de acuerdo que el estrés y la locura son cosas malas? Genial. Bienvenido a la programación.

Todos los equipos de programación están conformados por y para gente loca

Imagina que te unes a un equipo de ingeniería. Estás emocionado y lleno de ideas, probablemente recién graduado y en un mundo de limpios, hermosos diseños, imponentes en su estética unidad de propósito, economía y fuerza. Comienzas conociendo a Mary, la lider del proyecto de un puente en un área metropolitana importante. Mary te presenta a Fred, después de que pasaste por los quince controles de seguridad instalados por Dave porque a Dave una vez le robaron su suéter de su escritorio y Nunca Más. Fred solo trabaja con madera, así que preguntas por qué él está involucrado ya que este puente se supone debe permitir durante la hora pico lleno de coches llenos de humanos mortales cruzar a 200 pies de altura sobre los rápidos. No te preocupes, dice Mary, Fred se va a encargar de los andadores.  ¿Qué andadores? Bueno Fred hizo un buen caso por los andadores y cómo van a agregar atractivo al puente. Por supuesto, tendrán que construirse sin barandillas, porque hay una estricta regla contra las barandillas aplicada por Phil, quien no es ingeniero. Nadie está seguro de que hace Phil, pero definitivamente está lleno de sinergia y tiene que ver con la gerencia, con quien ninguno de los ingenieros quiere lidiar así que solo dejan que Phil haga lo que quiera. Sara, mientras tanto, ha encontrado varias novedosas técnicas de pavimentación, y las ha implementado todas en el diseño del puente, así que tienes que construir alrededor de cada una mientras el puente progresa, ya que cada una significa diferentes tipos de soporte y asuntos de seguridad. Tom y Harry han trabajado juntos por años, pero tienen una pelea en curso sobre usar el sistema métrico o el imperial, y se ha convertido en un caso de “el que llegue primero a esa parte del diseño.” Esto ha sido un dolor de cabeza para las personas que en realidad atornillan las cosas, se han dado por vencidos y simplemente forzan, martillan o soldan durante el día con las piezas que tienen a mano. También, el puente fue diseñado para ser un puente colgante, pero nadie realmente sabe como construir un puente colgante, así que avanzaron hasta la mitad y entonces solo agregaron columnas extra de soporte para que se mantuviera en pie, pero dejaron los cables de suspención porque todavía están sujetando de alguna forma partes del puente. Nadie sabe que partes, pero todos están seguros de que son partes importantes. Después de que las presentaciones son hechas, eres invitado a brindar nuevas ideas, pero no tienes ninguna porque tu eres un ingeniero en propulsión y no sabes nada sobre puentes.

¿Conducirías a través de ese puente? No. Si de alguna forma se construyera, todos los involucrados serían ejecutados. Sin embargo, una versión de esta dinámica escribió cada programa que has utilizado, software bancario, sitios web, y un programa de alguna forma omnipresente que se suponía iba a proteger la información en Internet, pero no lo hizo.

Todo el código es malo

Cada programador ocasionalmente, cuando no hay nadie en casa, apaga la luz, se sirve un vaso de whisky, pone algo de electrónica Alemana, y abre un archivo en su computadora. Es un diferente archivo para cada programador. Aveces ellos lo escribieron, a veces lo encontraron y sabían que tenían que guardarlo. Leen cada una de sus líneas, y lloran con su belleza, entonces las lágrimas se vuelven amargas conforme recuerdan el resto de los archivos y el inevitable colapso de todo lo que es bueno y cierto en el mundo.

Este archivo es Buen Código. Tiene nombres sensibles y consistentes para funciones y variables. Es conciso. No hace nada obviamente estúpido. Nunca ha tenido que vivir en estado salvaje, o que responder al equipo de ventas. Hace exactamente una cosa, mundana, especifica, y lo hace bien. Fue escrito por una sola persona, y nunca tocado por otros. Se lee como poesía escrita por alguien mayor de treinta.

Cada programador comienza escribiendo pequeños copos de nieve perfectos como este. Entonces les dicen el Viernes que necesitan seiscientos copos de nieve escritos para el Martes, así que hacen un poco de trampa aquí y allá, y quizás copian algunos copos y tratan de unirlos o tienen que pedir a un compañero que trabaje en uno que se derrite y entonces todos los copos de nieve del programador son puestos juntos en una forma inescrutable y alguien pone un Picasso sobre ellos porque nadie quiere ver la orina de gato goteando de todos tus copos de nieve rotos derritiéndose a la luz del día. A la siguiente semana, todos palean más nieve sobre él para evitar que el Picasso se caiga.

Existe la teoría de que puedes evitar esto siguiendo estándares, excepto de que hay más “estándares” que cosas que las computadoras puedan hacer, y estos estándares han sido mejorados y maleados por las preferencias personales de aquellos que los programaron, así que ninguna colección de código ha llegado al mundo real sin hacer unas cuantas docenas de cosas idénticas en unas cuantas docenas de formas remotamente cercanas siquiera. Las primeras semanas de cualquier trabajo son solo averiguar como funciona un programa incluso si eres familiar con cada lenguaje, framework, y estándar que está involucrado, porque los estándares son unicornios.

Siempre habrá oscuridad

Pasé algunos años creciendo con un armario en mi habitación. El armario tenía un diseño extraño. Parecía normal al principio, entonces entrabas para hacer cosas de armario, y descubrías que el muro a tu derecha daba a un nicho, haciéndolo un útil pequeño estante. Entonces mirabas, y el muro al fondo del nicho daba de nuevo, a un espacio de acceso a la nada absoluta, donde nada de luz podía llegar y al que inmediatamente identificabas como la guarida de día para cada voraz monstruo que mantuviste a raya con linternas y animales de peluche cada noche.

Esto es lo que es aprender a programar. Aprendes tus herramientas útiles, entonces miras alrededor, y hay muchas herramientas nuevas cercanas y esas herramientas te muestran el horror sin fondo que siempre está justo junto a tu cama.

Por ejemplo, digamos que eres un desarrollador web promedio. Estás familiarizado con una docena de lenguajes de programación, toneladas de útiles librerías, estándares, y protocolos que tienes. Aún tienes que aprender más, a una tasa de uno a la semana, y recordar revisar los cientos de cosas que sabes que tienes que ver si se han actualizado o roto y asegurarte de que todavía funcionan y que nadie haya arreglado el error de que tu te aprovechaste para hacer algo que pensaste que era realmente astuto un fin de semana que estabas borracho. Estás al día, así que es genial, entonces todo se rompe.

“¿Qué carajo?” dices, y comienzas a buscar el problema. Descubres que un día, algún idiota decidió que ya que otro idiota decidió que 1/0 debe ser igual a infinito, ellos podrían usar eso como abreviatura para “Infinito” cuando simplificaron su código. Entonces alguien no idiota decidió correctamente que esto era estúpido, lo que es lo que el idiota original debió haber decidido, pero como no lo hizo, el no idiota decidió ser un cabrón y hacer esto un error en su nuevo compilador. Entonces él decidió que no le iba a decir a nadie que esto era un error, porque es un cabrón, y ahora todos tus copos de nieve son orina y ni siquiera puedes encontrar al gato.

Eres un experto en todas esas tecnologías, y eso es bueno, porque esa experiencia te dejó pasar solo seis horas tratando de averiguar cuál fue el error, en lugar de perder tu trabajo. Ahora tienes un pequeño dato extra que poner en el millón de datos que tienes que memorizar porque muchos de los programas de los que dependes fueron escritos por cabrones e idiotas.

Y eso es solo en el campo que elegiste, lo cual representa una pequeñísima fracción de todas las cosas que hay que conocer en ciencias de la computación puede ser que nunca hayas aprendido algo realmente. Ni una sola persona sabe como funciona en realidad todo en tu MacBook de hace cinco años. ¿Por qué te decimos que la apagues y la vuelvas a encender? Porque no tenemos la mínima idea de que está mal con ella, y es realmente fácil inducir un coma en las computadoras y dejar que su equipo interno de doctores automáticos intenten averiguarlo por nosotros. La única razón por la que las computadoras de los programadores funcionan mejor que las de los no programadores es que los programadores saben que las computadoras son pequeños niños esquizofrénicos con enfermedades autoinmunes y no los golpeamos cuando están enfermos.

Se hace mucho trabajo en el Internet y el Internet es su propio infierno especial

¿Recuerdas esas cosas sobre gente loca y mal código? El internet es eso, excepto que es literalmente billones de veces peor. Sitios web que son carritos de compras glorificados con quizás tres páginas dinámicas son mantenidos por equipos de personas durante todo el día, la verdad es que todo se está rompiendo todo el tiempo, en todos lados, por todos. Justo ahora alguien que trabaja para Facebook tiene decenas de miles de mensajes de error e intenta frenéticamente encontrar el problema antes de que la farsa completa colapse. Hay un equipo en las oficinas de Google que no ha dormido en tres días. En algún lugar hay una programadora de bases de datos rodeada por botellas vacías de Mountain Dew cuyo esposo cree que está muerta. Y si esta gente se detiene, el mundo arderá. La mayoría de la gente no sabe que hace un administrador de sistemas, pero créeme, si todos ellos tomaran un descanso para comer al mismo tiempo no habrían llegado a la cafetería antes de que te quedaras sin balas protegiendo tus productos enlatados de bandas voraces de mutantes.

No puedes reiniciar la internet. Trillones de dolares dependen de una telaraña desvencijada de acuerdos no oficiales y código “suficientemente bueno por ahora” con comentarios como: “PENDIENTE: ARREGLAR ESTO. ES UN HACK REALMENTE PELIGROSO PERO NO SE QUÉ ESTÁ MAL” que fue escrito hace diez años. Ni siquiera he mencionado las legiones de personas atacando varias partes del internet por espionaje y ganancias, o porque están aburridos. ¿Has oído hablar de 4chan? 4chan podría destruir tu vida y negocios porque decidieron que no les gustas por una tarde, y nosotros no nos preocupamos por 4chan porque otra bomba no hace mucha diferiencia en un invierno nuclear.

En el internet, está bien decir, “Sabes, esto trabajará muchas de las veces si utilizas la tecnología adecuada”, y ¡BAM! es parte del internet ahora. Cualquiera con un par de cientos de dolares y una computadora puede enganchar un pedacito del internet y poner cualquier horrible pieza de código que quiera y entonces pegar su pedacito a un montón de grandes pedazos y todo se pone un poco peor. Incluso los buenos programadores no se preocupan por aprender las arcanas especificaciones definidas por organizaciones de personas tratando de implementar algunos unicornios, así que todos gastan la mitad de su tiempo haciendo frente al hecho de que nada coincide con nada o tiene sentido alguno y podría romperse en cualquier momento y nosotros solo tratamos de cubrirlo y esperamos que nadie lo note.

Aquí están las reglas secretas del internet: cinco minutos después de que abres un explorador por primera vez, un niño en Rusia tiene tu numero se seguridad social. ¿Te registraste en algo? Una computadora de la NSA ahora registra tu ubicación física por el resto de tu vida. ¿Enviaste un email? Tu dirección de email acaba de aparecer en un anuncio en Nigeria.

Estas cosas no son ciertas porque no nos importen y no tratemos de detenerlas, son ciertas porque todo está roto porque no hay buen código y todo el mundo solo intenta que siga funcionando. Ese es tu trabajo si trabajas con el internet: esperando que lo último que escribiste sea lo suficientemente bueno para sobrevivir un par de horas para que puedas comer tu cena y tomar una siesta.

No comenzamos locos, nos están volviendo locos

Divertido, ¿verdad? ¿No? Que tal con esto:

“Is that called arrayReverse?”

“s/camel/_/”

“Genial gracias.”

¿No fue ese chico de ayuda? ¿Con el camello? ¿No parece una respuesta apropiada? ¿No? Bien. Aún puedes encontrar a Jesús. No has gastado mucho tiempo de tu vida leyendo código como para comenzar a hablar en él. El cerebro humano no es particularmente bueno con la lógica básica y ahora hay una carrera completa en no hacer otra cosa que lógica realmente, realmente compleja. Vastas cadenas de condiciones abstractas y requerimientos tienen que ser elegidos para descubrir cosas como comas faltantes. Hacer esto todo el día te deja en un estado de afasia leve como si vieras a las caras de la gente mientras están hablando y tú no sabes que ya terminaron porque no hay un punto y coma. Te sumerges en un mundo de total sin sentido donde todo lo que importa es una pequeña serie de números en un laberinto gigante de símbolos y diferentes series de números o una foto de un gatito que aparece en el otro extremo.

El impacto destructivo en el cerebro es demostrado por los lenguajes de programación que la gente escribe. Esto es un programa:

Ese programa hace exactamente lo mismo que este.

Y que este programa:

Y que este.

Y una vez alguien escribió un lenguaje de programación que le permitió a alguien escribir esto:

De acuerdo con el autor, ese programa son “dos lineas de código que analizan dos lineas de comentarios incrustados en el código para leer los números Mayas representando los caracteres ASCII individuales que conforman el titulo de la revista, renderizado en arte ASCII rotado 90 grados”

Ese programa ganó un concurso, porque claro que lo hizo. ¿Quieres vivir en un mundo como este? No. Este es un mundo donde te puedes fumar una cajetilla al día y nadie siquiera te cuestionará el porqué. “Por supuesto que se fuma una cajetilla al día, ¿quién no lo haría?” Eventualmente cada programador despierta y antes de que estén conscientes por completo ven su mundo entero y cada relación en él como trozos de código, e intercambian historias sobre ello como si la somnolencia provocada por viajes de ácido fuera algo normal que le pasa a la gente. Este es un mundo donde la gente se abstiene de sexo para escribir un lenguaje de programación para orangutanes. Todos los programadores están forzando sus cerebros a hacer cosas que los cerebros nunca debieron hacer en una situación que nunca podrá ser mejor, de diez a quince horas al día, de cinco a siete días a la semana, y cada uno de ellos está poco a poco volviéndose loco.

</queja>

Así que no, no necesito ser capaz de levantar objetos de hasta cincuenta libras. Cambié eso por la oportunidad de recortar el vello púbico de Satán mientras el cena en mi craneo abierto para que un poco del internet continue trabajando un par de días más.

Fuente: Pinguino Libre

Si te ha gustado el post, y/o te ha servido de ayuda, comenta, comparte y/o dale like a mis páginas de facebook y/o twitter.

Gracias de antemano.