Cómo saber si estoy trabajando con un mal programador cuando no soy programador

No proporciona suficiente información para realizar una evaluación, pero puede decirle a un buen programador observando su código y verificando si está bien formateado, usa nombres de variables significativos e incluye comentarios sensibles en su código. Incluso si no comprende el código, debería poder darse cuenta simplemente mirando el código (que él escribe, no cosas que otras personas han escrito). Un buen programador también utiliza buenas prácticas como el control de código fuente e incluso un sistema de tickets para registrar problemas.

En este caso particular, la bandera roja más grande que veo es que tienes una sola persona responsable de programar y brindar apoyo a 100 personas. Su gerente debe ser despedido y reemplazado por alguien que entienda que es una mala idea.

Cualquier cosa que no sea trivial requerirá algún nivel de revisión. Además, al cumplir con los roles de soporte y programación (y, aparentemente, el rol de implementación, equilibrio de carga y otras tareas de infraestructura), realmente está haciendo el trabajo de varias personas a la vez y tiene que cambiar el contexto entre ellas constantemente: un fórmula desastrosa para un “trabajador del conocimiento”.

¿Alguna vez has pensado en usar métricas de código? Sitios web como Code Climate. Análisis estático alojado para el código fuente de Ruby, PHP y JavaScript. ofrece herramientas en línea que verifican qué tan bueno / malo es su código con respecto a algunas mejores prácticas. Un buen código no debería ser peor que un B. Además, su desarrollador puede usar gemas como rubocop que también aumentan la calidad del código. Además, estoy de acuerdo con la mayoría de los puntos de Quora User (excepto los comentarios. Un buen código Ruby no necesita eso. Pero tiene razón. Debería poder entender qué hace el código simplemente leyendo nombres de variables, clases y métodos)

Algunos fuera de tema:
RoR, o para ser más precisos, Ruby es más lento que muchos otros idiomas. Pero con respecto a los tamaños de archivo de los que estamos hablando: son muy grandes. El tiempo de espera de la red se puede configurar en el lado del servidor. Extiende esto. Entonces solo importará el tiempo de espera del lado del cliente. Segundo: no sé qué tipo de datos se sincronizan y cómo se sincronizan, pero a veces tiene sentido disparar declaraciones SQL escritas mientras se tienen estos tamaños. Como estándar, ActiveRecord se usa en rieles y eso es f … lento. Por supuesto, tendrá que hacerlo de forma segura (lo que normalmente maneja ActiveRecord) debido al riesgo de inyección de sql, pero si tiene que agregar esa gran cantidad de datos, podría ser una solución. Dependiendo de la tarea, piense en hacer cosas asincrónicas con la ayuda de sidekiq o (quizás mejor) rabbitmq, por ejemplo, si los archivos CSV están cargados y necesitan almacenarse, tome el archivo CSV, póngalo en una cola y deje que un trabajador en segundo plano haga el trabajo cosas pesadas y enviar una notificación al usuario, que todo se hace en caso de que tenga éxito.

Estás en una posición difícil. Espero que estés satisfecho con tu programador en otros aspectos.

Su mejor opción sería involucrar a TODOS en este sistema para que acuerden traer a alguien de afuera para revisar cómo funciona TODO el sistema (no solo el software sino todo el flujo de trabajo y el proceso comercial) y producir un documento sobre cómo funciona. de ustedes pueden entender.

Corre el riesgo de desmoralizar a su programador ONE y alejarlo o asustarlo para evitar hacer CUALQUIER arreglo por miedo a empeorar las cosas. Si pierde su programador, probablemente le tomará de 6 meses a un año para que otro recoja las piezas lo suficiente como para hacer cualquier tipo de cambio significativo sin causar un tiempo de inactividad desastroso.

No eres un programador, por lo que el asesoramiento técnico que se brinda aquí está dirigido a la persona equivocada

Permítanme generalizar y resumir la estructura de esta pregunta.

  • Mi sitio necesita hacer X.
  • Mientras hace X, Y sucede.
  • Y es malo Está dañando mi negocio.
  • ¿Es Y un problema de personal o tecnología?

Esta pregunta esconde algunos supuestos.

  1. La incapacidad para hacer Y puede ser un problema de personal, tecnología o informática fundamental (o leyes de física). Asume que hay alguien o algo a quien culpar cuando X podría ser una idea inviable (o poco práctica dado su presupuesto).
  2. Su programador no puede proporcionarle una explicación satisfactoria de por qué Y es inevitable (es decir, “ok”). Estás asumiendo que Y es tu problema. La incapacidad de su programador para explicarle Y también es un problema (suyo y / o suyo).

Estas suposiciones hacen que sea menos probable que obtenga la respuesta que busca. ¿Desea que le diga que despida a su programador o reescriba el sitio utilizando otra tecnología (que también puede implicar la activación de su programador)?

En lugar de darte una respuesta, aquí hay una manera de encontrar la respuesta que estás buscando.

Pídale a su programador que describa el problema en Quora y StackOverflow. Reserve un tiempo en Codementor | Ayuda instantánea 1: 1 de desarrolladores expertos. Espera las respuestas.

Si su programador encuentra una solución a Y, entonces el problema está resuelto. Volver al trabajo.

Si su programador no encuentra una solución para Y, entonces:

  • Si no puede explicarle por qué no le gustan las soluciones proporcionadas, busque un nuevo programador. Tienes un problema de comunicación.
  • Si ella puede explicarle por qué Y no es factible, entonces ajuste las reglas de su negocio para adaptarse.

Si su programador se niega a pedir ayuda, busque un nuevo programador. Hubris es un problema mayor que la incapacidad de arreglar Y.

La respuesta de James McInich tiene mucho sentido.

Me gustaría agregar que los problemas de tiempo de espera se pueden detectar en varios lugares: registros de base de datos, uso de memoria y registros del procesador. Puede preguntarle al desarrollador si tiene estos registros y si los ha verificado. Tal vez los registros no muestran la información completa o es difícil de ver. Para mejorar esa situación, puede sugerir utilizar una solución de monitoreo.

No es realmente mi área, pero eso suena bastante mediocre. Si tengo razón sobre eso, es una razón para hacer que su código sea de código abierto. No estaría dando ninguna gran ventaja a los competidores. Pero debe considerar el riesgo de ayudar a un nuevo competidor de inicio. Si el sistema funciona a través de Internet público, liberarlo a código abierto hace que sea más fácil hackearlo. Por otro lado, si el código genera interés, puede obtener ayuda (gratuita) para encontrar fallas de seguridad.