Después de trabajar con más de 2.500 desarrolladores de primer nivel, aquí en Ruta escalable (Descargo de responsabilidad: soy el fundador aquí), descubrí que hay ciertos rasgos intangibles que diferencian a los grandes ingenieros de software.
Hacemos grandes esfuerzos para identificar a los programadores de élite porque como Robert. L. Glass dijo: “Los mejores programadores son hasta 28 veces mejores que los peores programadores”
Aquí hay una lista de cosas que buscamos en los ingenieros de software:
- ¿Cómo aprenden los ingenieros de software autodidactas estructuras de datos y algoritmos?
- ¿Cuál es la calidad de los ingenieros de software en Ticketmaster? ¿Tienen buena reputación?
- ¿Hay grandes ingenieros de software que dejan el trabajo para perseguir sus pasiones? Si es así, ¿cuáles son sus historias?
- ¿Puede el software dañar el hardware?
- Si los ingenieros de software son los más venerados en la era de la información, ¿qué profesión dominará la próxima revolución económica?
SE QUEDAN POSITIVOS Y PACIENTES
Un gran programador se preocupa por el usuario final y cómo les sirve el producto. Su dedicación al usuario brilla a través de su trabajo. Son lo suficientemente positivos y pacientes como para resolver los problemas más aburridos y difíciles. Se enorgullecen de su código y disfrutan pulirlo. Cortar esquinas simplemente no es su estilo. Cuando se produce un plazo urgente ocasional, un gran programador demostrará su dedicación y estará a la altura del desafío. (Aunque es justo decir que los plazos frecuentes poco realistas agotarán a cualquier ingeniero)
Un empleador o cliente puede alentar una actitud positiva al dar a los ingenieros proyectos interesantes para trabajar, un sentido de propiedad sobre su trabajo y elogios por el buen trabajo. Las startups pueden ofrecer opciones sobre acciones, pagar a los empleados por trabajar horas extras, proporcionar vacaciones remuneradas remuneradas o encontrar otras ventajas que garanticen que se conserven excelentes programadores.
CÓMO PROBAR ESTA HABILIDAD:
- Preguntas de muestra de la entrevista: 6 preguntas de muestra , 4 preguntas vitales de la entrevista , respuestas de Quora .
- Otras preguntas:
- ¿Cómo manejas el conflicto? (aversión al conflicto u orientación a la solución)
- ¿Te consideras afortunado? (arrogante o humilde)
- ¿Cómo fue tu viaje a la entrevista? (Reclamante o sin preocupaciones)
- ¿Con qué tipo de personas no te gusta trabajar? (¿traen a su jefe?)
EXCELENTES HABILIDADES DE COMUNICACIÓN
Las buenas habilidades de comunicación se correlacionan directamente con las buenas habilidades de desarrollo. Un gran desarrollador es capaz de comprender los problemas claramente, dividirlos en hipótesis y proponer soluciones de manera coherente. Entienden los conceptos rápidamente, o hacen las preguntas correctas para comprender, y no necesitan tener todo escrito en un documento de especificación.
Los grandes desarrolladores offshore generalmente hablan varios idiomas de manera 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 idioma de facto de la mayoría de las interacciones de documentación e desarrollador. Si no lo hablan lo suficientemente bien, necesitarán intérpretes y traductores, haciendo que sus conocimientos sean de segunda mano y rápidamente obsoletos.
CÓMO PROBAR ESTA HABILIDAD:
Simule una reunión 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
EXCELENTE A LA VEZ Y GESTIÓN DE TAREAS
Los grandes desarrolladores son altamente confiables y respetan los plazos. Entienden que los humanos son terribles para predecir el esfuerzo y el tiempo necesarios para completar grandes proyectos complejos, por lo que utilizan herramientas y estrategias (como los puntos ágiles) para ayudarlos.
Me parece que los desarrolladores excepcionales son excelentes para administrar a sus clientes o líderes en lugar de lo contrario. Facilitan la vida de todas las personas con las que trabajan.
CÓMO PROBAR ESTA HABILIDAD:
La prueba suele estar en el budín. Una buena manera de evaluar a cualquier desarrollador en estas cualidades es firmar un contrato a corto plazo y tener un período de evaluación en el que todos brinden comentarios sobre el desarrollador. La clave es reconocer las fortalezas y debilidades de su equipo desde el principio y evolucionar el equipo en función del rendimiento. Si alguien no está cumpliendo, quizás deba tomar la difícil decisión de retirarlo del equipo y probar a alguien nuevo.
HABILIDAD DE APRENDIZAJE RÁPIDO
La mejor habilidad que cualquiera puede tener es saber cómo aprender, y los grandes desarrolladores han dominado la habilidad del autoaprendizaje. Esto generalmente proviene de un amor por el conocimiento, la lectura, la resolución de problemas y el aprendizaje en general. Las nuevas tecnologías los entusiasman y tienen la capacidad de aprenderlos rápidamente. La forma en que un gran programador extrae datos dispares y procesa información sobre la marcha, siempre me impresiona, mientras que cada programador experimentará una situación en la que no sabe la respuesta. Los grandes programadores encontrarán diferentes recursos, hablarán con las personas adecuadas y encontrarán la solución pase lo que pase.
CÓMO PROBAR ESTA HABILIDAD
- Preguntas para hacer , bolsa de trabajo
- Entrevistas de casos
- Entrevistas estructuradas de comportamiento
- Preguntas de adivinanzas
HABILIDAD Y EXPERIENCIA TÉCNICA DE PROGRAMACIÓN
Los grandes desarrolladores son expertos en un puñado de lenguajes de programación y son competentes en muchos otros. Han desarrollado la capacidad de predecir y reconocer problemas de codificación.
Los grandes desarrolladores de software siguen los estándares de codificación y escriben documentación para que su trabajo pueda pasarse a otra persona fácilmente.
Un desarrollador experimentado está bien versado en las mejores prácticas como desarrollo ágil, Scrum, software de gestión de tareas (Jira, Trello, etc.), control de versiones (si conocen a Git, es una señal de que se han movido en sistemas anteriores como SVN), y trabajar en diferentes entornos (entorno de desarrollo local y conocimiento práctico de implementación de aplicaciones).
CÓMO PROBAR SUS HABILIDADES DE PROGRAMACIÓN:
Desafortunadamente, ningún conjunto de preguntas se acercará a pedirle a un desarrollador que construya algo. Pero si está buscando evaluar sus habilidades de programación utilizando preguntas de prueba, pruebe Codility o HackerRank. Estas plataformas ofrecen desafíos de codificación en forma de pruebas. Puede crear desafíos innovadores adaptados a ciertas áreas, clasificar a los candidatos tecnológicos a través de tareas de programación objetivas y automatizar gran parte de su reclutamiento.
Otras herramientas que puede usar para las preguntas del examen son:
- Coderpad: utilizado por AirBnb, Quora, Hired, Lyft.
- Entrevista de código: servicio principal + complementos IDE gratis, paga por las características premium.
- Entrevista Zen: míralos resolver problemas en tiempo real, se puede hacer de forma remota.
- Pida ejemplos de trabajos anteriores: ¿Pueden mostrar productos anteriores que hayan construido, enviar muestras de código o capturas de pantalla de diferentes mejoras? Puedes pedirle a un desarrollador de confianza que revise esto.
- Referencias: pedir referencias. Hablar con emprendedores o CTO 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 que enfrentan los programadores durante proyectos reales no se parecen a los desafíos de programación que se encuentran en sitios como CodeEval. Sin embargo, si un desarrollador puede tener éxito en algunos de los problemas basados en algoritmos más difíciles en un corto período de tiempo, sabrá que está tratando con una persona inteligente que conoce su informática.
- Hackathons: hoy en día, muchas empresas han comenzado a contratar directamente desde hackathons. En los 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 y en equipo.
Un buen jugador de equipo
Un gran ingeniero de software compartirá generosamente sus conocimientos y ayudará a otros desarrolladores a mejorar. Valoran el logro del equipo sobre el logro personal, lo que significa que ayudan a los compañeros de equipo cuando se atascan y toman bien las críticas. Se toman el tiempo para enseñar nuevas habilidades y escribir documentación que no solo ayuda a los compañeros de equipo, sino a la comunidad de desarrolladores en general.
CÓMO PROBAR ESTA HABILIDAD:
Preguntas para evaluar habilidades de colaboración
ALTO ENFOQUE DE USUARIO FINAL
Un buen programador hace lo que se le pide, mientras que un gran programador hace lo que es mejor para el usuario final (dentro de las limitaciones de la organización). Recomendarán construir 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 construyendo es de gran valor para el usuario y presionará volver si no lo hace. Por otro lado, si una característica agrega un alto valor, motivará al equipo técnico a encontrar una solución.
CÓMO PROBAR ESTA HABILIDAD:
Liderazgo, 50 preguntas principales
OTRAS COSAS A CONSIDERAR:
La experiencia está sobrevalorada: aunque la experiencia es importante, no debería ser el único factor que utilice para contratar talento técnico. Alguien con una capacidad de aprendizaje rápido, 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 compañías 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 ALGUIEN CONVERTIRSE EN UN GRAN INGENIERO DE SOFTWARE?
Agudice 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 programadores excelentes fueron a buenas escuelas y se especializaron en informática. 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 sincronizado 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 proyectos que te apasionen automáticamente te ayudará a mejorar. Los mejores programadores son curiosos, les encanta construir cosas y les encanta el impacto que la tecnología tiene en el mundo. Le 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 lo ayudará a obtener una experiencia significativa en un corto período de tiempo. Incluso es por casi no pagar. Construye esa experiencia. Intenta trabajar para una startup. Trabajar para una gran empresa. Trabajar en todas las industrias.
Forme su caja de herramientas: la tecnología está cambiando 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 aceptar el cambio. Elija las últimas herramientas y forme su caja de herramientas. Un gran desarrollador aprende las herramientas desde el principio y luego crea cosas.