¿Por qué hay algunas personas que trabajan muy duro pero que aún no pueden hacer el corte para ser un gran desarrollador?

Para obtener elegancia se requiere práctica, y los programadores que se sabe que producen soluciones elegantes se pueden identificar por las siguientes capacidades:

1. creatividad conceptual

2. pensamiento crítico

3. competencia técnica

4. ingenio de diseño

5. resolución de problemas efectiva

6. Intimidad mutua con la naturaleza del problema en cuestión y del espacio de solución designado.

WRT punto 6: conozca bien el problema y conozca bien el idioma

El método de desarrollo es muy importante: intente formalizar las cosas que permanecen igual, de un proyecto a otro, de las cosas que cambian.

Una sugerencia más obvia es obtener comentarios de tus compañeros o trabajar más con otros. XP (programación extrema) es un buen método a considerar. Además, el conocimiento de los patrones de diseño es muy importante para evitar la piratería innecesaria

Porque como todos los esfuerzos creativos, la habilidad de programación es menos dependiente del “tiempo” y más dependiente de:

  • La capacidad de entender un problema (a veces uno no declarado)
  • La capacidad de solucionar problemas con éxito
  • La capacidad de aprender nuevas habilidades y sintetizar nueva información.
  • La capacidad de encontrar la ruta más eficiente para resolver un problema.
  • La capacidad de aceptar y aprender de errores pasados.
  • La voluntad de mejorar las habilidades de programación en el propio tiempo y el propio centavo.
  • Algunas veces…. suerte

El tiempo empleado no es un buen indicador de éxito o destreza. Es por eso que puedes contratar a alguien con “décadas” de experiencia como programador y, sin embargo, producen software de mierda. Simplemente poner en las horas no es suficiente. De hecho, algunos de los mejores programadores que conozco pueden resolver problemas muy rápidamente. (Esta es la razón por la que abogo por la facturación por hora de los grandes desarrolladores).

Lo creas o no, puedes ser un gran trabajador, pero si ese trabajo duro consiste en repetición y nada creativo … como en una cinta transportadora de fábrica … entonces te quedas donde estás. Y muchas de estas personas están contentas.

Se necesita ambición y motivación natural para tener éxito. Por supuesto, ni siquiera estamos en apoyo financiero.

No lo sé, en realidad nunca he visto a alguien que trabaje duro, pero no me convierta en un buen programador. Eso no quiere decir que no pueda suceder, pero creo que ser un gran trabajador es casi todo lo que necesita para ser un buen programador, suponiendo al menos la inteligencia promedio, por supuesto.

Pienso un par de cosas para recordar:

No se trata de ser un trabajador duro todo el día, se trata de ser un trabajador duro durante 5 o 10 años.

Se trata de saber aprender, algunas personas se sentarán toda la noche leyendo un libro sobre algoritmos o algo así, lo que probablemente no está haciendo casi nada por sus habilidades. Algunas personas trabajarán en un proyecto real del mundo real, que mejorará sus habilidades.

A veces las personas que parecen estar trabajando duro, en realidad no lo son, en realidad simplemente están ocupadas . Están imprimiendo diagramas de flujo, están dibujando diagramas, están mirando a Vim con el color de sintaxis configurado a la perfección . Se pusieron los audífonos y el teclado mecánico preparado para la acción, pero en realidad no tienen un Scooby para programar una computadora. De alguna manera, saber qué es la notación O grande no les ha ayudado a resolver problemas del mundo real.

Creo que la clave es asegurarte de que realmente trabajas duro, no solo de estar ocupado.

Además de lo que otros han mencionado, debe ser un experto en tratar con la abstracción, la piedra angular del software. Y debe ser capaz de construir y mantener modelos mentales elaborados de lo que está sucediendo en sistemas altamente complejos. He conocido a muchas personas que trabajaron duro y tuvieron éxito como desarrolladores. Pero nunca serán excelentes porque, si bien pueden producir instrucciones de bajo nivel que hacen las cosas, no pueden producir ni gestionar abstracciones de mayor nivel. No puedes ser grande sin eso.