Nuestro producto es un sistema distribuido. Los módulos en los que trabajo son bastante nuevos, bastante rigurosos, bien probados. Se desarrollaron teniendo en cuenta las mejores prácticas recientes. Otros módulos se pueden considerar como software heredado.Fail Fast vs. Robustness
Mientras estoy atenta a todo lo que sucede dentro de los módulos de los que soy responsable, estoy bajo presión constante para trabajar con los datos incorrectos que me envían desde los otros módulos. En el fondo, soy un desarrollador principal "Fail Fast" y, como resultado, cuando surgen problemas, generalmente puedo eliminar la posibilidad de error en mis módulos. No se trata tanto de culpar, sino de ahorrar esfuerzos desperdiciados para perseguir insectos en los lugares equivocados.
Pero el argumento con el que siempre me enfrento es: "No podemos dejar que esto falle en la producción, el cliente espera que esto funcione, ¿por qué no soluciona este problema?". Y este sería un argumento para la solidez: ser liberal en lo que acepta, conservador en lo que envía.
También debo tener en cuenta que estos son en su mayoría problemas intermitentes. Los vemos en pruebas de integración, pero son difíciles de reproducir. El tiempo y la concurrencia están involucrados.
Estoy teniendo dificultades para equilibrar los dos principios. Parte de esto es mi preocupación de que si empiezo a permitir y propagar datos excepcionales, estoy invitando a problemas y no tendré tanta confianza en mi sistema. Pero no puedo argumentar en contra de mantener el sistema funcionando incluso si otros módulos me están enviando datos incorrectos. La razón por la que otros módulos no se solucionan es porque son demasiado complejos y frágiles, mientras que los míos aún parecen claros y seguros. Pero si no resisto la presión, mis módulos se cargarán lentamente con los mismos problemas que he estado rechazando hasta ahora.
Debo decir que el sistema no está "cayendo" en producción, pero mi módulo puede simplemente mostrar un error al operador y pedirles que se pongan en contacto con el soporte técnico. Un colapso sería un gran problema, pero si estoy informando el error claramente, ¿no es esto lo correcto? Sospecho que mis compañeros simplemente no quieren que el cliente vea ningún problema, punto. Pero mi módulo está rechazando datos de otros módulos dentro de nuestro producto, no de la entrada del cliente. Entonces me parece que simplemente no estamos abordando problemas.
Entonces, ¿tengo que ser más pragmático o mantenerme firme?
Guau, todo el hilo, incluidos los comentarios y respuestas, fue totalmente profesional y bien pensado. Sin respuestas instintivas, sin señalar con el dedo, sin quejarse. Estoy impresionado por todos los que participaron. Hasta vote por proporcionar la conclusión, aunque un poco dudoso acerca de aceptar su propia respuesta. – MJB
No estaba seguro de qué hacer con las respuestas francamente. Pensé que se suponía que era el curso de acción. Aún estoy aprendiendo cómo trabajar esto. – tolak