10 hábitos de los programadores de software altamente exitosos

Imagine que está comparando los currículos de dos desarrolladores de software: Dev A vs Dev B. Ambos candidatos poseen antecedentes y habilidades casi idénticos: lenguajes, marcos, plataformas, metodologías, industrias, etc. Son prácticamente la misma persona, en el papel. Sin embargo, hay ciertas cosas que podrían indicar que Dev A probablemente tendrá mucho más éxito en su carrera que Dev B, en casi cualquier medida. ¿Cómo se calcula esto?

Resulta que las habilidades técnicas y la experiencia solo lo llevarán hasta cierto punto. Los desarrolladores de software de gran éxito también cultivan características críticas de comportamiento y mentalidades que los distinguen de la multitud. Le preguntamos a una variedad de profesionales de software sobre los hábitos y rasgos que separan a los grandes desarrolladores del resto del grupo. Se les ocurrieron 10 hábitos que predicen el éxito:

 

1. Escribe código limpio y reutilizable que es más fácil de leer y probar.

Hay muchas maneras de escribir código limpio que sea más fácil de reutilizar, leer y probar, pero sin importar el método, es una característica cada vez más crucial del desarrollo de software de alta calidad. Andrew Magee, gerente de desarrollo de software de Enigma Digital, con sede en el Reino Unido, ofrece este punto de partida: asigne solo un propósito a cada función.

“Cuando comienzas a codificar, es común comenzar a escribir línea tras línea de código, en una función que se hace cada vez más grande”, dice Magee. Eso puede parecer más fácil al principio, pero genera varios problemas: su código se vuelve más difícil de leer, más difícil de reutilizar y más difícil de probar. “Una función debe hacer una cosa y solo una cosa. Si hace más de una cosa, le falta enfoque”.

Magee también recomienda asignar nombres claros y significativos a las variables y funciones, algo que debería ser más simple si sigue la regla general de una función, un propósito. “Como desarrollador, pasa más tiempo leyendo su código que escribiéndolo”, señala Magee. “Es importante que cuando regrese a su código semanas después de escribirlo, pueda comprender rápida y fácilmente lo que debe hacer”.

 

2. Comprende cómo su código ayuda a impulsar el negocio en general.

Hay muchas personas que pueden escribir el código para, por ejemplo, la nueva aplicación móvil de una empresa. Hay muchos menos con la visión general necesaria para comprender por qué la empresa está creando la aplicación móvil en primer lugar. Los grandes desarrolladores “comprenden ampliamente cómo funciona la empresa a nivel comercial, hablan el idioma del negocio y dominan la traducción del lenguaje comercial a la tecnología y viceversa”, dice Todd Stephan, vicepresidente de ingeniería de software de Ask Applications . De manera similar, Stephan agrega que los grandes desarrolladores pueden hablar sobre el valor de la tecnología en términos comerciales; en otras palabras, en términos que el resto de la empresa, incluido el C-suite, entienda.

Jose Miguel Pérez, CTO de MarketGoo, comparte una visión similar sobre esta característica de los grandes desarrolladores: “Buscan tener una comprensión del objetivo, las metas y el impacto de un proyecto que es amplio y va más allá de la parte que juegan en él.”

Aquí hay un paso crucial hacia una mejor comprensión de la contribución de su código al panorama general: concéntrese en el usuario o cliente. “Los desarrolladores exitosos asumen la responsabilidad de lo que entregan, no solo al repositorio, sino también al usuario”, dice Clay Smith, defensor de los desarrolladores de New Relic“Los desarrolladores ninjas hacen su turno con un buscapersonas”.

 

3. Escuchas más de lo que hablas, o al menos escuchas antes de hablar.

“Si está en una oficina con otros desarrolladores, escuche primero y luego hable”, dice Christopher Mendy, jefe de desarrolladores de Evus Technologies “Es la forma más rápida de aprender”.

Esto requiere humildad, especialmente si crees que eres la persona más inteligente de la sala. Los grandes desarrolladores tienen "la capacidad y la voluntad de admitir cuando no saben", agrega Pérez de MarketGoo. Además, desaconseja ser ese programador, el que escupe un montón de jerga técnica en lugar de reconocer que es posible que aún no sepa la respuesta a una pregunta en particular.

 

4. Set disciplinado.

El talento, excepto quizás en cantidades abrumadoras, no lo es todo. De hecho, el talento o la habilidad son solo una parte de la fórmula del éxito. “La disciplina es la otra parte”, dice Gady Pitaru, CTO de Badger Maps, un cliente de New Relic. “Un ingeniero de software altamente calificado, sin disciplina, es como un marinero veterano sin un mapa: muy bueno para dirigir el bote, pero no puede encontrar la costa”.

Pitaru describe a un ingeniero de software disciplinado como

  • Alguien que no sacrifica la calidad por la velocidad. Pero cuando es absolutamente necesario, “son conscientes de la deuda técnica que están creando y luchan por pagarla en el futuro”.
  • Alguien que adopta los procesos porque reconoce que se han implementado para ayudar a los desarrolladores a tener éxito. Por ejemplo: “Están plenamente presentes durante las revisiones de código y fomentan retroactividades de sprint constructivas”.
  • Alguien que conoce el valor del tiempo concentrado para el trabajo de desarrollo: “Encuentran formas de asegurarse de obtenerlo, usando pomodoros, bloqueando el tiempo del calendario o usando audífonos, por nombrar algunos ejemplos”.

 

5. Concentrarte profundamente en lo correcto.

La ingeniera de software de New Relic Ruby Agent, Katherine Wu, comparte una forma específica de disciplina que marca a los desarrolladores de gran éxito: la capacidad de concentrarse en el objetivo compartido de un proyecto en particular sin desviarse por ideas agradables o insólitas. Eso en realidad no te está acercando a tu objetivo.

“Creo que es un hábito bastante común meterse en madrigueras de conejo o quedar atrapado en los casos extremos de una implementación técnica, en particular”, dice Wu. Ella describe esa mentalidad como "¿No sería bueno si pudiéramos hacer X, Y y Z?", Cuando los objetivos reales del proyecto son "A, B y C". Es un proceso de pensamiento natural para los ingenieros, sin duda, pero que a veces necesita ser controlado. “Cuando retrocedes un poco, puedes darte cuenta de que estás poniendo mucho esfuerzo en algo que en realidad no es tan crucial para el objetivo más amplio que todos están tratando de lograr”.

Sin duda, es bueno poder mirar hacia adelante a veces, dice Wu, siempre que pueda volver a concentrarse en la importancia de lo que sabe que necesita hacer frente a lo que podría necesitar hacer. Parte de eso es asegurarse de estar en la misma onda que el resto del equipo. Como señala Smith de New Relic, "los desarrolladores exitosos entienden que la innovación es un deporte de equipo".

 

6. Eres un solucionador de problemas persistente.

“Sé terco, algunos problemas son muy difíciles”, señala Mendy. “Con suficiente tiempo e investigación, siempre hay una solución, y encontrar la solución a un problema difícil es la mejor sensación”.

 

7. Obtienes ayuda de extraños en Internet.

No confundas persistencia con orgullo. Los desarrolladores exitosos no permiten que sus egos conviertan un problema de programación en una pérdida de productividad innecesaria, especialmente cuando una solución puede estar disponible en línea. A veces, pedir ayuda (sí, Google cuenta) es el primer paso más eficiente hacia una solución.

“Sé bueno buscando en Google”, aconseja Mendy. “Casi todos los problemas en la programación de computadoras con los que te encontrarás han sido resueltos. En algún lugar, alguien se ha topado con el mismo problema que usted tiene y, a menudo, publican sus soluciones”.

Sin embargo , no crea que obtener ayuda en línea significa simplemente copiar y pegar el código de un subproceso de desbordamiento de pila . La promotora de desarrollo de New Relic, Tori Wieldt, señala que los grandes desarrolladores se toman el tiempo para comprender el qué, el por qué y el cómo de cualquier solución que encuentran en línea. “Investigue qué está haciendo el código y por qué resuelve los problemas”, aconseja. “Puedes cortar y pegar, pero sin conocimientos previos, puede volver a atormentarte”.

 

8. Vas más allá de la habilidad para lograr experiencia, pero no necesariamente maestría.

Cuando Ask está contratando talento de desarrollo, Stephan busca experiencia en la experiencia previa de una persona, y no necesita estar en áreas que se correspondan directamente con el trabajo que está tratando de llenar. “Si una persona había adquirido experiencia rápidamente antes, es una buena apuesta que la persona pueda volver a hacerlo con otras habilidades y tecnología”, dice.

Pitaru en Badger Maps explica la diferencia entre habilidad y experiencia: “Un buen ingeniero de software puede escribir una consulta de base de datos de Django, pero un ingeniero de software altamente calificado sabrá cómo escribir esa consulta de manera más eficiente para que una línea de código se escale”.

Sin embargo, distinga entre experiencia y maestría. Este último sugiere que no te queda nada por aprender. “No creas que nunca dominarás nada”, dice Mendy. “El desarrollo en estos días es solo educación continua”.

 

9. Estás abierto a cosas nuevas.

Otro requisito previo para esa educación continua que Mendy describe anteriormente: estar abierto a cosas nuevas y aceptarlas según sea necesario.

“Los ingenieros de software de gran éxito aprenden constantemente sobre las nuevas tendencias de la industria y las aplican directamente a su trabajo”, dice Pitaru. “Hay un flujo constante de nuevos lenguajes, marcos y metodologías que los ingenieros de software exitosos saben cómo filtrar y cribar en busca de lo que les ayudará a seguir dando lo mejor de sí mismos y creciendo. Podría decirse que la habilidad más importante para un ingeniero de software exitoso es saber cómo adquirir nuevas habilidades”.

De hecho, como señala Pitaru, el aprendizaje no se detiene con la finalización de un título en informática o un campamento de programación, ni una vez que escuchas las palabras "¡Estás contratado!" (Si le preocupa que eso le suceda, puede ser hora de reiniciar).

"Se de mente abierta. Lo peor que puedes hacer es concentrarte en un idioma o herramienta”, recomienda Mendy. Después de todo, “Si todo lo que tienes es un martillo, entonces todo empieza a parecer un clavo”.

 

10. Te sientes cómodo estando incómodo.

Wu, de New Relic, dice que su enfoque evolutivo de la educación continua y el desarrollo de habilidades se inspira en parte en el libro Deep Work de Cal Newport. Una cita clave: el verdadero desarrollo de habilidades requiere “ser capaz de profundizar en un tema y confrontar las áreas que son difíciles al respecto, y perseverar en esos momentos de frustración para que realmente pueda explorar, realmente comprender lo que está frente a tú."

Esto puede ser difícil por todo tipo de razones, incluidas todas esas cosas (correo electrónico, Slack, reuniones, etc.) que a menudo nos hacen sentir ocupados pero que no necesariamente contribuyen al tipo de esfuerzo intelectual profundo que describe Wu. Wu, por ejemplo, había notado una señal de que estaba luchando por comprender un tema complejo: su atención comenzaba a desviarse. “Podría estar en medio de la lectura de una publicación de blog técnica y, literalmente, en medio de un párrafo, en medio de una oración sobre alguna idea, mi cerebro casi se rebela. Me pregunto qué hay en Facebook”.

En respuesta, Wu pone en práctica lo que extrajo del libro de Newport reservando bloques de tiempo (por ejemplo, dos horas) y desconectándose de las distracciones para concentrarse en un objetivo singular. Ella lo compara con una práctica meditativa, habilitada al dejar de lado esos bloques de tiempo: “Dar cuenta de la urgencia de que mi atención desaparezca y suavemente redirigirlo de regreso a la tarea en cuestión para que pueda luchar e identificar 'OK, ¿qué parte? de esto no entiendo? ¿Cómo puedo encontrar una respuesta? ¿Necesito hacer un experimento? ¿Necesito codificar un proyecto de juguete y relacionarlo con esto? ¿Necesito identificar a un experto que pueda explicármelo?' Implica tratar de progresar muy deliberadamente en temas difíciles”.

Para ser claros, desactivar el correo electrónico durante un par de horas no lo convertirá en un mejor desarrollador, es simplemente un mecanismo para concentrarse en el progreso y la mejora reales. Para mejorar, dice, “tienes que estar trabajando en cosas que son difíciles para ti. Incluso si no tiene distracciones y dedica muchas horas a la codificación, si solo está creando la misma aplicación realmente simple una y otra vez, eso no necesariamente está ampliando los límites de sus habilidades. Y si no está ampliando deliberadamente los límites de sus habilidades, es posible que no esté tratando de estructurar las habilidades en la dirección que realmente lo ayudará a crecer como colaborador técnico”.