¿Cuál es el conocimiento fundamental que debe tener un gran programador?

El conocimiento y la información están disponibles hoy para todos, pero el carácter es algo más fundamental.

Si bien tener una base sólida en múltiples lenguajes y marcos de programación es claramente vital. Muchas personas tienen estas habilidades y no son grandes programadores.

Después de trabajar con más de 4000 desarrolladores premium en la ruta escalable (descargo de responsabilidad: soy el fundador), he podido identificar 7 cualidades que diferencian a los grandes programadores.

1. ACTITUD POSITIVA
Un gran programador se preocupa por su producto. Son positivos, están dispuestos a hacer todo lo posible para hacer el trabajo y dar lo mejor todos los días. Aunque es importante no agotar a un desarrollador con plazos urgentes frecuentes, a veces esto es inevitable. Cuando necesite llevar un producto al mercado o necesite enviar una determinada característica antes de la fecha límite, el gran programador dará un paso adelante y lanzará el producto siempre que sea posible. Porque les importa Un gran desarrollador no deja que su ego se interponga en la toma de comentarios. Una buena manera de inculcar una actitud positiva es darles proyectos interesantes para trabajar, darles un sentido de propiedad y alabarlos por su 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?)

2. HABILIDADES DE COMUNICACIÓN SUPREMA
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 el 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 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 LA VEZ Y GESTIÓN DE TAREAS
Los grandes desarrolladores son altamente confiables. Tienen una fuerte ética de trabajo y se presentan a las reuniones a tiempo. Una habilidad importante es la capacidad de estimar la cantidad de tiempo necesaria para completar una tarea, comunicarla y cumplirla. Los desarrolladores excepcionales son excelentes para administrar a sus clientes o líderes en lugar de que usted los administre.

CÓMO PROBAR ESTA HABILIDAD: la prueba generalmente está en el pudí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.

4. HABILIDAD DE APRENDIZAJE RÁPIDO
Los grandes desarrolladores suelen ser sorprendentes autoaprendices. Tienen la capacidad de aprender nuevas tecnologías por su cuenta y no se sienten intimidados por las nuevas tecnologías. Tienen la capacidad de extraer datos dispares y procesar información sobre la marcha. 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 pase lo que pase. La mejor habilidad que cualquiera puede tener es saber cómo aprender, y los grandes desarrolladores han dominado la habilidad del autoaprendizaje.

CÓMO PROBAR ESTA HABILIDAD:

  • Preguntas para hacer , bolsa de trabajo
  • Entrevistas de casos
  • Entrevistas estructuradas de comportamiento
  • Preguntas de adivinanzas

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 muchas. Por supuesto, es importante encontrar un programador que haya trabajado en un producto similar al suyo o que utilice las mismas tecnologías. El programador adecuado para su proyecto podrá comenzar a ejecutar porque ya conocen las tecnologías correctas. Seguirán los estándares de codificación y escribirán un código que sea comprensible y comentado cuando sea necesario y que se pueda pasar a otra persona fácilmente. Al combinar sus habilidades cognitivas y su diversa experiencia en la industria, pueden llegar a soluciones óptimas rápidamente. Un desarrollador experimentado conoce bien las mejores prácticas como el desarrollo ágil, el software de gestión de tareas (Jira, Trello, etc.), el control de versiones (si conocen a Git, es una señal de que se han movido en sistemas anteriores como SVN) y están trabajando en diferentes entornos (entorno de desarrollo local y conocimiento práctico de implementación de aplicaciones), así que pregúnteles acerca de estas cosas.

CÓMO PROBAR ESTA HABILIDAD:

  • Pida ejemplos de trabajos anteriores: ¿Pueden mostrar productos anteriores que hayan construido, enviar muestras de código o capturas de pantalla de diferentes mejoras?
  • 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 relacionados con el trabajo real no se parecen a los desafíos de programación que se encuentran en sitios como CodeEval , 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, 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 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.

6. UN BUEN JUGADOR DE EQUIPO
Otra excelente calidad de los desarrolladores premium es su capacidad para ayudar a otros desarrolladores a mejorar. Ofrecen ayuda a los compañeros de equipo cuando están estancados, enseñan nuevas habilidades a otros y escriben documentación que ayudaría a los compañeros de equipo no solo en su organización sino también en la comunidad de desarrolladores en general.

CÓMO PROBAR ESTA HABILIDAD: preguntas para evaluar las habilidades de colaboración

7. ALTO ENFOQUE EN EL USUARIO FINAL
Un buen programador hace lo que se le pide mientras que un gran programador piensa en el usuario final del software y trabaja para resolver sus problemas dentro de las capacidades de la organización. Un gran programador quiere saber que la característica que está creando es de gran valor y se retrasa cuando una característica no crea ningún valor para nadie. A veces, una característica es extremadamente difícil de construir o lleva mucho tiempo. El gran desarrollador comprenderá la necesidad de construirlo y motivará al equipo técnico a encontrar la 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 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 ALGUIEN CONVERTIRSE EN UN GRAN DESARROLLADOR?

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 cosas 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 muy rápidamente. Se están construyendo nuevas plataformas, se están desarrollando nuevos lenguajes y se están creando productos a un ritmo sorprendente. 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.

Honestamente, creo que no es una cosa de conocimiento. El campo está evolucionando tan rápidamente, y durante los últimos 40 años, casi todo lo que sabe ahora quedará obsoleto en 5 años. Por lo tanto, no puede descansar en un conjunto de conocimientos adquiridos y ser un gran programador, al menos no por mucho tiempo.

Siempre competirás con la cosecha de graduados de ciencias de la computación recién acuñadas de este año.

Entonces, en lugar de pensar que se trata de un cuerpo de conocimiento, piense en él como la capacidad de aprender constantemente. Piense en una carrera de 30 años en la que tendrá que desechar su conjunto de herramientas cada 5 o 7 años y aprender uno nuevo para mantenerse competitivo.

Pero en el contexto del cambio constante hay algunas constantes. Cosas como esta siempre serán necesarias:

  • Comunicaciones escritas y presentaciones.
  • Trabajo en equipo
  • Análisis de requerimientos
  • Un enfoque metódico para las pruebas.
  • Liderazgo
  • Gestión del tiempo
  • Y tal vez algunos algoritmos

Estas habilidades (y son habilidades “blandas”) son las que puede desarrollar a lo largo de una carrera. Nunca pasan de moda. Además de eso, aprende el lenguaje / plataforma / metodología del día.

Para recursos, recomendaría cualquier cosa escrita por Gerald Weinberg.

Aquí está la opinión de Peter Norvig: enséñate a programar en diez años

More Interesting

¿Vale la pena asistir a un programa de doctorado para ser cuantitativo en los fondos de cobertura y los bancos de inversión?

¿Qué oferta debo aceptar el puesto de ingeniero de software de Google o Microsoft?

Estoy interesado en ser un programador de computadoras. Sin embargo, tengo algunas preguntas. ¿Se apodera de tu vida? ¿Es mentalmente agotador hasta el punto de que no te molestes en hacer nada después del trabajo?

¿Qué hacen los ingenieros de software 10X en su tiempo libre?

¿Seré un mal ingeniero de software si tengo dificultades en los cursos universitarios de CS más difíciles?

¿Qué tipo de preguntas se esperan para la entrevista telefónica de Software Engineer en Google?

¿Cómo es ser ingeniero de software en Austin?

¿Cómo lidia un gerente de software cuando ha contratado a un ingeniero de software mediocre, que no es bueno, pero no lo suficientemente malo como para calificar para el despido?

¿Cómo lidian los ingenieros de software con una mala valoración y acoso al jefe? ¿Cuándo puede una mala valoración realmente te despide?

¿Por qué estoy estresado para trabajar como ingeniero de software?

¿Qué busca al entrevistar a ingenieros de software y cómo se asegura de poder obtener esa información?

¿Por qué algunos programadores están desempleados?

¿Cuáles son las desventajas de los ingenieros de software de citas?

Cómo convertirse en un ingeniero de software de mente más abierta

Entre ser ingeniero de software y ser un empleado del gobierno, ¿qué campo es mayor?