Mi respuesta básica es: leer mucho fuera del campo de la computación.
Vale la pena tratar de entender lo que significa «ciencia» en «Ciencias de la Computación» y lo que significa «ingeniería» en «Ingeniería del Software».
«Ciencia» en su sentido moderno significa tratar de conciliar los fenómenos en modelos que sean lo más explicativos y predictivos posible. Puede haber «Ciencias de lo Artificial» (ver el importante libro de Herb Simon). Una forma de pensar en esto es que si las personas (especialmente los ingenieros) construyen puentes, éstos presentan fenómenos para que los científicos los entiendan haciendo modelos. Lo divertido de esto es que la ciencia casi siempre indicará nuevas y mejores formas de hacer puentes, por lo que las relaciones amistosas de colegialidad entre científicos e ingenieros pueden realmente progresar.
Un ejemplo en la informática es John McCarthy pensando en los ordenadores a finales de los años 50, la gama realmente grande de cosas que pueden hacer (¿tal vez IA?), y creando un modelo de computación como un lenguaje que podría servir como su propio metalenguaje (LISP). Mi libro favorito sobre esto es «The Lisp 1.5 Manual» del MIT Press (escrito por McCarthy et al.). La primera parte de este libro sigue siendo un clásico sobre cómo pensar en general, y sobre la informática en particular.
(Un libro posterior inspirado en todo esto es «Smalltalk: el lenguaje y su implementación» (de Adele Goldberg y Dave Robson – el «Libro Azul»). También contiene una implementación completa en Smalltalk escrita en sí misma, etc.)
Un libro aún posterior que me gusta mucho que sea «ciencia de la computación real» es «The Art of the Metaject Protocol» de Kiszales, Bobrow, Rivera,). La primera parte de este libro es especialmente esclarecedora.
Una tesis temprana (1970) que es verdadera ciencia de la computación es «A Control Definition Language» de Dave Fisher (CMU).
Tal vez mi libro favorito sobre computación pueda parecer lejano, pero es maravilloso y la escritura es maravillosa: «Computation: Finite and Infinite Machines» de Marvin Minsky (ca 1967). Simplemente un libro precioso.
Para ayudar con la «ciencia», suelo recomendar una variedad de libros: Los «Principia» de Newton (el libro de ciencia por excelencia y documento fundacional), «La Biología Molecular de la Célula» de Bruce Alberts, et al. Hay un libro de los trabajos de Maxwell, etc.
Tienes que acabar dándote cuenta de que la «Ciencia de la Computación» es todavía una aspiración, no un campo realizado.
«Ingeniería» significa «diseñar y construir cosas de forma experta en principios». El nivel de esto es muy alto para los campos de ingeniería de Civil, Mecánica, Eléctrica, Biológica, etc. Ingeniería. Estos deben ser estudiados cuidadosamente para obtener el sentido más amplio de lo que significa hacer «ingeniería».
Para ayudar con la «ingeniería» trate de leer sobre la realización del Empire State Building, la presa de Boulder, el puente Golden Gate, etc. Me gusta «Now It Can Be Told» del Mayor General Leslie Groves (el jefe del Proyecto Manhattan). Es un ingeniero, y esta historia no es en gran medida desde el punto de vista de Los Álamos (del que también estuvo a cargo) sino sobre Oak Ridge, Hanford, etc y la increíble movilización de más de 600.000 personas y mucho dinero para hacer la ingeniería necesaria para crear los materiales necesarios.
Entonces piensa en dónde no está la «ingeniería de software» – de nuevo, necesitas terminar dándote cuenta de que la «ingeniería de software» en cualquier sentido de «ingeniería» es, en el mejor de los casos, todavía una aspiración y no un hecho.
La computación es también una especie de «medio» e «intermediario», por lo que necesitas entender lo que estos hacen por nosotros y para nosotros. Lee a Marshall McLuhan, Neil Postman, Innis, Havelock, etc. Mark Miller (comentario más abajo) acaba de recordarme que he recomendado «Technics and Human Development», Vol. 1 de la serie «The Myth of the Machine» de Lewis Mumford, como un gran predecesor tanto de las ideas del entorno mediático como de una importante faceta de la antropología.
No conozco un gran libro de antropología (tal vez alguien pueda sugerirlo), pero la comprensión del ser humano es lo más importante que hay que lograr en su educación. En un comentario más abajo, Matt Gaboury recomendó «Human Universals» (creo que se refiere al libro de Donald Brown.) Este libro ciertamente debe ser leído y comprendido – no está en la misma clase que los libros sobre un campo, como «Molecular Biology of the Cell».
Me gustan los libros de Ed Tufte sobre «Envisioning Information»: léelos todos.
Los libros de Bertrand Russell siguen siendo muy buenos sólo para pensar más profundamente en «esto y aquello» («Una historia de la filosofía occidental» sigue siendo estupenda).
La multiplicidad de puntos de vista es la única forma de luchar contra los deseos humanos de creer y crear religiones, así que mi libro de historia actual favorito para leer es: «Destino interrumpido», de Tamim Ansary. Creció en Afganistán, se trasladó a los Estados Unidos a los 16 años, y es capaz de escribir una historia clara y esclarecedora del mundo desde la época de Mahoma desde el punto de vista de este mundo, y sin alegatos especiales.