Programadores 10x: ¿Mito o realidad?

Los programadores 10x son un tema candente para discutir en la industria del software hoy en día, así que pensé que sería una buena idea compartir mi punto de vista en este sentido.

Honestamente no sé la definición exacta de un programador 10x, pero asumo que se refiere a los programadores hiper productivos (que puede no asignar a exactamente 10 veces la productividad, pero a un nivel significativo cerca o más de 10 veces).

Basado en los pocos éxitos que tuve al entregar piezas ultra grandes de software para startups y corporaciones, y la experiencia de trabajo con algunos desarrolladores de primera categoría, puedo compartir algunas ideas sobre este tema.

El programador 10x entonces

El software desarrollado hace 20-30 años era mucho más simple en comparación con el software moderno, con respecto a la funcionalidad, seguridad, rendimiento y escalabilidad. Por otra parte, en aquella época sólo se disponía de un puñado de bibliotecas o frameworks para implementar cualquier funcionalidad.

Por lo tanto, el software escrito hace 20-30 años implicaba una cantidad significativa de esfuerzo en la programación.

Definir un programador 10x en ese contexto es comparativamente fácil. La diferencia entre la cantidad de esfuerzo de programación central dado para implementar el mismo conjunto de funcionalidades por los programadores 10x y los regulares.

10x dev

El ingeniero 10x ahora

Antes de entrar en detalles adicionales, dejemos una cosa clara: el desarrollo de software es un proceso complejo, y la programación es sólo una de las áreas para contribuir al software moderno.

Debido al aumento del uso del software, especialmente a través de Internet, tanto por los consumidores como por las organizaciones, el software es muy complejo, y podría ser una decisión descabellada construir algo desde cero. Honestamente, a menos que sea una plataforma o un sistema operativo completamente nuevo, el núcleo de programación requerido para desarrollar software moderno es menos intenso en comparación con los esfuerzos más antiguos.

Aunque el conocimiento y el esfuerzo de programación siguen siendo muy importantes, la cantidad de esfuerzo que se requiere para construir un gran software (libre de errores, seguro y vendible) está en la ingeniería.

Así que en el contexto actual, un programador 10x puede no aportar mucho valor en la industria, pero un ingeniero 10x crea un impacto muy amplio en el proceso de desarrollo.

Me gustaría añadir mis 3 centavos aquí.

1. Hacen el mejor uso de las herramientas

El desarrollo de software es un proceso complejo, que implica una gran cantidad de diferentes tipos de esfuerzo. Además de la codificación, implica esfuerzos desde la documentación del proceso, hasta el formateo de los datos, desde la lectura de los datos de registro, hasta el envío de informes, desde las pruebas automáticas, hasta las pruebas manuales, desde la depuración compleja, hasta la investigación manual de los problemas, y así sucesivamente.

Un gran esfuerzo puede ser extremadamente eficiente si se utiliza el conjunto adecuado de herramientas y plataformas (que son apropiadas para el presupuesto de un cliente y otras limitaciones).

Editores

La escritura de software implica uno o más editores, algunos de los cuales también se conoce como IDE (Integrated Development Environment). Los IDEs modernos, como Visual Studio o Eclipse, ofrecen una gran cantidad de funcionalidades para que los desarrolladores sean productivos, pero una cantidad significativa de estas características no son conocidas por la mayoría de los desarrolladores.

Los IDEs más populares también tienen plugins comerciales y gratuitos (como Resharper), que permiten aún más productividad al desarrollador.

Además de los IDE, otros editores como NotePad++, MarkdownPad, etc. también son muy útiles en un contexto relevante.

Utilidades y servicios en línea

Utilidades y servicios en línea como la lectura o búsqueda de grandes archivos de registro, depuradores http como Fiddler, herramientas de construcción y despliegue, etc.

Herramientas propias

Los ingenieros de 10x también hacen sus propios conjuntos de herramientas para realizar acciones repetitivas para las que el software apropiado puede no estar disponible externamente.

En muchos casos, los propietarios de negocios en una casa de desarrollo de software no parecen estar interesados en invertir mucho en herramientas para los desarrolladores, pero el uso del conjunto adecuado de herramientas permitirá una sorprendente cantidad de productividad.

Para los desarrolladores de software, que son algunas de las personas más caras de contratar, gastar dinero en herramientas adecuadas para ellos merece la pena.

Como líder de un equipo de desarrolladores .net, el desarrollo de una plantilla de inicio de ASP.NET Core & siguiendo las últimas prácticas de codificación .net ayudó a mi equipo a aumentar la productividad general tres veces.

2. No reinventan la rueda No reinventan la rueda

La industria del software se ha vuelto muy madura en las últimas tres décadas. Casi todos los problemas que los desarrolladores tratan de resolver mediante la codificación han sido resueltos y están disponibles como API (ya sea como binarios o servicios web), algunos de los cuales son comerciales, mientras que otros son gratuitos.

Además, los frameworks de código abierto también proporcionan una gran flexibilidad para entender el comportamiento subyacente de la API o la personalización según las necesidades de los usuarios.

Antes de lanzarse a programar, los ingenieros de 10x realmente se aseguran de que este problema no ha sido resuelto total (o parcialmente) antes o, si es así, no están disponibles para ser utilizados.

3. Escriben (continuamente) código bellamente diseñado

Escribir un gran software requiere definir una buena arquitectura que no sólo siga buenos patrones y principios de diseño, sino que también aproveche las infraestructuras modernas. Producir código de buena ingeniería no sólo permite escribir nuevas funcionalidades más rápido, sino que también reduce los bugs de forma significativa.

Pero, una bella ingeniería requiere una mejora continua.

En mi carrera profesional he visto una sorprendente cantidad de código de baja calidad en diferentes proyectos de software, que continuamente añade deuda técnica. Un simple proyecto que comenzó hace 5 años está lleno de código feo sin ingeniería y requiere más de 20 personas para manejar el ciclo de desarrollo (donde están gastando el 80% de su tiempo realmente arreglando errores).

Una de las principales razones detrás de esta horrible situación, encontré, es el «miedo».

Las organizaciones, especialmente las entidades empresariales, en su mayoría temen el cambio.

El desarrollo de software es una disciplina que cambia increíblemente rápido en términos de herramientas, marcos de trabajo e ingeniería, y requiere un cambio continuo para llegar al lugar correcto.

El cambio es aterrador, pero no es tan peligroso como parece, especialmente en la industria del software (con los conjuntos adecuados de herramientas y personas). Pero si no se hace como se espera, no tardará mucho en abandonarse el proyecto por completo algún día.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.