8 debe tener las cualidades de un gran desarrollador de software

Por 4 de diciembre de 2018 #!31Mié, 21 Oct 2020 09:46:18 +0200p1831#31Mié, 21 Oct 2020 09:46:18 +0200p-9Europe/Warsaw3131Europe/Warsawx31 21am31am-31Mié, 21 Oct 2020 09:46:18 +0200p9Europe/Warsaw3131Europe/Warsawx312020Mié, 21 Oct 2020 09:46:18 +02004694610ammiércoles=269#!31Mié, 21 Oct 2020 09:46:18 +0200pEurope/Warsaw10#octubre 21st, 2020#!31Mié, 21 Oct 2020 09:46:18 +0200p1831#/31Mié, 21 Oct 2020 09:46:18 +0200p-9Europe/Warsaw3131Europe/Warsawx31#!31Mié, 21 Oct 2020 09:46:18 +0200pEurope/Warsaw10# Reclutamiento de IT, Consejos de reclutamiento
10 puntos fuertes del desarrollo de los ingenieros súper exitosos

Cuando fundé por primera vez DevSkiller Hace siete años, el objetivo de mi equipo era ayudar a las empresas a encontrar grandes desarrolladores. Desde entonces, tuve la oportunidad de trabajar con empresas de la lista Fortune 500, así como con otras más pequeñas a nivel mundial. Hablé con gente técnica como directores técnicos, gerentes de TI, líderes de equipo, miembros de equipo y representantes de recursos humanos. Todas estas personas eran responsables de encontrar y contratar a los mejores talentos de la tecnología. Todos ellos se enfrentaban a un problema universal: cómo contratar grandes programadores. También perseguían las mismas fortalezas de desarrollo. 

ITodo comienza con identificando un buen revelador cuando lo veas. Este nos lleva a la pregunta crítica: ¿Cuáles son los principales puntos fuertes del desarrollador? Se ha discutido mucho sobre el tema. Le recomiendo que lea esto Hilo de quora. Está lleno de ideas de algunas mentes maestras de la industria.

Basándonos en nuestra propia experiencia, cientos de charlas y decenas de pivotes a lo largo de nuestro camino, deberíamos participar en la discusión. Hemos llegado a una lista de claves qualities of a software engineer.

Cualidades del desarrollador de software

1. Curiosidad

La curiosidad es, en las grandes y generosas mentes, la primera pasión y la última", dijo Samuel Johnson. That is also true when considering the qualities of a good programador (and their great and generous minds). Let’s look for a more contemporary reference that develops Johnson’s point of view. Dan Pupius dice que "la curiosidad es importante durante toda la vida de un ingeniero". Te empuja a aprender nuevos idiomas, experimentar y buscar nuevas soluciones. Eso es... exactamente lo que quieres en un ingeniero. También te lleva a investigar las elecciones arquitectónicas de otrosasí como cuestionar los supuestos. Pupius afirma que muchas cualidades usualmente asociadas con la gran ingeniería "provienen de un rico sentido de curiosidad". 

John Allspaw, Jefe de Tecnología de Etsy, tiene un buen punto en su puesto"Al ser un senior ingeniero”. Dice que los desarrolladores de primera clase son inquisitivos. Tienden a hacerse preguntas a sí mismos y a sus compañeros mientras trabajan. 

  • "¿Qué podría faltarme?"
  • "¿Cómo no va a funcionar esto?"
  • "¿Podrías por favor hacer tantos agujeros como sea posible en mi pensamiento sobre esto?"
  • "Incluso si es técnicamente correcto, ¿es lo suficientemente comprensible para que el resto de la organización funcione, solucione los problemas y lo amplíe?"

No podría estar más de acuerdo. A primera vista, puede parecer que estas preguntas las hace un pesimista en serie. Ese no es realmente el caso. Son hechas por un individuo inquisitivo con una pasión por escribir sistemas elegantes y autoconsistentes. No confundas la minuciosidad con una actitud de "todos estamos condenados".

El desarrollador fortalece la curiosidad, el final está cerca.

Fuente: Resumen de la campaña

2. Habilidades técnicas

Rahul Varshneya dice que "las bellas artes y la programación son similares en esa gran técnica habilidades don’t make for a great artist or programmer”. Greatness doesn’t come from technical skills alone. However, you can’t expect exceptional results from people who don’t have the right skills for the job. You should think of skills as one of the elements of the puzzle which doesn’t do much in isolation. It can do wonders when accompanied by other developer strengths, though. Luckily, the presence of key strengths and qualities of a software engineer is super easy to verify with pruebas de codificación.

Recuerde que el conocimiento de los detalles técnicos es importante. Pero... si se encuentra con un candidato prometedor que muestra todos los puntos fuertes del desarrollo pero que aún está aprendiendo, considere contratarlo para un junior posición. Se sorprenderá de lo lejos que pueden llegar.

Velocidad y productividad

A Sackman, Erikson y Grant estudian descubrió una diferencia de 10 veces en la productividad entre los programadores. Sin embargo, la investigación no está exenta de defectos. No "controla las diferencias en las capacidades individuales". También combina los resultados de los usuarios que trabajan en lenguajes de programación de bajo y alto nivel.

tabla de productividad de la investigación de las fortalezas del desarrollador en los años 60

Fuente de la imagen: Construx.com

Steve McConnell argumenta que la investigación disponible sobre el tema sobre el tema no está libre de limitaciones. Es... no concluyente pero definitivamente sugerente. Ay así es exactamente como deberías verlo. 

Los salarios no suelen reflejar esto diferencias de orden de magnitud entre los desarrolladores. ¿Hay alguna forma de medir la productividad de los desarrolladores y debería intentar hacerlo?

Lamentablemente, la medición de la productividad de los desarrolladores no ha sido posible hasta ahora. Sabemos que las líneas de código (SLOC, o Líneas de Código Fuente) no son una medida que sea sinónimo del valor del desarrollador. De hecho, menos es más en el mundo del código (siempre y cuando sea auto-consistente y completamente funcional). Según el Phil Haack, siempre y cuando un código conciso, mantenible y comprensible es superior a la perforación de volúmenes de código rápido. ¿Por qué? Piensa en lo que sucede cuando quieres añadir nuevas características o actualizaciones. Normalmente lleva horas descifrar un código frágil y parchearlo. Esto normalmente viene con un precio elevado, también. Déjame ponerlo de esta manera: what you save on a fast but careless developer, you end up spending on the QA team.

caricatura de dilbert con chiste de fortalezas del desarrollador

Fuente: Dilbert

Si te interesa la productividad en la TI, lee "El mito de la productividad de los desarrolladores" por Dustin Barnes.

Concienciación

Paul Haack dice que los mejores desarrolladores saber cuándo codificar y cuándo no. Argumenta que reinventar la rueda pone una tensión innecesaria en el proyecto. En su lugar, utiliza las bibliotecas existentes para ahorrar tiempo. Suena lógico, ¿no? Aunque hacer todo desde cero sigue siendo uno de los mayores ladrones de tiempo.

La conciencia también se manifiesta a través del umbral de tolerancia al riesgo. This is crucial because often you need to refactor live systems. That’s where things can go wrong. Being able to realistically assess the risk without the ego getting in the way is definitely one of the key strengths and qualities of a software engineer. 

3. Intuición

Como Varshneya argumenta, mientras que algunos devs luchan por encontrar una solución, para otros es natural. Es "como si una epifanía los golpeara en el momento en que se sientan a crear programas o a resolver un problema".

doge meme muy perspicaz chiste de fortalezas del desarrollador

Grandes desarrolladores de software entender los algoritmos y arquitecturas intuitivamente. Esta habilidad les permite aprender rápidamente, lo que nos lleva a la siguiente cualidad.

4. Amor por el aprendizaje

Según John Krystynak, "compromiso genuino con el aprendizaje continuo" es uno de los principales fortalezas del desarrollador. "Tienes que amar la práctica fundamental de ir de no saber a saber, todos los días", de lo contrario no serás bueno en ello.

Esto es especialmente cierto en el mundo de la informática. Aunque es útil tener tu manera de hacer las cosas, es esencial que te aventures a salir de lo que conoces. Encuentra formas más rápidas de hacer las cosas. Una de las formas de hacerlo es notando los patrones y sacando conclusiones....

Hay muchas maneras de desarrollar when you’re a good developer (pun intended).

  • Asistiendo a eventos de la industria, como conferencias y hackathons. Thomas So de AppLovin los llama formación de preparación para el trabajo.
  • Encontrar un mentor.
  • Trabajando en un proyecto paralelo.
  • Pidiendo la retroalimentación de los compañeros.

5. Adaptabilidad

The IT world is changing rapidly and as a good developer, you need to stay adaptable. It’s a safe bet to hire people who are always en busca de nuevas herramientas y formas de hacer las cosas. A menudo siga las noticias de la industria y simplemente se preocupan por el oficio.

Cuanto más sepas, también fuera de tu tecnología preferida, más activo eres tanto para tu equipo como para toda la organización. Como Marius Mazilu afirma que "la diversidad de la tecnología se ha extendido tanto que ser especialista en una tecnología en particular no es necesariamente una garantía de éxito". Mazilu cree que ser más versátil es fundamental. Eso es porque las tecnologías maduras son más estables y no pueden seguir el ritmo. Esto significa que su conjunto de habilidades se vuelve anticuado rápidamente. Por otro lado, los marcos novedosos típicamente requieren una inversión masiva de tiempo porque son inestables. Como él argumenta, "puede que te sorprendas al descubrir un día que no te quieren de vuelta".

Mazilu ha 7 simple reglas que deberías seguir para ...para mantenerse al día con la tecnología.

  1. Confía en la intuición.
  2. Siempre vuelve a lo básico.
  3. Cuidado con las balas de plata. Estas incluyen tecnologías bien comercializadas que se utilizan ampliamente porque a pesar de no encajar en el proyecto.
  4. Aprende a depurar.
  5. Aprende el guión.
  6. No te obsesiones con el aspecto de tu código.
  7. Ve con la multitud.

6. Una actitud positiva

Una actitud positiva es una de las cualidades clave de un gran desarrollador de software. One of the qualities of a good programmer is that they solve problems day in and day out, but that doesn’t mean they should se ocupan de ellos.... Una actitud de "hacer cagadas" es muy necesaria, en parte porque las tareas y los boletos tienden a acumularse. Es importante decidir cuándo es el momento de sacar una solución suficientemente buena por la puerta y pasar a la siguiente cosa de la lista. La advertencia aquí sería no inundar a tus desarrolladores con más tareas de las que pueden manejar y mantener las cosas realistas.

Damien Filiatrault pone la "actitud positiva" a la cabeza de su lista de cualidades esenciales que poseen los buenos desarrolladores. Dice que puedes probar las aguas y hacer unas cuantas preguntas aparentemente simples del tipo "charla pequeña" para ver si las respuestas se centran en lo positivo o en lo negativo. Estas preguntas incluyen:

  • "¿Te consideras afortunado? (arrogante o humilde).
  • ¿Cómo fue tu viaje a la entrevista? (quejarse o no preocuparse)".

7. Abrazando la tutela

John Krystynak dice que "los grandes programadores no se vuelven grandes en el aislamiento". Lo saludo por decir eso. Una de las razones por las que el modelo de tutoría funciona tan bien en IT es porque some good developers learn most efficiently by apprenticeship. Simplemente toma menos tiempo resolver las cosas si puedes ver a un colega más experimentado en el trabajo. Otra razón por la que los mejores técnicos abogan por la tutoría es porque requiere que expongas tanto tus fortalezas como tus debilidades. Esto te enseña volúmenes sobre mantener tu ego bajo control.

Una de las mejores cosas que puedes hacer como empleador para fomentar ese tipo de actitud en tu organización es emparejar a programadores experimentados con estudiantes de primer año. Se podría pensar que esto probablemente pondrá una tensión en el mentor que ya está más que ocupado. Tengan en cuenta que tanto el El alumno y el mentor aprenden de ese arreglo. Si no puedes explicarle algo a tu pupilo, significa que no lo entiendes lo suficiente. O que no puedes comunicarlo lo suficientemente bien. Esto significa que hay oportunidades de aprendizaje para ambas partes en esta relación.

8. Habilidades de comunicación

Damien Filiatrault afirma que "Las buenas habilidades de comunicación se correlacionan directamente con las buenas habilidades de desarrollo.” Aquí está el porqué..:

  • Necesitas saber qué preguntas hacer cuando no entiendes o necesitas volver a verificar.
  • Es posible averiguar las cosas basándose en la comunicación con los colegas. Eso significa que no necesitas confiar en las especificaciones escritas.
  • Los conceptos se entienden y se comunican rápidamente en un equipo de desarrolladores exitosos.
  • One of the qualities of a good programmer is that they can comunicarse de manera convincente con el personal técnico y no técnico.

Fortalezas del desarrollador: conclusión

Cada vez es más difícil encontrar excelentes programadores. La industria tecnológica está pasando por una situación de escasez de talento. Esto significa que necesitamos más desarrolladores que podamos encontrar, y las empresas están ...que se esfuerzan por atraer a los mejores talentos de la tecnología.

el anuncio de google que aborda los puntos fuertes del desarrollador

Identificar las fortalezas de los desarrolladores que son cruciales para el crecimiento de su negocio es una necesidad. Sin embargo, ¡rápido! WCuando te encuentres con un candidato prometedor, actúa rápido. En la situación de escasez, reclutadores se pelean por los mismos candidatos.

¿Cuáles son los principales puntos fuertes del desarrollador? ¡Estoy deseando escuchar tus pensamientos!

Nota del editor: Este artículo se publicó originalmente en abril de 2017 y ha sido actualizado para mayor exactitud y exhaustividad.