Como la mayoría de las personas, pienso en mí mismo como un poco por encima del promedio en mi campo. Me pagan bien, recibí promociones y nunca tuve un problema real para obtener buenas referencias o conseguir un trabajo.
Pero he estado lo suficientemente cerca como para notar que muchos de los peores programadores con los que he trabajado pensaron que eran algunos de los mejores. Los programadores malos que están rodeados de otros programadores malos parecen ser los más engañados.
Ciertamente no soy perfecto. Sí cometo errores. Echo de menos los plazos. Pero creo que hago aproximadamente el mismo número de movimientos de cabeza hueca que hacen "otros buenos programadores". El problema es que yo defino "otros buenos programadores" como "personas que son como yo".
Entonces, me pregunto, ¿hay alguna forma en que un programador pueda hacer algún tipo de autoevaluación razonable? ¿Cómo sabemos si somos buenos o malos en nuestro trabajo?
O, si términos como bueno y malo están demasiado mal definidos, ¿cómo pueden los programadores identificar honestamente sus propias fortalezas y debilidades, para que puedan aprovechar las primeras y trabajar para mejorar las últimas?
fuente
Respuestas:
Un buen programador entiende que tiene que continuar aprendiendo y creciendo. Se esfuerzan por hacer lo mejor posible en cada esfuerzo, admiten fracasos y aprenden de ellos.
Son extraordinariamente comunicativos. No solo son capaces de explicar términos técnicos complejos a un laico, sino que se esfuerzan por actuar como el defensor del diablo de su propia idea para asegurarse de que están dando las mejores opciones a su cliente.
Los mejores programadores saben y aceptan que hay más de una forma de hacer las cosas, que no todos los problemas son un clavo, y que debido a que siempre hay una mejor manera de hacer algo que la forma en que estaban planeando, constantemente buscan aprender nuevas técnicas. , tecnologías y comprensión.
A un buen programador le encanta programar, y lo haría en su tiempo libre, incluso si ya pasan más de 80 horas a la semana programando.
Un buen programador sabe que él / ella no es un gran programador. Los grandes programadores realmente no existen, solo hay quienes dicen ser excelentes y aquellos que saben que no son excelentes.
fuente
Como Paul Graham señala elocuentemente en este podcast , no puedes. Solo tus compañeros de trabajo pueden decírtelo.
fuente
Siempre he descubierto que es más fácil juzgar tu desempeño haciendo dos cosas.
El problema, por supuesto, es encontrar buenos programadores, y luego ser un buen programador tampoco se trata solo de codificación. Debe poder trabajar bien en grupos, pero también puede trabajar bien solo.
Ahora, en aras de salir del tema, citaré a Robert A. Heinlein y su punto de vista sobre el tema:
fuente
Esta es la Matriz de Competencias del Programador solo para usted: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
fuente
Jeff tiene una de mis publicaciones de blog favoritas sobre este tema ... ¿Por qué soy el mejor programador del mundo?
"... no es nuestro trabajo ser mejores que nadie; solo necesitamos ser mejores que hace un año".
fuente
Creo que el hecho de que estés haciendo la pregunta demuestra que no eres un mal programador, así que, en mi opinión, estás a medio camino. :)
Los malos programadores siempre piensan que son grandes programadores, en mi experiencia.
fuente
La declaración de Nick "Los malos programadores siempre piensan que son grandes programadores ..." se explica por el efecto Dunning Kruger , que generaliza que las personas que saben un poco sobre un tema a menudo sobreestiman cuánto saben realmente.
Ser un poco gracioso ... cuanto menos creas saber, más probablemente harás ... a menos que, por supuesto, seas un idiota muy consciente de ti mismo.
Respondiendo la pregunta original, aunque tiendo a pensar que la mayor influencia (no control) que tienes generalmente es un buen indicador. Si ve que otros siguen su ejemplo o retoman sus prácticas, está en el camino correcto.
fuente
La respuesta que obtuvo más votos positivos es realmente angustiante. Básicamente dice que no tienes vida fuera de la programación. ¿Qué hay de la familia? ¿Comunidad? ¿Aficiones? ¿En qué tipo de profesión estamos en donde tienes que preocuparte hasta el punto de la obsesión solo para ser considerado "bueno"? Realmente creo que necesitamos tener alguna perspectiva aquí.
fuente
Puedes intentar competir en los concursos de algoritmos de TopCoder .
fuente
Esa sola comprensión te convierte en un mejor programador que la mayoría de los malos programadores.
Muchos de los peores programadores tienden a pensar que ya saben todo lo que hay que saber y no son conscientes de sus limitaciones. Como resultado, nunca mejoran sus habilidades.
fuente
Si miras tu código de, digamos hace un año, y piensas, por Dios, podría haberlo hecho mucho mejor, probablemente estés bien :).
fuente
Aquí hay algunos ejemplos de la vida real de mala programación. Por supuesto, un código similar estaba en todo el lugar copiado / pegado en 100 lugares. Guy fue despedido, pero he oído que consiguió un buen trabajo nuevamente. Disfrutar:
una)
si)
C)
re)
Si crea este tipo de código, detenga la programación. Si no ve nada extraño en este código, detenga la programación. De lo contrario, no eres malo, así que incluso podrías ser bueno :)
EDITAR: Para responder a los comentarios: conseguí trabajo antes de graduarme, y este tipo ya tenía algunos años de experiencia en programación. Lo despidieron unos meses después de que me empleé, así que no estaba en condiciones de dar clases particulares a nadie. Los ejemplos anteriores fueron solo de la parte superior de mi cabeza: cada paz de código que tocó tenía defectos de varias maneras imaginativas. La mayoría de las cosas comenzaron a asustarse después de que él se fue de la compañía, porque solo entonces otras personas vieron algunas partes del código. Generalmente es un buen tipo, es agradable hablar con él, etc. pero NUNCA será un buen programador, así como yo nunca seré un buen pintor, escritor o lo que sea.
Para contrastar esto con otro ejemplo, el tipo que vino a reemplazarlo también era estudiante en ese momento. Estudió la universidad más famosa por la gestión que la programación. No es demasiado geek en el sentido de que programó cualquier cosa por diversión o se sentaría en casa y leería sobre Java o la programación, pero lo está haciendo bien. Se ajustó rápidamente y comenzó a producir código útil y mantenible. Algunas personas pueden hacer eso, otras no, solo pregunte diariamente.
fuente
instance
campo nunca tiene asignada unaType
instancia, por lo que siempre permanecenull
=)Hay algunas cosas que puede probar para obtener una mejor idea de cómo se acumula.
(Puse eso último porque en mi última compañía, un programador recibió al "desarrollador del año" dos veces en tres años. Después de irse, encontramos al menos 20 fragmentos de código dignos de TDWTF. Desarrolló código rápidamente , pero no necesariamente bien La gerencia simplemente no sabía la diferencia).
fuente
Permita que otros desarrolladores con los que respete trabajen o vean su código.
Haga que la gente realmente use lo que le gusta y vea lo que piensa.
- Kevin Fairchild
fuente
¿Puedes entender esto?
:-)
fuente
Solo el simple pensamiento de que necesita autoevaluarse lo coloca por encima del resto.
Una forma en que siempre me juzgo es escuchar lo que mis compañeros de trabajo tienen que decir sobre mí. El truco está en encontrar a las personas adecuadas.
fuente
Siempre es subjetivo quién es un buen programador. Estoy de acuerdo con Nick en que simplemente hacer la pregunta es un paso en la dirección correcta. Creo que el deseo constante de aprender más y mejorar es lo que hace a un buen programador.
fuente
Para mí, los mejores programadores nunca buscan trabajo. Tienen ofertas permanentes para nuevos puestos solo en función de su reputación. Por lo tanto, un buen programador puede tener ofertas de empleadores anteriores para regresar, si así lo desea. O un buen programador habría tenido preguntas de ex compañeros de trabajo acerca de venir a trabajar para ellos en una nueva empresa.
En términos de fortalezas / debilidades, probablemente ya las conozca. Si no, pregúntale a una persona de mayor rango en tu equipo. Ni siquiera tiene que ser un desarrollador. Un buen gerente de proyecto conoce las fortalezas / debilidades de los programadores. Además, los rasgos que definen a un buen programador no se limitan solo al código. La comprensión del negocio, las habilidades de comunicación, el juicio, etc. se realizan fuera de su IDE.
fuente
Creo que se trata de preguntarte cómo puedes saber si eres una buena persona.
Creo que, desafortunadamente, la respuesta es que solo otras personas creíbles pueden decirte eso. No creo que sea algo que pueda determinar con precisión por sí mismo (al menos es muy difícil, pero creo que podría ser imposible).
fuente
Simplemente diría: si eres apasionado (quiero decir, REALMENTE apasionado) sobre lo que haces, si eres flexible (otro idioma, nueva tecnología, nueva versión completa de un proyecto antiguo, ¡hagámoslo!), si sigues aprendiendo y mejorar tus habilidades y nunca, nunca pienses que eres lo suficientemente bueno como para detenerte, ¡entonces eres un buen programador!
fuente
El 95% de todos los programadores piensan que se encuentran entre los 5% mejores programadores, el otro 5% son gerentes. Entonces, si usted es un gerente, probablemente no sea un buen programador, de lo contrario, probablemente lo sea.
fuente
Creo que es más una cuestión de lo que haces con tus habilidades de programación. Ser un gran programador está bien, pero ¿qué importa si está codificando software bancario todo el día (sin ofender). Simplemente no cuadra.
Para demostrarte a ti mismo que eres un buen programador, emprende un proyecto paralelo interesante y difícil. Esto muestra algunas cosas: está interesado en programar en su propio tiempo libre y realmente disfruta el tema; esto es esencial para ser un buen programador. Muestra versatilidad porque puede extender sus habilidades más allá de lo que hace en su entorno de trabajo. También muestra motivación y creatividad: ha definido un problema por su cuenta y está tomando medidas para resolverlo.
Todos estos aspectos definen un buen programador para mí.
fuente
Mi respuesta será políticamente incorrecta. Sin embargo, en realidad soy el fundador de una startup y mi trabajo es contratar a los mejores programadores.
¿Cómo sé qué personas serán buenos programadores o pueden ser buenos programadores?
1 palabra: IQ.
IQ es para programar como la altura es para jugadores de baloncesto.
Pondría las habilidades matemáticas como otro indicador más políticamente correcto. Mis profesores de informática me dijeron que hay un criterio que predice correctamente quién tendrá éxito en los cursos de programación. Puntajes de matemáticas en la escuela secundaria. Esos son efectivamente IQ de todos modos.
Esto puede ser una sorpresa. Se nos dice que programar es un trabajo de grado universitario. Adivina qué, no me importa el grado. Solo me importan 3 cosas.
Lamentablemente, el coeficiente intelectual solo mide una cosa. Entonces hago algunas pruebas.
Le hago preguntas a la gente. Pregunta simple que espero que el niño de la escuela primaria pueda responder.
Hago preguntas como:
Si nos fijamos bien, esas preguntas no requieren creatividad en absoluto. Solo sentido común. Cualquier niño de primaria con coeficiente intelectual puede responder eso.
La mayoría de los graduados universitarios no pueden. Ahora imagina si alguien no puede responder eso. ¿Puede él programar? Piénsalo. ¿Con qué frecuencia tendrá que especificar qué debe hacer?
También puede hacer preguntas como Microsoft que requieren creatividad. Puede hacer preguntas sobre cómo pesar 8 bolas en una balanza para saber cuál es la más pesada. El problema con tales preguntas es que involucra suerte. Sin embargo, algunos son bastante fáciles, debería ser un requisito mínimo.
Conseguir un programador increíble puede mejorar la moral de otros programadores. Obtener programadores de una ley puede bajar la moral de todos los demás.
Después de que las personas puedan responder preguntas como esa, lo cual es muy fácil, les haría escribir un código de Google Jam.
Los buenos programadores pueden resolver el código de Google Jam y pueden predecir qué problemas son más fáciles.
fuente
En mi opinión, eres un buen programador si
-Tienes un fondo teórico de sonido. Reinventar la rueda, así como un algoritmo o un marco, es una pérdida de tiempo, la mayoría de las veces.
-puedes ver cosas y problemas desde una perspectiva sesgada a veces. Esto puede llevarlo a encontrar soluciones innovadoras.
-Usted gasta tiempo, dinero y esfuerzos para tener las mejores herramientas y las mejores habilidades actualizadas.
-su código es fácil de modificar. Si diseña un código limpio, elegante y comprensible, modificarlo no será doloroso.
-si su tasa de código / errores es razonablemente alta. Sé que esto puede parecer trivial, pero conozco a muchos desarrolladores creativos y hábiles que, sin embargo, son muy propensos a cometer errores triviales. esto perjudica enormemente su efectividad y utilidad.
-la gente a tu alrededor sabe que puedes ayudar a decidir qué opciones hacer
-puedes resolver problemas usando diferentes herramientas. los malos programadores siguen usando la misma herramienta (ya sea un lenguaje o una tecnología o una arquitectura, etc.) para cualquier problema que tengan
-Sigue aprendiendo, tiene curiosidad.
-Te diviertes la programación, después de todos estos años.
fuente
... mi conclusión es que los buenos programadores tienen un salario bajo y hacen poco ruido ... :)
fuente
Mejor programador: completa la tarea con el menor número de sentencias de código a tiempo.
fuente
¿Cuántos errores tiene su código por alguna métrica? (es decir, errores por línea) ¿Qué cantidad de código debe recodificarse cuando se deben agregar nuevas funciones? ¿Sus compañeros de trabajo tienen problemas para modificar su código?
En última instancia, la pregunta es casi imposible de responder dado que la pregunta de "qué es el código de calidad" sigue siendo un tema muy debatido después de todos estos años.
fuente
Realmente me gusta lo que Adam V dijo anteriormente.
Además de lo que otros han dicho, observe el mantenimiento y el historial de soporte de su trabajo. Si su código tiene grandes requisitos de mantenimiento y se está reparando constantemente, o es difícil de cambiar, esos pueden ser indicadores de su calidad. Pero estos también pueden ser indicadores de requisitos bajos.
fuente
Es muy difícil autoevaluarse. Las personas incompetentes tienden a tener evaluaciones tremendamente infladas de sus propias habilidades.
Una buena métrica es si otras personas a las que respetas como programadores quieren trabajar en / con el código que has escrito. Dada la oportunidad de trabajar directamente con usted, o de heredar el código que ha escrito, ¿lo rechazará? De acuerdo a regañadientes? ¿O aprovecha la oportunidad de aprender de tu trabajo? Esta técnica funciona aún mejor si es un compañero, no un subordinado o alguien que cree que puede ser beneficioso para ti hacerte sentir bien.
fuente
Si realmente quiere averiguarlo, envíe un código a sus pares y solicite una revisión (constructiva) del código. En el peor de los casos, aprendes algo. El mero hecho de que estés aquí en este sitio buscando la iluminación ya te distingue de las masas sin lavar. (a menos que solo estés aquí para acariciar tu ego. :-)
fuente