Casi todos los desarrolladores de software o programadores se han encontrado con código escrito por otra persona que demuestra el cliché «cualquiera puede codificar». Pero, ¿te has encontrado alguna vez con el supuestamente mítico «Desarrollador 10x»? Ser un desarrollador 10x tiene menos que ver con sobresalir en la escritura de código y más con saber exactamente qué código escribir.
Muchos de nosotros empezamos a programar con un propósito específico. Por ejemplo, yo empecé a escribir código para reproducir automáticamente juegos MUD basados en texto mientras dormía y estaba en la escuela. Era un script kiddie a los 13 años y ni siquiera lo sabía. Se me ocurría una idea, escribía el código y lo probaba, todo por mí mismo.
El desarrollo de software es difícil cuando lo hacemos para otra persona porque a menudo carecemos del mismo tipo de motivación y entusiasmo que nos impulsa cuando perseguimos nuestra propia visión. No se nos ocurren las ideas, pasamos horas en reuniones tratando de entenderlas y luego pasamos la mayor parte del tiempo modificando el código de otra persona, o al menos contribuyendo a él. Eso puede llevar a un nivel de desapego que disminuye la productividad.
Para ser un desarrollador 10x, tienes que aprender a sobresalir en este entorno o incluso crear tu propia empresa para liderar la carga.
Cualquiera puede ser un desarrollador 10x, al menos durante parte del día, todos los días. Creo que hay tres cosas en las que todos los desarrolladores deberían centrarse para ser más productivos y un mejor miembro del equipo.
- Las 3 cosas
- Saber el Qué
- Entender el por qué
- Saber cuándo hacer qué
- Dominar el Qué, el Porqué & Cuándo convertirse en un desarrollador 10x
- Empiece con el Porqué
- Sé un buen desarrollador &Excelente solucionador de problemas, no el mejor programador
- El Cuando está en tu instinto, o no
- Saber qué hacer y qué preguntar
- Conclusión
Las 3 cosas
Para ser un desarrollador 10x, necesitas varios años de experiencia trabajando con cualquier lenguaje de programación y conjunto de herramientas que utilices. Tienes que ser bueno resolviendo problemas y escribiendo código; esto es un hecho.
Es importante entender que la forma de escribir código no es lo que te hace un desarrollador 10x, ingeniero 10x, programador 10x, o como quieras llamarlo.
Conoces las 5 Ws: «Quién, qué, dónde, por qué, cuándo». Aunque todas ellas se aplican al desarrollo de software, quiero centrarme en las tres características que definen a los desarrolladores 10x.Estas tres cosas diferencian al desarrollador medio del desarrollador 10x:
- Qué
- Por qué
- Cuándo
Saber el Qué
En el mundo corporativo, los desarrolladores tienden a trabajar en proyectos que no les apasionan y que no entienden. Para la mayoría de los desarrolladores, esto no es un gran problema, siempre y cuando reciban muy buenas instrucciones y las expectativas estén claramente definidas.
El problema es que los desarrolladores no suelen recibir instrucciones adecuadas. En su lugar, utilizamos esa cosa llamada «desarrollo ágil». Recibimos una nota adhesiva con unas pocas palabras y se espera que sepamos exactamente lo que hay que hacer.
El desarrollo de software tiene que ver con la comunicación. Los desarrolladores necesitan saber en qué estamos trabajando, qué problemas estamos tratando de resolver y cómo debe ser exactamente el resultado. Cuanto más sepamos por adelantado, más rápido podremos avanzar. Lo más importante es conocer la intención del trabajo y lo que hará que el trabajo sea un éxito.
Los malos desarrolladores pasarán horas yendo en la dirección equivocada en un proyecto sin hacer ninguna pregunta. Son lo que yo llamo desarrolladores -10x porque no consiguen nada y hacen perder el tiempo a todos sus compañeros de trabajo. Casi todo el mundo se ha encontrado con algunos de estos desarrolladores, y puede ser frustrante trabajar junto a ellos. Y hay que tener cuidado de no adoptar sus hábitos.
Algunos desarrolladores trabajan bien incluso sin muchos detalles. Utilizan una gran cantidad de creatividad y hacen las preguntas correctas. Estos unicornios son probablemente desarrolladores 10x. Saben cómo resolver las cosas y a menudo elevan el nivel de todo el equipo que trabaja a su alrededor.
La conclusión es que los desarrolladores 10x son realmente buenos para determinar rápidamente lo que hay que lograr y qué preguntas hacer.
Entender el por qué
Tal vez el mayor obstáculo del desarrollo de software es entender el por qué. Si no entiendes el problema que estás tratando de resolver, es realmente difícil resolverlo.
¿Por qué estaba hackeando scripts de terminal para jugar a mi juego MUD mientras dormía y estaba en la escuela? Quería alcanzar el nivel más alto en el juego, por supuesto. Sabía exactamente por qué, y hacía todo lo posible para conseguirlo.
El mismo enfoque se aplica a cualquier proyecto de desarrollo de software. Los desarrolladores que entienden la vertical de la industria en la que están y los problemas que están tratando de resolver serán mucho más productivos. Saber por qué y entender la vertical también ayuda a evitar el trabajo innecesario, liberando tiempo para centrarse en las cosas que harán que un producto o característica sea más valioso para los usuarios.
El problema es que saber por qué no es suficiente. Hay que tener pasión por el problema y entenderlo por dentro y por fuera para ser realmente un desarrollador 10x. Creo que la mayoría de los desarrolladores 10x son también gente de producto en el fondo, dotados de una buena visión del producto.
Saber cuándo hacer qué
El tiempo es importante para los proyectos de desarrollo de software. Elegir en qué orden trabajar en los elementos de su bitácora es una tarea aparentemente fácil que es realmente crítica. ¿Trabajas en algo que puede ayudar a tu empresa a conseguir una nueva cuenta o vas a limpiar una vieja deuda técnica?
Como equipos de desarrollo, tenemos que hacer malabares constantemente con lo que trabajamos y cuándo lo hacemos.
Todos los elementos de trabajo de desarrollo de software caen en estas tres categorías:
- Cosas que tenemos que hacer
- Cosas que necesitamos hacer
- Cosas que queremos hacer
Tenemos que hacer esta nueva característica para un cliente. Tenemos que arreglar errores en nuestro software. Queremos trabajar en la deuda técnica o en alguna nueva característica del producto. Siempre es un acto de equilibrio.
Deberíamos hacer elementos de trabajo de los tres cubos simultáneamente. No podemos dedicar todo nuestro tiempo a la deuda técnica, pero quizás deberíamos dedicarle un pequeño porcentaje de nuestro tiempo.
Los desarrolladores también tienen que saber cuándo construir arquitecturas complejas dentro de su código. Yo prefiero mantener el código tan simple como sea posible hasta que me vea obligado a añadir una arquitectura sin la cual no puedo vivir.
Los desarrolladores también tienen que saber cuándo evitar perseguir objetos brillantes. Tienden a querer jugar con nuevas herramientas y tecnologías, pero estas soluciones sólo pueden ralentizar un proyecto en lugar de ayudar a hacerlo más rápido.
Los desarrolladores 10x son buenos para hacer malabares con las prioridades y entienden cuándo invertir tiempo en las arquitecturas en lugar de lanzar código espagueti para hacer que algo funcione. Recuerde, a sus usuarios no les importa cómo funciona su software o cuán elegante es la arquitectura. Sólo quieren que funcione. Los desarrolladores 10x entienden esto.
Dominar el Qué, el Porqué & Cuándo convertirse en un desarrollador 10x
Ahora hablemos de cómo puede dominar las importantes habilidades del Qué, el Porqué y el Cuándo para convertirse en un desarrollador 10x.
Empiece con el Porqué
El primer paso para convertirse en un desarrollador 10x es apasionarse por el software y los problemas que está tratando de resolver. Tienes que entender el problema por dentro y por fuera. Eso comienza con el entusiasmo por la empresa para la que trabajas y su misión como empresa.
No te limites a hacer que un botón haga algo porque eso es lo que alguien dijo que hiciera. Esfuérzate por entender el porqué a un nivel superior. Serás mucho más valioso para tu equipo y tu empresa si te mantienes centrado en el por qué.
Sé un buen desarrollador &Excelente solucionador de problemas, no el mejor programador
Me describiría más como un hacker-desarrollador. Soy del tipo que puede armar un código feo para resolver casi cualquier problema muy rápidamente. Mi código rara vez es bonito, pero funciona. Y eso es lo que importa.
No tienes que escribir un código perfectamente diseñado con pruebas unitarias para ser un desarrollador 10x. Tienes que saber cuándo y cuándo no hacer esas cosas para ser un desarrollador 10x.
Un desarrollador 10x es bueno resolviendo problemas específicos y satisfaciendo las necesidades del negocio con código. Lo más inteligente que puede hacer es saber hasta dónde llevar un proyecto antes de entregarlo a otra persona que puede ser mejor en la finalización de algunos de la arquitectura y otros pequeños detalles.
El Cuando está en tu instinto, o no
Saber cuándo construir una arquitectura compleja frente a hackear algo viene con la experiencia y el desarrollo de sus sentidos arácnidos. O tienes esa sensación de intuición o no la tienes.
Algunos de los desarrolladores más inteligentes con los que he trabajado han sido los peores a la hora de priorizar los patrones y las arquitecturas sobre la funcionalidad y los horarios. Ellos querían sobre-ingeniería y reescribir las cosas una y otra vez, luchando por el «código perfecto» en lugar de «código despachable».
Los desarrolladores 10x tienen que utilizar su experiencia y su instinto para saber cuándo centrarse en la arquitectura y la perfección frente a hacer la mierda.
Saber qué hacer y qué preguntar
Tanto del desarrollo de software se reduce a las habilidades de comunicación. Lamentablemente, muchas de las notas y requisitos que recibimos para los elementos de trabajo no son muy detallados. Un desarrollador 10x sabe cómo leerlas, aplicar el «por qué» que conoce del negocio y hacer las preguntas pertinentes.
Los mejores desarrolladores saben cuánto tiempo deben dedicar a algo antes de pedir ayuda. También saben qué preguntas hacer para aclarar lo que hay que hacer para que el proyecto avance.
Conclusión
He estado escribiendo código durante más de 15 años. Diría que soy un desarrollador 10x, o al menos puedo serlo. Sé lo que se me da bien. Cuando estoy haciendo las cosas en las que soy bueno, puedo conseguir una cantidad seria de trabajo hecho rápidamente.
Si quieres hacer un prototipo de un nuevo producto, soy tu hombre. Si necesitas ayuda con Angular, React o algún otro desarrollo front-end, definitivamente no soy tu hombre. Sería un desarrollador -10x en esas tareas.
Los desarrolladores 10x no son un mito. Ellos existen. Lo más probable es que sean dev managers, arquitectos, desarrolladores principales o fundadores de empresas. Si no lo son, probablemente deberían serlo. Yo terminé siendo el fundador de una empresa, dos veces ahora.
También, nadie va a ser un desarrollador 10x todos los días, todo el día. No tenemos la energía ni la concentración para trabajar a ese ritmo todos los días. No somos robots.
Si entiendes el «qué, por qué y cuándo» del desarrollo de software, puedes ser más productivo y un mejor miembro del equipo – quizás incluso un desarrollador 10x durante unas horas al día. Y eso puede marcar una gran diferencia.
Mientras estás aquí y buscas cómo mejorar, echa un vistazo a nuestra herramienta de análisis de código dinámico, Stackify Prefix. Es gratis y te ayudará a escribir mejor código.