Reconstruyendo el Código del Mundo

November 20, 2014

Si mira dentro de un buen programa, encontrará que las partes que supuestamente nadie verá, también son hermosas – Paul Graham, cofundador de Y Combinator.

La codificación se asemeja a una madriguera de conejo: siempre hay algo nuevo que aprender. Los programas que hemos escrito en los últimos años se desfasan sin remedio: nuevos modelos de despliegue, nuevos entornos de ejecución, nuevas plataformas de desarrollo, nuevas librerías, nuevos paradigmas de interfaz de usuario…

Tenemos el hecho de que la calidad del producto final es inherentemente difícil de medir. Si un experto artesano del software construye algo que es sólido como una roca y escalable por 10 años, puede no ser apreciado tanto como el código enrevesado que algún zumbado deja caer como una bomba de relojería en la mitad de tiempo, pero que acaba necesitando una reescritura completa. El contexto juega un papel enorme en el mérito relativo de diferentes desarrolladores.

Sin embargo, contamos con algunos aspectos que pueden ayudar a determinan la calidad de un código algorítmico. P.ej.:

  • legibilidad: no solo para las computadoras, también para los humanos, quienes pueden tener que revisarlo más adelante;
  • concisión: que cumplan con el principio DRY (Don’t Repeat Yourself), sin copia-y-pega de porciones de código;
  • rápidez: el buen código se ejecuta rápido porque tiene en cuenta el funcionamiento interno de los sistemas.

Quién lo va a hacer

Contratar a ingenieros informáticos solía ser el campo de las compañías tecnológicas pero, hoy en día, todas las empresas dependen de la computación. Los ayuntamientos tienen apps, las tiendas de moda venden por internet. Todas estas empresas necesitan programadores, se mueren por encontrar talentos y, sencillamente, no hay suficiente gente experimentada.

Las grandes empresas tecnológicas adquieren nuevas empresas para hacerse con el talento tecnológico. Si estas adquisiciones quiebran, no es problema, se quedan con sus ingenieros en la empresa matriz –véase Gowalla, Yobongo, Loopt, etc. Hay tanto poder en las manos de las principales plataformas tecnológicas que luchar por tener a un equipo que pueda romper esto un poco tiene mucho sentido.

A diferencia de un artista, que posiblemente arrancará exclamaciones del tipo “¡Colega, has conseguido emocionarme!”, los programadores reciben otro tipo de retroalimentación, a menudo anónima y, por ello, tienden a infravalorarse y, cuando trabajan para clientes no tecnólogos, no se sienten apreciados.

Los desarrolladores, y posiblemente los profesionales de cualquier disciplina, son como los medios sociales, el 90% de ellos da lástima. El problema para los reclutadores y empresarios es filtrar todo el ruido. De hecho, los que son buenos, podrían conseguir acuerdos mejores.

Un buen oficinista puede generar dos o tres veces más beneficio que uno mediocre. Un buen ingeniero puede aparecer con un algoritmo que de soporte a miles o millones de personas, multiplicando por 1000 los beneficios de una empresa.

Los desarrolladores más deseados son aquellos que tienen habilidades creativas e ideas empresariales. Por tanto, su contratación no solo paga el trabajo que deben desempeñar, sino también el coste de oportunidad de no ser el creador del próximo Facebook o Google.

La consultoría tecnológica

Un consultor/estrategia tecnológica debe ofrecer concepto, diseño, construcción, experiencia de usuario, testeo, optimización, identidad/marca y marketing.

El precio del servicio es solo uno de los factores. Si yo cobro tanto como el doble que otro experto, pero puedo resolver el problema en una cuarta parte del tiempo, el cliente ahorra dinero. Los clientes suelen enfocarse en resolver sus problemas de negocio dentro de su presupuesto y margen de tiempo, no solo en la tarifa horaria.

Para el cliente no se trata de caprichos tecnológicos. Nunca ha sido así. Tu misión número uno cuando consigues un contrato es comprender el negocio y descubrir cómo conseguir que haga dinero. Demasiadas ofertas de empleo/demandas de servicio y demasiados currículums exponen listados de tecnologías sin abordar necesidades o experiencias comerciales.

Por mi experiencia, la mayoría de los proyectos fracasan debido a una mala comunicación y a conflictos de expectativas. La mayoría de los programadores simplemente tiran líneas de código para lo que sea que alguien les dice que debe hacerse. Eso no es difícil, y el camino para aprenderlo es directo y bien definido. El valor de un consultor no está en la programación. Está en traducir cualquiera que sea el problema que se le plantea en una solución.

Los mejores resultados son para aquellos que son capaces de hacer feliz al cliente con el resultado sin tener que arrancar las especificaciones exactas, pateando y rabiando, de alguien que realmente no quiere tratar con todos esos detalles.

Archivos