La productividad de un gran programador es 3 veces la de un programador promedio y 10 veces la de un mal programador (Referencia: The mythical man month). Lo que hace especial al 1% de los programadores del mundo es que no solo escriben código sólido. Entre otras cualidades, se preocupan por el usuario final y se centran en crear la mejor solución para ellos.
Después de trabajar con más de 2000 desarrolladores, nosotros en Escalable ( exención de responsabilidad: aquí soy el fundador ) hemos podido identificar 7 cualidades que distinguen a los grandes programadores.
1. PACIENTE Y ACTITUD POSITIVA
Un gran programador se preocupa por tu producto. Son dedicados, positivos y lo suficientemente pacientes como para resolver los problemas más aburridos y difíciles. Se enorgullecen de su código y lo hacen fácil de leer, por lo que recortar esquinas no es su estilo. Aunque es importante no agotar a un desarrollador con frecuentes plazos urgentes, a veces esto es inevitable. Cuando necesite llevar un producto al mercado o necesite enviar una determinada función dentro de la fecha límite, el gran programador intensificará y no será disuadido por el desafío. Al final del día, les importa. Un gran desarrollador no deja que su ego se interponga en la forma de recibir comentarios.
Una buena manera de inculcar una actitud positiva es darles proyectos interesantes para trabajar, darles un sentido de propiedad y felicitarlos por su buen trabajo. Las empresas de nueva creación pueden ofrecer opciones de compra de acciones, pagar a los empleados por trabajar horas extraordinarias, otorgar permisos remunerados compensados o encontrar otras ventajas que garanticen que los grandes programadores se mantengan.
- ¿Qué es un hecho extraño que nadie cree?
- ¿Cómo una persona, en general, descubre en qué trabajar después?
- Cómo saber lo que te enseñan son los hechos.
- ¿Es un buen hábito reducir nuestras expectativas para que no nos decepcionemos?
- ¿Qué es lo más rápido que has dejado un libro (por disgusto o decepción)?
COMO PROBAR ESTA HABILIDAD:
- Preguntas de muestra de la entrevista: 6 preguntas de muestra , 4 preguntas vitales, Q , Respuestas de Quora .
- Otras preguntas:
- ¿Cómo lidias con el conflicto? (aversión al conflicto u orientada a la solución)
- ¿Te consideras afortunado? (engreído o humilde)
- ¿Cómo fue tu viaje a la entrevista? (se quejan o no se preocupan)
- ¿Con qué tipo de personas no te gusta trabajar? (¿Traen a su jefe)
2. HABILIDADES DE COMUNICACIÓN SUPREMAS
Las buenas habilidades de comunicación se correlacionan directamente con las buenas habilidades de desarrollo. Un gran desarrollador puede entender los problemas con claridad, descomponerlos en hipótesis y proponer soluciones de manera coherente. Entienden los conceptos rápidamente, o hacen las preguntas correctas para entender, y no necesitan tener todo escrito en un documento de especificaciones.
Los grandes desarrolladores offshore suelen hablar varios idiomas de forma coherente y se sienten muy cómodos con la documentación en inglés. En el mundo de la tecnología, el inglés es el lenguaje de facto de la mayoría de las interacciones entre la documentación y los desarrolladores. Si no lo hablan lo suficientemente bien, necesitarán intérpretes y traductores, haciendo su conocimiento de segunda mano y rápidamente desactualizado.
COMO PROBAR ESTA HABILIDAD:
- Simule una reunión de scrum y vea cómo interactúan.
- Déles un problema / escenario y vea cómo se comunican de manera efectiva.
- 10 preguntas para hacer
3. EXCELENTE A GESTIÓN DEL TIEMPO Y DE LA TAREA
Los grandes desarrolladores son altamente confiables y respetan los plazos. Saben que los humanos son terribles para predecir el esfuerzo y el tiempo necesarios para completar una tarea, pero se han vuelto buenos al usar herramientas y estrategias (como los Puntos Agile) para ayudarlos.
Los desarrolladores excepcionales son excelentes para administrar a sus clientes o líderes en lugar de que usted los administre.
COMO PROBAR ESTA HABILIDAD:
La prueba está generalmente en el pudín. Una buena manera de probar a cualquier desarrollador sobre estas cualidades es entrar en un contrato a corto plazo y tener un período de evaluación en el que todos proporcionen comentarios sobre el desarrollador. La clave es reconocer las fortalezas y debilidades de su equipo desde el principio y evolucionar al equipo en función del rendimiento. Si alguien no está cumpliendo, quizás deba tomar la difícil decisión de retirarlos del equipo y probar con alguien nuevo.
4. Habilidad de aprendizaje rápido
La mejor habilidad que cualquiera puede tener es saber aprender, y los grandes desarrolladores han dominado la habilidad del autoaprendizaje. Esto generalmente proviene del amor por el conocimiento, la lectura, la resolución de problemas y la inclinación en general. Las nuevas tecnologías los entusiasman y tienen la capacidad de recogerlos rápidamente. La forma en que un gran programador extraerá información disparada y procesará información sobre la marcha, siempre me impresiona.
Mientras que cada programador experimentará una situación en la que él o ella no sabe la respuesta. Los grandes programadores encontrarán diferentes recursos, hablarán con las personas adecuadas y encontrarán la solución sin importar qué.
COMO PROBAR ESTA HABILIDAD:
- Preguntas para hacer , Banco de trabajo
- Entrevistas de casos
- Entrevistas estructuradas de comportamiento.
- Preguntas estimadas
5. EXPERIENCIA TÉCNICA PROFUNDA Y AMPLIA
Los grandes desarrolladores han trabajado con un puñado de tecnologías el tiempo suficiente para convertirse en expertos y son competentes con muchos. Con la experiencia viene la habilidad de reconocer patrones recurrentes. Un gran programador a menudo notará los problemas como algo que han visto antes y ya sabrá cómo rectificarlos. También podrán predecir problemas antes de que surjan.
Seguirán los estándares de codificación y facilitarán la preparación de su código. Escriben documentación para que su trabajo se pueda pasar a otra persona fácilmente. Un desarrollador experimentado está bien versado en las mejores prácticas como desarrollo ágil, software de administración de tareas (Jira, Trello, etc.), control de versiones (si conocen Git, es una señal de que han pasado a sistemas más antiguos como SVN) y trabajan en diferentes entornos (entorno de desarrollo local y conocimiento práctico de la implementación de aplicaciones), así que pregúnteles sobre estas cosas.
COMO PROBAR ESTA HABILIDAD:
- Solicite ejemplos de trabajos anteriores: ¿Pueden mostrar los productos anteriores que han construido, enviar muestras de código o capturas de pantalla de diferentes mejoras?
- Referencias: Pedir referencias. Hablar con empresarios o CTOs para los que han trabajado le dará una indicación de su habilidad técnica y sus otras cualidades intangibles.
- Desafíos de programación: aunque la mayoría de los desafíos relacionados con el trabajo real no se asemejan a los desafíos de programación encontrados en sitios como CodeEval , si un desarrollador puede tener éxito en algunos de los problemas más difíciles basados en algoritmos en un corto período de tiempo, usted sabe que está lidiando con Una persona inteligente que conoce su informática.
- Hackathons: Hoy en día muchas empresas han comenzado a contratar directamente fuera de hackathons. En hackathons puedes ver a programadores altamente talentosos construir software en cuestión de horas. Es una excelente manera de evaluar la eficiencia de la programación, la necesidad de crear software utilizable y qué tan bien funcionan individualmente, así como en equipos.
6. UN BUEN JUGADOR DE EQUIPO
El deseo de compartir desinteresadamente sus conocimientos y ayudar a otros desarrolladores a mejorar es otra excelente calidad de los desarrolladores premium. Ayudan a sus compañeros de equipo cuando se atascan y reciben críticas porque están más interesados en los logros del equipo que en los logros personales. Enseñan nuevas habilidades y escriben documentación que no solo ayuda a los compañeros de equipo, sino a la comunidad de desarrolladores en general.
COMO PROBAR ESTA HABILIDAD: Preguntas para probar habilidades colaborativas
7. ENFOQUE ALTO FINAL DEL USUARIO
Un buen programador hace lo que se les pide, mientras que un gran programador hace lo que es mejor para el usuario final del software (dentro de las limitaciones de la organización). Recomendarán crear la solución que sea mejor para el usuario final, incluso si es una opción más complicada o difícil.
Un gran programador preguntará y querrá saber si la característica que están creando es de gran valor para el usuario y rechazará si no lo hace. Por otro lado, si una característica agrega un alto valor, motivarán al equipo técnico a encontrar una solución.
COMO PROBAR ESTA HABILIDAD: Liderazgo , 50 preguntas principales
OTRAS COSAS A CONSIDERAR:
La pericia está sobrevalorada: como la pericia es importante, no debería ser el único factor que se utiliza para contratar talento técnico. Alguien con una capacidad de aprendizaje rápido, una gran actitud y habilidades de liderazgo emergentes podría ser más creativo con soluciones que son de gran valor para el negocio. La experiencia a menudo viene con el ego, y tomaremos la actitud correcta sobre la experiencia en muchos escenarios.
La importancia de estas cualidades difiere según el tamaño de la empresa: las empresas más grandes y maduras a menudo buscan un conjunto de habilidades específicas porque sus posiciones son más estáticas y definidas. Sin embargo, la capacidad de resolver problemas, aprender nuevas tecnologías, usar muchos sombreros y trabajar en equipos pequeños se vuelve más importante en un escenario de inicio.
¿CÓMO PUEDE UN ALGUIEN SER UN GRAN DESARROLLADOR?
Afile la mente: con la accesibilidad a los cursos en línea, no tiene que ir a la escuela para convertirse en un gran desarrollador. Sin embargo, muchos grandes programadores fueron a buenas escuelas y se especializaron en ciencias de la computación. Obtener un título en ciencias de la computación ayuda a comprender mejor la arquitectura y le brinda una perspectiva holística del mundo de la programación de computadoras. Estar en sintonía con lo último en tecnología ayuda a mantenerse actualizado. Lea muchos artículos y blogs sobre las últimas tendencias en tecnología, pruebe nuevos juguetes durante su tiempo libre, siga comunidades, asista a conferencias y agregue valor a la comunidad escribiendo.
Sigue a tu corazón: hacer cosas que te apasionen te ayudará automáticamente a mejorar. Los mejores programadores son curiosos, aman construir cosas y simplemente aman el impacto que la tecnología tiene en el mundo. Te ayudará a ser más creativo y adquirir habilidades en todos los ámbitos.
Obtenga la experiencia: al comenzar, no acepte un trabajo solo porque le paga bien. Tome un trabajo que le ayude a ganar experiencia significativa en un corto período de tiempo. Incluso es por casi sin paga. Construye esa experiencia. Intenta trabajar para una startup. Trabajo para una gran empresa. Trabajar en todas las industrias.
Forme su caja de herramientas: la tecnología está cambiando muy rápidamente. Se están construyendo nuevas plataformas, se están desarrollando nuevos lenguajes y se están creando productos a un ritmo asombroso. Es importante mantenerse adaptable y abrazar el cambio. Recoge las últimas herramientas y forma tu caja de herramientas. Un gran desarrollador aprende las herramientas desde el principio y luego crea cosas.