Definitivamente hay una distinción entre la informática y la ingeniería de software. Los informáticos desarrollan nuevos algoritmos y formas de resolver problemas, mientras que los ingenieros de software realmente resuelven esos problemas de una manera que da como resultado productos confiables, confiables y de alta calidad. Es como la diferencia entre un químico y un ingeniero químico. El químico descubre nuevos químicos y propiedades de los químicos, mientras que el ingeniero químico construye plantas de procesamiento químico, plantas de fabricación de pinturas, plantas de purificación de agua y otros sistemas que realmente utilizan el conocimiento químico para hacer sistemas útiles. Así como un ingeniero químico necesita saber mucho sobre química, también un ingeniero de software necesita saber mucho sobre informática. Pero hay una gran diferencia en lo que hacen y cuánto está involucrada la teoría en sus actividades diarias.
En su mayor parte, los informáticos se encuentran en universidades y en organizaciones gubernamentales y corporativas de investigación. Los ingenieros de software se encuentran principalmente en entornos que no son de investigación, aunque hay algunas investigaciones de ingeniería de software.
Dicho esto, hay otra distinción importante: la distinción entre un programador y un ingeniero de software. Es como la diferencia entre una persona que construye casas y una persona que las diseña para ser estructuralmente sólidas. La diferencia está en “ingeniería” en lugar de construir. Uno puede ser un excelente albañil o enmarcador sin saber cómo diseñar una casa para que sea estructuralmente sólida o administrar un proyecto de construcción para mantenerlo dentro de un presupuesto y un cronograma. Y uno puede ser un excelente ingeniero estructural sin saber cómo enmarcar una casa o colocar ladrillos muy bien. Un ingeniero estructural puede determinar cuánto peso puede soportar un diseño de techo en particular o si una base en particular puede soportar las tensiones y tensiones del suelo sobre el que se coloca. Un excelente enmarcador puede construir una casa donde las paredes sean rectas y verdaderas. Cada uno sabe algo sobre el comercio del otro, pero se especializa en un aspecto diferente del problema.
- ¿Podemos aplicar el aprendizaje automático en cualquier idioma o hay algo específico que sirva para ese propósito? ¿Cuáles son los modelos matemáticos efectivos utilizados principalmente en ML?
- ¿Qué temas importantes en matemáticas deberían saber todos los programadores?
- ¿Cuáles son los cursos matemáticos recomendados para el aprendizaje automático y el procesamiento de big data?
- Tienes 25 caballos y quieres elegir los 3 caballos más rápidos de esos 25. En cada carrera, solo 5 caballos pueden correr al mismo tiempo porque solo hay 5 pistas. ¿Cuál es el número mínimo de carreras requeridas para encontrar los 3 caballos más rápidos sin usar un cronómetro?
- ¿Qué hace que la oración 'Lucas no pueda afirmar esta oración constantemente', vulnerable o incluso incompleta?
Una persona puede ser un excelente programador sin saber cómo estimar el rendimiento del producto que está construyendo o estimar el costo de un proyecto o administrar un proyecto para que se mantenga a tiempo o interactúe fuertemente con los otros ingenieros en un proyecto masivo (como un nuevo avión o una presa o una planta de energía o una fábrica) para producir un producto final de alta calidad. Un verdadero ingeniero de software debe saber programar, pero no necesariamente tiene que ser el mejor programador. Por otro lado, el verdadero ingeniero de software hace mucha ingeniería. Esto incluye actividades como analizar problemas, determinar la viabilidad de las soluciones propuestas, estimar el costo y el cronograma, liderar equipos de desarrollo, diseñar una estrategia de prueba y validación completa, rentable y exitosa, o integrar software con redes y hardware de computadora y hardware que no sea de computadora para producir Un producto final de calidad.
Naturalmente, hay mucha área gris entre estas y muchas personas funcionan en esa área gris. Es bastante común que un programador migre para realizar más y más tareas de ingeniería de software. Suenas como una persona a la que le gusta programar (me encantó cuando empecé), y eso puede conducir a una carrera exitosa. Es posible que desee pasar a la ingeniería de software (eso es lo que hice), pero eso puede requerir mucha educación en cosas como diseño de software, administración de software, análisis, medición y otras materias de “ingeniería”. Por cierto, aunque hice ingeniería de software durante más de 30 años, rara vez hice mucha programación durante los últimos 20 años de mi carrera; estaba demasiado ocupado tratando de organizar, administrar, planificar, integrar y automatizar.