¿Cómo consideraría que un programador es malo en lo que está haciendo?
Si es posible ... ¿Cómo debería mejorar?
¿Cómo consideraría que un programador es malo en lo que está haciendo?
Si es posible ... ¿Cómo debería mejorar?
Respuestas:
Cuando no aprenden de sus errores y de las revisiones por pares.
Todos somos verdes en algún momento; sin embargo, si no mejora o intenta mejorar, entonces es un mal programador.
Un programador que no sabe lo que no sabe y no está interesado en averiguarlo.
Una gran señal de advertencia es si son programadores de "culto a la carga", lo que significa que hacen cosas pero no saben por qué hacen esas cosas (es solo "magia"). Gran publicación de Eric Lippert aquí .
Del artículo:
programadores que entienden lo que hace el código, pero no cómo lo hace.
Un gran consejo para mí es cuando te hacen preguntas a ti o a los demás programadores que muestran claramente que han hecho un esfuerzo absolutamente cero para resolverlo por su cuenta.
Un corolario es cuando hacen la misma pregunta de programación varias veces indicando que no están internalizando la información.
Cuando les lleva mucho tiempo resolver el problema de FizzBuzz.
Programadores que se niegan a aprender nuevas tecnologías / idiomas e insisten en atenerse a lo que ya saben.
Anexo: (agregando lo que el guión dijo a continuación en los comentarios)
Una extensión de esto son las personas que conocen un subconjunto de la funcionalidad de alguna tecnología pero no muestran deseos de aprender nada más al respecto. Lenguaje de programación, editor, otras herramientas ...
Cuando un miembro del equipo es el desarrollador productor negativo .
|# Lines Written| - |# Lines of bugs introduced| - |# Lines of rework required| < 0
Lo que significa que el resto de su equipo tiene que hacer más trabajo debido al mal desarrollador. NNPP
Cuando producen cosas que pertenecen a The Daily WTF de forma regular.
Cuando saben que hay mejores formas de hacer las cosas, pero aún así se niegan a hacerlo, incluso cuando el tiempo lo permite.
Personalmente, creo que cualquier programador que pueda mirar su propio código que escribieron hace un tiempo y no encontrar algo malo no es bueno. "Un tiempo" puede escalar con la experiencia ... Yo diría entre unas pocas semanas hasta un año más o menos.
Cuando era líder de equipo en una tienda pequeña, había varias personas a las que tuve que reasignar (ni yo ni mi supervisor directo teníamos la capacidad de rescindir el contrato sin una tonelada de burocracia y un montón de documentación) o no tener renovación de contrato. al final del compromiso actual. Algunos de los tipos enumerados también funcionaron para otros líderes de equipo, y prácticamente adoptaron la misma opinión. Cosas que llevaron a la gente a la categoría "Programador malo" en mi libro:
Estos son solo algunos de los malos personajes con los que he tenido que trabajar ...
/ s / BezantSoft
Además de la evidente falta de conocimiento / habilidad, un programador es malo, si su código es más difícil de leer y / o mantener de lo que debería ser.
Cuando nadie más puede leer su código. No importa lo brillante que seas; Ningún programador es una isla.
Para mí hay dos categorías para programadores: solo y en equipo.
Los malos programadores solos son
Los programadores de equipos malos son aquellos que entran en la categoría de programadores solos malos, incluidos
No están dispuestos a admitir que no saben la respuesta y / o no están dispuestos a buscar cosas.
Si no lo sabes, no te des por vencido, descúbrelo y hazlo.
Una gran señal de advertencia en mi experiencia es cuando no comentan sus hacks ...
Sabes a lo que me refiero: cuando te obligan a hacer algo muy hacky porque simplemente no hay mejor manera de hacerlo.
Los buenos programadores odiarán tener que hacerlo y escribir comentarios en línea que digan cuánto odian poner en ese tipo de pirateo, pero no hay otra opción. Los malos programadores simplemente lo introducirán y no lo comentarán.
Silencio obviamente cuando un programador escribe MUCHO código. Funciones muy grandes, tal vez copiar / pegar líneas o bloques de código, usando mucho más si es necesario, etc. Esto podría deberse a que el programador no conoce una función estándar para hacer lo que quiere, pero la mayor parte del tiempo no lo es.
Estoy moviendo mi respuesta aquí desde un tema duplicado cerrado que preguntó ¿Puedes reconocer si eres un mal programador? El otro tema se estaba cerrando mientras redactaba mi respuesta. Mi respuesta aborda más directamente la pregunta, ya que fue formulada por el otro autor de la pregunta y se leerá mejor si entiendes eso.
¡Suspiro! ¡Una parte de mí no quería agregar a este tema ya ocupado, pero la otra parte ganó! ¿Por qué ganó? ¿Por qué me molesto en agregar aún más palabras a este multílogo particular? Bueno, porque, hasta cierto punto, puedo tener una opinión ligeramente diferente sobre esto que los muchos comentaristas anteriores.
El binario funciona muy bien en las computadoras: es '1' o '0', "encendido" o "apagado". Podemos abstraer y codificar mucha información usando esos dos famosos estados. Pero, no tiende a funcionar tan bien para asuntos humanos: "bueno" o "malo", "sano" o "loco", "bueno" o "malo", "inteligente" o "estúpido", "gordo" o "delgado", "vivo" o "muerto"? Este tipo de evaluaciones polarizadas siempre han dejado al ser humano afectuoso parte de mí terriblemente insatisfecho. Por los esquemas de medición que elijo aplicar, generalmente encuentro que las respuestas a tales contrastes en realidad se encuentran en algún lugar a lo largo de un continuo entre uno de esos polos y el otro, no en ninguno de los extremos.
He luchado con esta tendencia hacia la polarización durante bastante tiempo, ahora, y mi solución personal es que encuentro mucho más útil aplicar tres palabras a cualquier evaluación: "¡ hasta qué punto!"
Entonces, mi respuesta a su pregunta es sugerirle que lo reformule y preguntarse esto: "¿Hasta qué punto soy un mal programador?" O, mejor aún, preguntar en la otra dirección: "¿Hasta qué punto soy un buen programador?" Si persigue la verdad, probablemente se ubicará en algún lugar a lo largo de un continuo entre ser un programador "malo" y uno "bueno". Luego, una vez que logre ubicar aproximadamente dónde se encuentra a lo largo de este camino, probablemente pueda identificar un punto algo más cercano al "buen" final, un punto en el que le gustaría encontrarse en el futuro cercano.
Si no establece ese punto demasiado lejos, probablemente pueda poner su extremo trasero en marcha y comenzar a moverlo en esa dirección. Si logra iterar este algoritmo heurístico bastante simple varias veces, ¡pronto puede encontrarse con una programación demasiado ocupada para tener que hacer esta pregunta nuevamente! Ah, y probablemente progresará más rápido si comienza a golpear el código en un teclado tan rápido y con la mayor frecuencia posible; y, si te tomas un pequeño descanso de vez en cuando, ¡lee un código de alta calidad escrito por tus compañeros! En estos días de desarrollo dinámico de código abierto, no tiene escasez de código libre y exquisito para aprender.
Por lo tanto, te recomiendo encarecidamente que pruebes mis tres pequeñas palabras, "en qué medida", ¡y veas cuán lejos en una buena dirección pueden llevarte!
Alguien que dice "No se puede hacer".
En mi opinión, se trata de resolver problemas, la herramienta debería ser mucho menos relevante que realmente hacer el trabajo. Si tengo que resolverlo usando MS-Access o lenguaje ensamblador, es cuestión de tiempo y dinero, no de "No se puede hacer"
Una señal de advertencia se centra demasiado en la forma académica y "adecuada" de hacer las cosas, y no se enfoca lo suficiente en hacer el trabajo.
Si solo conoce la sintaxis de un lenguaje pero no conoce los conceptos básicos de los algoritmos.
Aquellos que no conocen principios como SOLID, DRY, OOP, etc. Es importante tener una buena comprensión de los principios y fundamentos de programación en lugar de conocer tecnologías específicas. Aquellos con una base sólida podrán aprender nuevos temas fácilmente y producirán un mejor código.
Una señal de reconocimiento inmediato es alguien que dice: "No entiendo por qué no funciona. Hice todo bien".
Una cosa que distingue a un mal programador de un programador novato es la obstinada insistencia en implementar su sistema favorito en cualquier idioma y API en el que estén trabajando.
Una vez heredé un sistema donde el desarrollador anterior volvió a implementar (en Java) un gran conjunto de la API Ashton Tate DBase III + en capas sobre la biblioteca de acceso dbf personalizada. No se utilizó ninguno del marco de colecciones de Java.
Esto fue para que pudiera escribir una aplicación Java / swing que se viera y actuara como una aplicación DBase III + (o posiblemente clipper).
Las aplicaciones que escribió en este sistema tenían menús de barra lite y abrirían un formulario de ventana completa con una fila de botones en la parte inferior cuando navegaste por la barra lite a la opción. Era como una pequeña máquina del tiempo desde la década de 1980.
El hombre era claramente un desarrollador experto. Sabía lo suficiente como para poder escribir todo el sistema él mismo en el plazo de ese proyecto. También pudo reutilizarlo en algunos otros sistemas internos.
Pero fue un programador horrible porque su código hizo un mal uso de las características de los sistemas en los que trabajó. Estaba más dispuesto a pasar 3 meses en una biblioteca personalizada de dudoso beneficio que aprender Java / Swing / SQL.