- Es ingeniería real: análisis estructurado y disciplinado de problemas y desarrollo de soluciones. Muy poco tiene que ver con escribir código: se trata mucho más de averiguar qué código escribir. El desarrollo de un piloto automático para un avión tiene muy poco que ver con la codificación: tiene todo que ver con la ingeniería aeroespacial y las matemáticas. (Para usar su analogía de trenes y edificios, los arquitectos e ingenieros de construcción producen diseños y planos de construcción, no clavan clavos).
- Cuando realmente se trata de codificación, uno “diseña” el código, comenzando con la arquitectura y el diseño del sistema, cuáles son todas las piezas (hardware, software, redes, personas), cuál es el panorama general, cuál es la arquitectura, cómo encajan las piezas ¿juntos? Luego, se pasa a la arquitectura de software: de nuevo, ¿cuáles son las piezas (bases de datos, funciones principales, servidores y servicios, etc.) y cómo se unen? Hay mucho enfoque en el proceso y la documentación: especificaciones, pruebas, procesos de integración, procesos de construcción, etc.
En cuanto a cómo ¿Qué debo leer / hacer / practicar para hacer que mi mentalidad / enfoque sea el de la ingeniería? Esa es una decisión difícil: la respuesta general es obtener un título de ingeniería de una escuela que tenga un programa razonablemente bueno y luego pasar una buena cantidad de años adquiriendo experiencia práctica en la industria. No estoy seguro de que haya un atajo, aunque ciertamente podría abrirse paso a través de un plan de estudios de ingeniería en línea (por ejemplo, tomar todos los cursos del MIT que conducen a un título en CS&E, a través de Open Courseware o EdX, incluidos todos los cursos no informáticos en matemáticas y ciencias).