it-swarm-es.com

¿Qué diferencia a los programadores excepcionales de los realmente buenos?

Tú sabes quienes son. Son las estrellas de rock de la programación:

  • Codifican 10 veces más rápido.

  • Su código simplemente funciona.

  • No solo conocen su idioma principal por dentro y por fuera, sino que también saben cómo funciona bajo el capó.

  • Saben la respuesta a la mayoría de las preguntas antes de preguntar.

  • Algunos inventaron los principios de programación que todos usamos.

  • Y también tienden a ser inusualmente humildes.

¿De qué se trata esta gente? ¿Hay algo en su proceso de pensamiento que sea fundamentalmente diferente del programador superior al promedio? ¿O son simplemente personas muy talentosas que trabajan duro?

Para decirlo de otra manera: ¿cómo puedo ser como ellos? Sé lo que creo que necesito aprender para ser tan bueno, pero parece que me tomará los próximos diez años aprenderlo, y entonces mi conocimiento será obsoleto.

59
Robert Harvey
  • Humilde: Un programador excepcional nunca afirmará que su código es el mejor, de hecho, siempre buscará una mejor manera (Cada oportunidad que tenga). .

  • Paciente: Un programador excepcional tendrá una paciencia ilimitada (Esto no significa que perderá días en un problema. Ver: Solucionador de problemas) .

  • Solucionador de problemas: Un programador excepcional podrá resolver un problema en minutos que puede llevar días para su programador promedio.

  • Curioso: Un programador excepcional no podrá resistirse a tratar de descubrir por qué ocurre algo.

  • Ingeniero: Un programador excepcional diseñará sistemas en lugar de crear una mezcla de marcos (Esto no significa que no usarán marcos) .

88
ChaosPandion

Golpeas mucho en tu último punto:

"Y también tienden a ser inusualmente humildes".

Creo que es una combinación de humildad, no solo externa sino también dentro de sus mentes. Aceptan estar equivocados, cometer un error y se vuelven muy rápido de la frustración. Muchos programadores intentarán algo, fracasarán y luego se emocionarán muy rápidamente, un estado anatema para escribir un buen código. Tienes que aceptar que no eres perfecto, y que vas a equivocarte (¡a menudo!), Y que lo mejor que puedes hacer es aprender cómo recuperarte rápidamente cuando lo arruinas. Es un humilde confianza, como "Sé que me voy a equivocar, pero también sé que si sigo intentándolo, llegaré allí eventualmente".

Hay un dicho en PNL: "No hay falla, solo retroalimentación". Para ser un programador de estrellas de rock, creo que tienes que aceptar eso. No hay nada que no puedas codificar. Puede ser lento al principio, pero si sigue intentando y se niega a detenerse cuando falla o arruina algo, cumplirá. Y en ese proceso aprenderás todos los trucos mentales que necesitas para convertirte en uno de los mejores.

El consejo es, por supuesto, tan bueno como su fuente, así que ... todo es solo mi opinión.

28
Pax Noctis

Se preocupan profundamente por su código.

25
JaredPar

Personalmente, los mejores programadores que conozco/conocían comprendían los conceptos básicos y NO eran expertos en ningún idioma. Simplemente tenían suficiente experiencia en casi todo. El canónico "Jack of All Trades".

Es más que ciencia fundamental, hay un valor significativo en la experiencia en operaciones reales. Por ejemplo, aquellos que entienden la filosofía de Unix y, por lo tanto, podrían resolver problemas desconocidos con varias herramientas dadas (IOW sabían dónde buscar), superan por mucho al experto Java que codificó una solución roscada y paralela.

Los programadores destacados también respetan a quienes los precedieron. No odian los modelos de datos relacionales ni se encogen cuando ven SQL como una API formal, ni se oponen a FORTRAN en matemáticas. Saben que OO no es el final, y sobre todo entienden que la programación es un ARTE, no una ciencia.

15
Jé Queue

Cuando comencé, estaba trabajando con este chico que pensé que era absolutamente brillante en todo lo que hacía en términos de programación. Es muy probable que todavía lo sea, pero ahora se convirtió en director de una compañía en el sudeste asiático.

De todos modos, mantuvo las cosas simples, y las cosas simples funcionan. Nunca queriendo escribir más líneas de código de las necesarias, todo lo que hizo simplemente funcionó. Estuve jugando para ponerme al día durante un año solo para acercarme a su nivel. Sin embargo, la otra cosa es el tiempo. Había estado haciendo cosas durante mucho más tiempo que yo en ese momento, y había tenido la oportunidad de hacer estas preguntas exactas una y otra vez, hasta que supiera (aparentemente) todas las respuestas.

Tampoco tenía miedo de hacer preguntas. Creo que eso es lo más importante.

11
user2358

Matriz de competencia del programador

Muchos temas para ayudar a identificar cuál es su nivel en temas de programación.

10
Maniero

Aprendí la respuesta a esta pregunta en un libro sobre el póker Texas Hold'em, pero se aplica a todos los esfuerzos frustrantes. Los mejores codificadores nunca se inclinan. Ir a Tilt es el momento en que algo no funciona como esperaba y responde de una manera que crea errores exponenciales en la aplicación general. En los torneos de póker te hace apostar mal y quedarte noqueado.

En la programación, la inclinación te hace arrancarte el pelo y escribir parches de código ridículos que solo funcionan en ciertos casos de tu aplicación. Tilt hace que los programadores ignoren las necesidades del proyecto en su conjunto, buscando la gratificación instantánea para resolver el problema inmediato ahora. Muchas veces el problema se resuelve hoy, pero la aplicación sufre mañana.

Los mejores programadores toman el concepto de inclinación y lo manejan de una manera que les permite ver los problemas desde una perspectiva externa, siempre. Si eso falla, bebe un poco de cafeína.

7
JMC

Programadores excepcionales:

  • Preocuparse por su código
  • Preocuparse por los usuarios que usan su código
  • Preocuparse por las personas que mantendrán su código
  • Preocuparse por la productividad
  • Preocúpese por el proceso, no solo por el producto

Dos cosas sobre el factor "10x":

  1. Tiene que aplicarse de principio a fin. No es bueno escribir código 10 veces más rápido si se tarda 10 veces más en probar, reelaborar y mantener.
  2. Creo que el factor "10x" es un reflejo de lo pobre que es un alto número de programadores en lugar de lo bueno que es un pequeño número de programadores.
6
darreljnz

la mayoría de ellos se ven reservados y nada especial ... algunos se ven súper inteligentes ... prefieren verificar/depurar las cosas dos veces desde todos los puntos de vista posibles, su software no tiene errores en el mundo: p IMO algunos programadores pueden ser más lentos, pero la calidad es mejor, ¡incluso la gente común puede entender cómo funciona su software!

tengo un amigo que escribió su primer programa de ASM a la edad de 10 años, ahora tiene 24 años, no terminó la universidad, pero eso no le impidió crear su propia compañía, ganar millones :) pero por lo que veo, él es diestro en todo :)

los programadores excepcionales probablemente dirían que este código puede codificarse de otra manera, mejor que decir que es totalmente incorrecto una reputación más baja de otros programadores :)

"¿Qué tienen estas personas? ¿Hay algo en su proceso de pensamiento que sea fundamentalmente diferente del programador superior al promedio? ¿O son simplemente personas con mucho talento que trabajan duro?"

creo que nacieron de esa manera, está dentro de su ADN: p No sé sobre su proceso de pensamiento, pero el mejor programador que he conocido tenía epilepsia

3
shegy

Pocas cosas diferencian un excepcional con un típico.

Excepcional:

  1. Muy apasionado por su trabajo y se esfuerza por entregar una obra maestra.

  2. El rendimiento y la calidad son el panorama general en su mente incluso antes de que comience la codificación.

  3. Piensan en la mejora continua después de cada lanzamiento.

  4. Vigilan estrictamente las alternativas y son los primeros en adoptar.

  5. Su tema en la vida profesional es: "Escribir menos transmitir más".

  6. Siguen pensando en perspectivas lógicas incluso cuando no están codificando.

Típico

  1. A veces es algo apasionado pero se esfuerza por cumplir porque es un trabajo después de todo. Si no es una obra maestra, está bien. Al menos entregado a tiempo.

  2. Pensaré en el rendimiento más tarde, de todos modos las PC son lo suficientemente rápidas en estos días.

  3. Mejore solo cuando no quede ninguna opción para guardar un trabajo.

  4. No hay tiempo para profundizar en otras tecnologías. Apéguese a lo que exige su trabajo ahora. Aprenderá otras cosas cuando surja la necesidad.

  5. Su tema es: "Haz lo que se te pide y llega a casa a tiempo".

3
RPK

Los programadores excepcionales aplican Principios espartanos .

Imagen que llama la atención:

enter image description here

Este artículo: http://willcode4beer.com/design.jsp?set=codeReduction

Y esta cita:

Cualquier tonto puede hacer las cosas más grandes, más complejas y más violentas. Se necesita un toque de genio, y mucho coraje, para moverse en la dirección opuesta. - Albert Einstein

2
Ates Goral

1º - Saben lo que se corta cuando se enfrentan a la línea muerta.

0
Gedean Dias

Auto-promoción, y lo digo de la mejor manera posible. Tener un trabajo como la programación, especialmente en un equipo, significa que no es inmediatamente obvio dónde encaja su contribución personal en el panorama general, o quién fue responsable de qué parte. Las personas de las que escuchamos y que conocemos como "grandes programadores" son IMO, aquellos que han dominado el arte de dar a conocer sus contribuciones sin parecer egoístas o egocéntricos al respecto. En muchos casos, esto es creando las herramientas, bibliotecas y software en los que el resto de nosotros confiamos para ganar nuestro pan de cada día.

0
Gaurav

Muy buen artículo relacionado: The Free Electron (de randsinrepose.com)

Pido disculpas por no resumir el artículo aquí, pero los puntos no se separan fácilmente de la prosa.

0
Nicole

Tener la calidad de la automotivación y la autodeterminación, así como tener la voluntad de entrar en un abismo de lo desconocido y sentirse cómodo con estar absolutamente confundido como parte del proceso es enorme. No se trata tanto de la inteligencia inicial como se podría pensar porque el cerebro se vuelve mucho mejor en las cosas que siempre está haciendo y pensando. Vengo de la nada en la universidad y luego me puse muy bien solo por pura persistencia, nunca me rendí, siendo ese tipo que tenía problemas cuando todos los demás se cansaban de tratar de resolverlo. Después de ese tipo de persistencia, los problemas se volvieron cada vez más fáciles y pasaron de ser un novato en la universidad a avergonzar a la mayoría de ellos en este momento. El talento puro no es suficiente y a veces puede llevar a descansar en los laureles.

Además, para Robert Harvey, sigues enlazando mis publicaciones cuando menciono cualquier cosa que tenga que ver con mi CMS que escribí desde cero. Verá varios otros enlaces de listas que pueden o no haber escrito. Estás presionando a las personas que están motivadas, lo cual es irónico que hayas publicado esto. Eres "el hombre" en este pequeño universo y no lees las cosas por mérito, sino que simplemente trabajas y borras a tu antojo. También amas demasiado Star Wars y probablemente agitas tu mano hacia las puertas de apertura automática en la tienda de comestibles, creyendo que tienes la fuerza.

0
Joonha

Se programan exclusivamente por intuición. No es necesario pensarlo solo fluye.

0
John Shaft

pero parece que me tomará los próximos diez años aprenderlo, y luego mi conocimiento será obsoleto.

Va a. Ya has establecido que estos tipos son 10 veces más rápidos, por eso lo aprenden en 1 año y te lleva 10. Para la parte seria de la respuesta, creo que es que ya son súper inteligentes (podrían ser muy exitosos en cualquier cosa), les encanta la codificación, y por alguna razón tienen (o encuentran) una gran cantidad de tiempo libre para practicar la codificación o trabajar en proyectos personales.

Si está haciendo esta pregunta aquí, probablemente no tenga lo que se necesita (no se preocupe, estoy respondiendo aquí, así que probablemente tampoco). No se preocupe, aunque todavía puede llegar a ser loco si ama la codificación.

0
Kevin

Aquí hay muchas publicaciones bien intencionadas sobre Humildad, Ingeniería, Pasión, Paciente, Solucionador de problemas. OMI, todos estos son obligatorios. Sin embargo, describen el 30% de los mejores programadores.

Creo que estás preguntando por los programadores verdaderamente excepcionales, el 1% superior.

Una de las cosas que envidio por el talento ocasional muy raro con el que trabajo es su capacidad para mantener una cantidad muy grande de detalles sobre un sistema complejo en su cabeza al mismo tiempo, y poder recordarlo rápidamente. Creo que puedo hacer esto en ocasiones, tal vez una vez al mes, cuando realmente estoy en la zona. Este sentimiento es maravilloso. El desarrollador en el que estoy pensando parece poder estar en esa zona la mayor parte del tiempo .

Es este rasgo, IMO, además de la capacidad de Humildad, Curiosidad, Ingeniería, Pasión, Paciencia y Solución de problemas lo que los hace verdaderamente excepcionales.

0
Kyle Hodgson

Los codificadores excepcionales tienen influencia en un proyecto más allá del alcance de su propio código y detectan problemas antes de que sucedan debido a su experiencia. Hacen que todos en el equipo sean mejores y salvan sus proyectos de un mal diseño y gestión.

Realmente han creado algo que es excepcional.

0
JeffO