¿Cuáles son los buenos libros de desarrollo de software / arquitectura que uno puede leer?

Felicidades, no hay nada como crear tu propio desastre después de tratar con alguien más.
Encuentra varios buenos libros de OOP para Java (para que tengas al menos un par de perspectivas). Supongo que ha visto suficiente código java existente para que los detalles del lenguaje Java no sean el mayor problema.

Con suerte, la base de código heredada no fue un diseño basura, pero es sorprendente lo que realmente se ejecutará con el tiempo y el esfuerzo desperdiciados.

Use su experiencia con la base de código heredada para reflexionar sobre lo que funcionó bien y lo que podría mejorarse. Intenta no repetir estos errores, crea otros nuevos que sean reparables. Diseñe teniendo en cuenta la extensibilidad y la facilidad de mantenimiento.

Los requisitos y restricciones deben identificarse y analizarse primero, problemas como redundancia, disponibilidad, rendimiento, latencia, dependencias de servicios externos e internos, bases de datos, subprocesos múltiples, CPU, dimensionamiento de memoria, etc.

Comience desde el nivel superior y determine, por ejemplo, si se desearían múltiples servicios y cuáles deberían ser estos (arquitectura orientada a servicios). El arte de OOP es crear objetos y servicios de alto nivel de valor sustancial que encapsulan la complejidad con una interfaz relativamente simple. Es la propuesta de valor del consumo simple de un servicio u objeto de alto valor. Estos objetos / servicios de alto nivel están compuestos internamente por objetos más pequeños en un diseño mantenible. Descomposición (informática) es el nombre del juego.

Java fue construido especialmente para esto.

¡Escudriña quora a lo grande, los recursos mencionados aquí son fenomenales! 🙂