Cómo comparar estos trabajos: programación (o ingeniería de software) con ingeniería electrónica

En primer lugar, la programación NO es ingeniería de software. Una es una habilidad, la otra es una profesión y una disciplina de ingeniería. (Considere la diferencia entre un carpintero y un arquitecto).

Ahora, si desea comparar la ingeniería de software con la ingeniería eléctrica, esa es una comparación más directa: ambas involucran disciplina de ingeniería y resolución de problemas en profundidad. En general, la ingeniería de software produce soluciones de software, mientras que la ingeniería eléctrica produce soluciones de hardware. Pero, en general, hay muchos cursos básicos comunes: muchas de las mismas matemáticas, la gente de software necesita saber sobre hardware, y mucho diseño de hardware está relacionado con el hardware de la computadora.

Excepto…. no muchas escuelas ofrecen títulos de ingeniería de software, ofrecen títulos en ciencias de la computación, más un enfoque en software y más en teoría; grados de ingeniería informática, generalmente con un mayor enfoque en hardware de computadora; y grados EE – nuevamente enfocados más en hardware, pero también en radio y energía.

Y, para confundir aún más las cosas: la informática y la ingeniería de software a menudo son concentraciones que se ofrecen dentro de un departamento de ingeniería eléctrica. (Por ejemplo, los títulos de informática del MIT son ofrecidos principalmente por el Departamento de Ingeniería Eléctrica y Ciencias de la Computación, y dos de los títulos ofrecidos son BS en “Ingeniería Eléctrica y Ciencias de la Computación” y “Ciencias de la Computación e Ingeniería”).

Obtuve un BEng en electrónica y luego fui a trabajar como ingeniero de software integrado.

Este trabajo cubre ambos lados. Estaba tan feliz con un teclado como con un osciloscopio.

Mi sensación al respecto era que la electrónica era de alguna manera más simple, ¡y molesté a un colega amigable al decirlo! No es que sea más simple, simplemente parecía menos extenso, para nosotros. Nuestro código tenía unas 25–50,000 líneas, sin embargo, la placa de circuito solo tenía cientos de componentes. Simplemente parecía menos interconexión. Y los circuitos integrados parecían más de una cantidad conocida.

Pero mi amigo ingeniero de potencia analógico se apresuró a señalar que su placa tenía solo seis grandes transistores IGBT, pero había sido un cerdo para diseñarla para que no pudiera explotar cuando la encendía, a través de un suministro industrial trifásico.

Para mí, siempre sentí que el software de depuración era un poco más predecible que el hardware de depuración. Trabajando en electrónica de RF, tan pronto como mueves tu mano sobre la placa prototipo, se comporta de manera diferente (a veces).

La programación se sintió más predecible, aunque en los sistemas en tiempo real a menudo no lo es.

Muy diferentes trabajos, de verdad. Diseñar un circuito para la producción y diseñar software para la producción necesita un enfoque analítico similar, pero habilidades bastante diferentes.

El alcance de un ingeniero de software es diferente en comparación con un ingeniero electrónico. En general, un ingeniero de software no necesita conocer la electrónica, aunque pueda tener el conocimiento (como en el caso de alguien que diseña sistemas integrados). Del mismo modo, un ingeniero electrónico no necesita saber programar.

La ingeniería de software es bastante clara en el sentido de que su alcance depende del conocimiento del dominio con el que interactúa el software. Puede o no implicar la interacción con cualquier hardware.

La programación de software integrada requiere el conocimiento básico de la electrónica y el hardware involucrados; el lado de bajo nivel de los códigos de programa que interactúan con los microprocesadores, microcontroladores, interrupciones de hardware, registros de periféricos, señales de reloj, puertas digitales, etc. Alguien con experiencia en Ingeniería Electrónica cumpliría con este requisito de trabajo. El firmware y el controlador de dispositivo para un hardware en particular son ejemplos de sistemas integrados.

Por ejemplo, en un sistema embebido, el conocimiento del dominio en los microcontroladores PIC y sus periféricos puede ser necesario para escribir dicho programa. Para aquellos con experiencia en Ingeniería Electrónica, es muy fácil obtener este conocimiento de dominio, pero muy difícil para aquellos con experiencia en Informática. La programación integrada se inclina hacia una solución de hardware y proporciona una capa de integración que oculta los detalles electrónicos de la solución empresarial. Mientras que la programación de aplicaciones generalmente proporciona una solución en la capa empresarial, como la GUI, la base de datos, la mensajería, la colaboración, el flujo y la lógica empresarial, la inteligencia empresarial, las estadísticas, los gráficos y los informes, etc. Los programadores de aplicaciones no necesitan conocer los detalles de hardware, incluso si su software interactúa con el hardware, si lo hay, porque los programadores integrados generalmente proporcionan una capa de integración que permitirá a los programadores de aplicaciones interactuar su solución comercial con la solución de hardware. Las capas de integración pueden ser controladores de dispositivos, bibliotecas de interfaz, protocolos de comunicación serie / paralelo o protocolos de Internet.

Un sistema de automatización de edificios, por ejemplo, involucra ingenieros electrónicos y de red que diseñan la red y los controladores distribuidos que están formados por microprocesadores y elementos electrónicos, los ingenieros de software embebido escriben el software y el firmware embebidos que realizan comunicaciones de datos entre los controladores en red y los controladores maestros. . Cuando el hardware está conectado y configurado correctamente, comienzan a comunicarse entre sí y comienzan a recopilar datos en la memoria caché en la RAM, FLASH o EEPROM. Con solo el software incorporado dentro del hardware, pueden ejecutarse solos, Monitoreo y control inteligente de los sistemas de aire acondicionado, sistemas de presión de agua, sistemas de alarma contra incendios, sistemas de seguridad, etc. Sin embargo, una solución empresarial completa proporcionaría una interfaz de usuario amigable y fácil de usar, pero una recopilación y archivo de datos complicados que permite a los usuarios cambiar puntos de ajuste, anulaciones manuales, tendencias de monitoreo e historial, gráficos e informes que son más significativos para los usuarios comerciales. como los gerentes Aquí es donde entran el arquitecto de soluciones y los programadores de aplicaciones.

Un sistema de software podría ser simplemente un software de automatización inteligente que no interactúa con el hardware. Éstas podrían ser una solución empresarial como los sistemas de contabilidad y nómina, SAP, ERP, comercio electrónico, MES *, etc. Los graduados de la disciplina informática se adaptarían a estos trabajos.

Un MES (siglas en inglés de Manufacturing Execution System) podría integrarse y comunicarse con el equipo de producción utilizando el protocolo estandarizado SECS / GEM. El software se integra altamente con el dominio de semiconductores, por lo tanto, es una ventaja para alguien que viene de este contexto y con conocimientos de programación.

Automatización de fábrica fuera del dominio de semiconductores, generalmente tenemos sistemas basados ​​en PLC, SCADA o microcontroladores.

Con todo, definitivamente hay algo de programación integrada en el hardware y la programación de aplicaciones en las capas empresariales. La ingeniería electrónica no cubre tanto en la programación de aplicaciones. Los cursos de ciencias de la computación e ingeniería de software se inclinan hacia las capas empresariales.

¿Qué quieres comparar exactamente? Hay una superposición creciente en ambas disciplinas en estos días, especialmente con el IOT. Los ingenieros electrónicos han visto cuándo se pueden aprovechar las cosas para su ventaja, por ejemplo, la arquitectura de los microcontroladores sobre los microprocesadores. Los ingenieros de sistemas de control vieron las ventajas de E / S rápidas, medición, interrupciones, conversión analógica a digital y modulación de ancho de pulso, por lo que se incorporaron como especialidades para el microcontrolador. Cada vez más IP como ARM son incorporados por proveedores de chips como Atmel que construyen circuitos periféricos a su alrededor. Cada vez más, los FPGA tienen núcleos de procesador blandos con silicio FPGA adicional para incorporar un diseño personalizado. Los procesadores Kabylake están destinados a apuntar a Quick Sync Video. VHDL se está convirtiendo en señal mixta VHDL (VHDL-AMS). Tendrá que ser más específico, pero solo puedo ver la convergencia continua de las dos disciplinas desde un punto de vista de software incorporado (específicamente excluí el desarrollo de PC para indicar las áreas más cercanas de convergencia que la gente no siempre nota). Entonces, cuando un ingeniero de software dice (a todos los efectos) que “la pila puede considerarse infinita”, está hablando de una arquitectura de PC sin restricciones.

Para mí, la ingeniería de firmware integrada va de la mano con la ingeniería de hardware. Realmente no puede ser un buen ingeniero de hardware sin tener una sólida comprensión de la ingeniería de firmware.

More Interesting

¿Por qué se exige tanto a los ingenieros de software? ¿Qué tipo de circunstancias sociales requieren este fenómeno?

Sistemas operativos: ¿cuál es la diferencia entre un sistema operativo original y uno pirateado? ¿Por qué debería uno ir por el original, beneficios como tal?

Cómo encontrar un buen mentor profesional en ciencias de datos fuera de la empresa para la que trabaja

¿Qué tipo de política ocurre en las grandes compañías de software?

Cómo ser notado por las empresas de CS de primer nivel y dada mi situación, cuál sería el movimiento correcto

¿Está bien que un ingeniero senior con 7 años de experiencia trabaje continuamente en un campo técnico durante 3 años más?

¿Cómo reconocerías el software autoconsciente?

¿Cómo compensar a los desarrolladores y otros ingenieros que están de guardia y tienen que responder a emergencias, como arreglos de código o interrupciones?

¿Cuál es la historia más interesante que has escuchado al alojar un podcast de ingeniería de software?

Cómo seleccionar un proveedor de outsourcing de desarrollo ágil

Si los cálculos de la computadora son deterministas, ¿por qué el software de la computadora a menudo es determinista y tiene errores?

¿La experiencia en un perfil de prueba cuenta en un perfil de desarrollador, si la solicito?

¿Qué compañía inventará una mejor arquitectura de placa base para admitir la computación paralela eficiente? Intel, ATI / AMD, nVidia o Samsung, etc.

Cómo hacer un programa que pueda comprimir archivos como WinRar y WinZip

¿Qué tipo de tecnología de aprendizaje automático debo usar para crear clasificaciones de usuarios de Twitter?