Absolutamente.
Casi todos los que han dominado uno saben bastante sobre el otro. Creo que los mejores ingenieros de software tienen un dominio muy fuerte de los temas de informática. Una buena comprensión de algunas ramas de la informática afecta directamente su capacidad para diseñar eficazmente un buen software.
Uno en el que probablemente esté pensando todo ingeniero de software es la teoría de la computación. La internalización del análisis de complejidad es absolutamente clave para escribir algoritmos eficientes. Esto podría no ser importante al escribir todo el software. Tal vez no si está escribiendo alguna interfaz de usuario web o interfaz de usuario de iPhone. Pero si maneja una gran cantidad de registros de pacientes y entradas deduplicadas según criterios coincidentes, no durará un día sin comprender el análisis de complejidad. Se les pide a los ingenieros de software que demuestren que entienden esto en cada entrevista de trabajo de nivel de entrada que he escuchado.
- Soy bastante bueno señalando los errores en cualquiera, cualquier cosa. ¿Significa que seré un buen probador de software?
- ¿Cuáles son las habilidades clave requeridas para un banquero de inversión en salud? ¿Un abogado de impuestos de fusiones y adquisiciones estaría bien preparado para tal transición profesional?
- ¿Qué debo hacer si quiero mejorar mi electrónica básica y trabajar en el diseño de circuitos?
- ¿Qué debe hacer un estudiante de ingeniería no CSE para ingresar a una empresa como Google o Microsoft?
- Estoy cada vez más deprimido porque todo lo que he amado en la vida es escribir música, pero parece que no puedo ganar dinero. ¿Cómo me acerco a resolver este problema?
Hay una gran cantidad de temas que se están investigando activamente en informática ahora en los campos de algoritmos y estructuras de datos, lenguajes de programación, sistemas distribuidos y computación paralela, todo lo cual lo convertirá en un mejor ingeniero de software si los comprende. Tal vez los ingenieros de software decentes tienen una comprensión bastante sólida de varios de estos y solo he nombrado algunos. Dominar estos temas en CS hará que domines mejor la programación, así que creo que puedes hacer ambas cosas.
Al otro lado de la cerca están los académicos que han dominado la informática pero ¿han dominado la programación? Yo también diría que en este contexto probablemente sí.
Al igual que con la programación, es posible que los desarrolladores front-end no necesiten mucha informática, hay informáticos, como los que se centran en intentar demostrar que P! = NP, o tal vez incluso un teórico de gráficos que no necesita dominar la programación. . Demonios, si estás probando teoremas de prueba sobre la teoría de grafos, es posible que ni siquiera sepas cómo programar. (aunque poco probable). Entonces sí, es posible que los profesores de CS sean programadores bastante débiles. Pero luego están los diseñadores de lenguajes de programación, los especialistas en aprendizaje automático y muy a menudo crean prototipos, a menudo proyectos de trabajo a gran escala que prueban su trabajo y contribuyen al panorama del software existente. Estas personas saben programar tan bien como un ingeniero de software sólido y típico. Lo que quiere decir que probablemente lo dominen.