No tengo más remedio que trabajar por mi cuenta, y no puedo encontrar una solución adecuada para revisar mi trabajo, verificar la cordura, tener a alguien con quien intercambiar ideas, discutir las mejores prácticas, etc.
Pensé que obtendría una respuesta a través del artículo de Jeff Atwood: En Programación, One Is The Loneliest Number , lo mejor que pude encontrar sobre el tema, pero resultó que solo reiteraba mi pregunta.
Sé que los sitios de Stack Exchange como este, y la revisión de código son una respuesta potencial obvia, pero como muchos apreciarían, está lejos de ser ideal:
Si bien no puedo enumerar todos los escollos, a menudo, formular una pregunta y encuadrarla en un problema autónomo a menudo requiere tanto trabajo que para cuando la has preparado lo suficiente, has respondido tu propia pregunta en más tiempo de lo que hubiera tomado de otra manera. Además, ocultar detalles para hacer una pregunta bien definida elimina la posibilidad de que alguien descubra problemas en los que no había pensado. Además, si bien no puedo identificarlo, la capacidad de respuesta de la conversación libre no puede igualarse con ninguna forma de discusión textual en Internet que se me ocurra. Por último, pero no menos importante, no quiero publicar todo mi proyecto para que el mundo lo vea por el resto de la eternidad, por razones obvias.
¿Hay alguna otra respuesta además de pagarle a un consultor para que revise mi código?
Respuestas:
He estado en tu lugar y no creo que haya una solución fácil. Pagar a un consultor para que revise su código no es una buena forma de gastar dinero. Si su problema es que se siente solo y no tiene a nadie con quien hablar sobre programación, entonces no puedo ayudarlo, pero si está realmente interesado en mejorar la calidad de su código, lo mejor que puede hacer es configurarlo a un lado y volver a eso en una semana más o menos. Si el código es realmente malo, será obvio porque no podrá darle sentido y puede comenzar a refactorizarlo para que tenga sentido. Después de algunas iteraciones de este proceso, comenzará a notar los patrones de código que hacen que el código sea fácil de entender y su calidad mejorará.
fuente
No.
Mi consejo es unirse a un grupo local de desarrolladores / usuarios y hablar sobre sus ideas con otros. Habla sobre tu diseño. Pregúntele a otros cómo han abordado ciertos problemas.
Si verifican su diseño, incluso sin mirar su código, eso debería ser lo suficientemente bueno.
fuente
Existen técnicas de autocomprobación, como el desarrollo basado en pruebas que pueden ayudar a proporcionar comentarios. Cuando se hace difícil saber que su arquitectura probablemente está fuera de control.
Problema resuelto. No necesita comentarios externos sobre cada línea de código para mejorar, solo un buen muestreo en las bifurcaciones clave en el camino y autoevaluaciones cuidadosas en los puntos intermedios.
Debe superar la idea de que puede mantener el mismo nivel de calidad trabajando solo en la misma cantidad de tiempo que alguien que trabaja en un equipo. Hay una razón por la cual las personas trabajan en equipos. La buena noticia es que no tiene conflictos sobre las decisiones de diseño. La mala noticia es que no tiene conflictos sobre las decisiones de diseño. Afortunadamente, el tiempo extra que pasa manteniendo la calidad se ve compensado en parte por las ventajas de trabajar solo.
fuente
Recomendaría hacer la mayor cantidad de redes posible en conferencias y grupos de usuarios locales. Conozco a muchos desarrolladores que disparan fragmentos de código desinfectado de un lado a otro por correo electrónico o estoy todo el tiempo solo para mantener la nitidez y revisar los algoritmos juntos. No, no es una conversación cara a cara, y sí, es una molestia desinfectar el código a veces, pero una revisión de código de 20 mensajes instantáneos de vez en cuando puede ser bastante útil, especialmente cuando estás desesperado por un segundo par de ojos.
fuente
Estoy en una situación similar y confío mucho en Stack Overflow para obtener comentarios sobre preguntas complicadas. También encuentro que, en virtud de tener que escribir una descripción del problema, la respuesta a menudo se vuelve obvia. En términos de mejores prácticas, soy un desarrollador de .Net y uso ReSharper, que ofrecerá sugerencias de buenas prácticas alternativas al código que estoy escribiendo (que a veces simplemente ignoro, puede ser un poco pedante). Y otra herramienta útil es FxCop, que realizará un análisis de código estático y resaltará cualquier problema que no coincida con su conjunto de reglas.
De lo contrario, depende de usted leer y mantenerse actualizado sobre las prácticas actuales. Me gusta Alvin Ashcraft's Morning Dew por enlaces a las novedades y mejoras en el mundo .Net.
fuente
Sugeriría intentar crear (o encontrar) un pequeño grupo de usuarios. Haga que su código esté disponible y haga que todos se comprometan para que funcione: media hora o más al día.
fuente
Un comentario constructivo de mi experiencia es que durante los primeros años de su desarrollo sería muy importante, aunque no obligatorio, que un desarrollador experimentado revise su código para sentar las bases. Una vez que tenga experiencia, puede seguir el enfoque sugerido por @ davidk01, es decir, revisar su propio código periódicamente para mejorar la calidad del código.
fuente
No conozco detalles de su situación, pero donde estoy ahora hay muchos estudiantes hambrientos de experiencia que están más que felices de trabajar como pasantes y aprender algo.
Puede parecer un trabajo extra para ti manejarlos y enseñarles esto y aquello, pero hemos estado allí cuando comenzamos y creo que es nuestro turno de pagar.
No son expertos e incluso pueden confundirlo a veces, pero generalmente desafían todo y están llenos de ideas y son excelentes para una discusión en la que debe defender cada detalle de su código.
fuente
Experimento lo mismo para> 75% de las preguntas que publico.
Sin embargo, ese no es un argumento para no molestarse en hacerlo. Esto es efectivamente la depuración del pato de goma. Está encontrando respuestas a preguntas que cree que podrían surgir en respuesta a su pregunta; lo que significa que está pensando en el problema desde los puntos de vista de diferentes personas; lo que significa que está pensando en el problema desde todas las direcciones posibles; cuál es la mejor manera de encontrar la falla.
En el mejor de los casos, ha demostrado de manera concluyente que claramente no puede pensar en la respuesta aquí. En el "peor", terminas respondiendo tu propia pregunta. Tenga en cuenta las citas, porque esto no es malo en absoluto. Tal vez fue un poco ineficiente, pero resolver el problema lentamente es mejor que decidir rápidamente no abordar el problema . Tendrás más rapidez para resolver el problema eventualmente.
Caso en punto:
Cuando era un desarrollador incipiente, me ocupé muchas veces de la página de errores ASP.Net . Necesitaba buscar el mensaje en Google para descubrir qué estaba mal. Pueden pasar varias horas antes de obtener la solución correcta. Básicamente cometí todos los errores en el libro y posteriormente tuve que lidiar con las consecuencias de tener que depurar los problemas.
Ahora, cuando aparece un error, ya conozco a los "sospechosos habituales" de lo que podría estar causando el problema. Mi lista mental de "sospechosos habituales" se basa efectivamente en los problemas con los que he tenido más problemas durante mi carrera. Sin haber hecho el trabajo de pierna de horas de Google en tiempo ineficiente, nunca hubiera hecho esta lista mental . Pero ahora que tengo esa lista mental, soy considerablemente más rápido en la resolución de problemas.
Estoy un poco en desacuerdo aquí. Tienes razón en que la comunicación por Internet responde menos, pero estás equivocado (en mi opinión) de que esto es malo para ti.
Como desarrollador solitario, dependerá de la depuración del pato de goma. El ingrediente clave para que RDD funcione es que anticipa las preguntas que el pato de goma pueda tener para usted. Obviamente, no puedes confiar en lo que dice realmente el pato de goma.
Cuando se trata de sistemas de mensajería lenta (publicación en StackOverflow o comunicación por escrito), tiene el incentivo inherente de asegurarse de hacerlo bien la primera vez. Porque la necesidad de corregir un error será un proceso lento y arduo.
En comparación, considere que los sistemas de mensajería rápida (conversación, mensajería instantánea), puede corregir algo inmediatamente . La capacidad de corregir rápidamente algo hace que las personas tengan menos incentivos para asegurarse de que sea correcto.
Cuatro casos en punto:
La idea subyacente aquí es que un sistema de intercambio difícil incentiva a las personas a realizar intercambios correctos y verificados . La severidad del castigo (= proceso de corrección difícil) te enseña a no cometer errores.
Cuando crea un MCVE , no debe crearlo y publicarlo en la pregunta. Primero debe hacerlo usted mismo , para poder aislar el problema. Y luego, cuando crees que el problema ya no se puede reducir, y aún no ves la causa; entonces tiene una pregunta válida para StackOverflow.
Caso en punto:
Siempre tengo un segundo Visual Studio ejecutándose con una aplicación de consola simple llamada Sandbox. Cada vez que me encuentro con un problema técnico, copio el código ofensivo en el sandbox y empiezo a jugar con él.
En el 90% de los casos, encuentro la causa del problema porque la caja de arena me ayudó a mirar el código ofensivo sin distraerme con el contexto circundante (o, por ejemplo, cualquier incertidumbre sobre los valores que vienen para diferentes partes del código.
En el otro 10% de los casos, me queda el código mínimo para reproducir el problema, que sirve como un fragmento de ejemplo perfecto para publicar en StackOverflow.
Cuando ya tiene su MCVE, no debería tener mucha información personal (o de la empresa) en él. Si lo hace, dado que el código es mínimo, es fácil cambiar el nombre de las cosas a un ejemplo más básico de foo / bar / baz.
fuente