Cómo construir una herramienta de desarrollo, una infraestructura central y aprender un mejor diseño de sistema

Te sugeriré que estudies,
Patrones de arquitectura de aplicaciones empresariales: Martin Fowler: 0076092019909: Amazon.com: Libros
Este es un libro bastante bueno, aunque no trata de la arquitectura de software en general, sino de la arquitectura de las aplicaciones empresariales.

Tambien
El libro sobre arquitectura de software citado y referenciado, y el libro utilizado cuando tomé el curso de Arquitectura de software en mi universidad es Software Architecture in Practice (2ª edición) de Len Bass, Paul Clements y Rick Kazman.
Al menos un profesor que imparte el curso ha cambiado el libro de texto a Arquitectura de sistemas de software de Nick Rozanski y Eoin Woods, pero no puedo garantizar la calidad o el contenido de ese libro. Según Sergio Acosta (en los comentarios), el libro de Rozanski es más nuevo, basado en el trabajo de Bass, y considera que es más fácil de leer. Raramente me decepcionan los libros utilizados en el programa de ingeniería de software.

Deberías probar la serie Clean Code de Uncle Bob. Muy útil para entender los principios del buen diseño de sistemas. http://cleancoders.com/

La programación de videojuegos no es mala. De hecho es una forma divertida de aprender. Intenta diseñar algo así como un sistema de base de datos con algo de UI. o un editor como Eclipse. Si puedes imaginar algo mejor, entonces inténtalo.

Después de haber diseñado y construido un sistema de desarrollo (sin duda con la ayuda de otros programadores), creo que puedo proporcionar una respuesta significativa.

La mejor respuesta es muy simple. No lo hagas

Diseñar y codificar un sistema de desarrollo es una tarea enorme e ingrata. El que diseñé terminó con más de medio millón de líneas de código y tomó varios años. Harías un mejor uso de tu tiempo y estarías menos inclinado hacia el asesinato o el suicidio si abordaras un proyecto más pequeño y más sensato.

Si absolutamente quieres hacer esto, entonces probablemente lo primero que debes tener en cuenta es que simplemente hacer un “yo también” es un poco inútil. Si va a inventar un sistema de desarrollo, haga algo significativamente diferente.

Por supuesto, hay otra cosa que debes tener en cuenta. Diseñar e implementar un sistema de desarrollo que incorpore una metodología de diseño es algo bastante complejo. Es probable que tengas que explorar terrenos en los que otros pocos nunca pisan. Por ejemplo, una de las cosas que tenía que hacer era implementar un enlazador. No sé con certeza cuántas personas han escrito un vinculador, pero puedo decir que no hay un gran número de ellos. No obtendrás muchas respuestas en stackoverflow. También hay muchas otras facetas del sistema que te pondrán en aguas profundas. Prepárate para un viaje muy duro.

El libro de Cenicienta.
El TAOCP de Knuth.
Una disciplina de la programación.

Esos son los ladrillos teóricos básicos del corpus de la informática.