¿Qué hacen los ingenieros de software?

¡Hacemos magia con una computadora! 🙂

Bueno, este fue uno de los comentarios de mi cliente cuando le solucioné un problema.

Permítame decirle el ciclo de vida simple de un software (no el ingeniero, pero puede estar seguro en cada fase en la que esté involucrado).

1) El ciclo de vida de un software comienza con un requisito.

Requisito

El requisito es cualquier problema del mundo real para el cual los clientes necesitan una solución.

El requisito puede ser cualquier cosa como crear un software para administrar su dinero, software para hacer una aplicación como tinder o Facebook, hacer un sistema operativo de escritorio como Windows o Linux. un sitio web como Quora. Cada una de estas tesis atiende un problema particular del mundo real y proporciona una solución.

La ingeniería de software no se trata solo de escribir código, la ingeniería de software comienza con un requisito, como cualquier otro trabajo, un ingeniero de software necesita comprender cuál es su necesidad, él / ella debe tener experiencia en el desarrollo de soluciones similares a la suya.

2. ok, lo entendí, entonces, ¿qué sigue?

Análisis y diseño.

El análisis y el diseño son la parte central de la ingeniería de software.

Al igual que un constructor hace una copia del edificio antes de construirlo, analiza el espacio para la construcción, el número de pisos para el edificio, el número de pisos para cada piso, los requisitos de agua, los requisitos de electricidad, el gobierno. normas para hacer un edificio, etc.

El ingeniero de software tiene que crear un proyecto original para la solución, antes de implementarlo realmente. él tiene que verificar, ¿es factible el requisito? ¿Es viable? ¿Está disponible la tecnología para implementar el requisito? ¿puede hacerlo solo o necesita de otro equipo? ¿Se puede hacer con el dinero proporcionado por los clientes? ¿Se puede hacer dentro de los plazos proporcionados por ellos?

Después de analizar todo esto, el ingeniero de software creará un diseño, el núcleo del software, como patrones de diseño, marco para el software, funcionalidades centrales. En general, estos son realizados por arquitectos de software y arquitectos de soluciones, quienes tienen experiencia en la creación de soluciones de software.

3. Lo tengo … ¿qué pasa después?

Construir y codificar

Según el marco diseñado por los arquitectos, los ingenieros codificarán. Seguirán las pautas de codificación y los patrones establecidos por los clientes y convertirán los requisitos al código real. dividen los requisitos pieza por pieza y los convierten en una sola unidad de trabajo. Prueban la unidad de trabajo (llamada prueba de unidad).

Una vez que todas las unidades están funcionando, integran todo y ven si las unidades funcionan como un todo, si hay algún problema, entonces lo arreglan. Una vez que están satisfechos de que se cumplan todos los requisitos, lo envían a prueba.

4. whoo … acaban de probarlo … ¿por qué necesitan probarlo de nuevo?

Revisión y prueba

Los ingenieros de software que codifican tienen una mentalidad diferente, solo ven las cosas que se mencionan en los requisitos, pero hay posibilidades de que el ingeniero haya omitido algo que puede hacer que el software falle. O han hecho algo que en realidad no es la forma correcta de hacerlo.

Ingenieros experimentados revisan el código escrito por los subordinados y compañeros, para asegurarse de que el código esté completo, sea efectivo y no tenga efectos adversos. Luego, los evaluadores comienzan a probarlo. ¿El software cumple con el requisito completo de lo que los clientes pidieron? ¿Puede el software manejar la carga si lakhs de usuario lo usan a la vez? ¿Es pirateable? ¿Es a prueba de errores? Los evaluadores hacen estas preguntas al software y, si no se maneja algún caso, plantean una inquietud y lo envían al desarrollador.

Básicamente verifican la calidad del software y se aseguran de que se entregue a los clientes el mejor software de calidad.

5. ok .. entonces?

Despliegue y mantenimiento

Luego ocurre la implementación, la puesta en marcha, el inicio del software. La gente simplemente lo inicia y los clientes comienzan a usarlo y usan la solución creada para su problema.

El equipo de Software es responsable de mantener el software, corregir los errores y actualizar la tecnología, hacer que el software sea más rápido y hacer algunos cambios después de la implementación / lanzamiento y según el contrato con los clientes.

Y el ciclo comienza nuevamente con un nuevo equipo, con una nueva tecnología, un nuevo requisito y un nuevo cliente.

Esta es la forma en que creamos soluciones para cada problema. Hacemos mucho más que solo código para resolver sus problemas. A veces creamos cosas que parecían imposibles, brindamos una solución simple a su difícil problema. Algunas personas solo ven humanos nerds y no sociales en nosotros, otras ven a una persona perezosa que se sienta frente a la computadora y escribe, pero algunas personas entienden el valor del problema que resolvimos, si es mejor de lo que esperaban, lo llaman magia .

Básicamente, estás utilizando habilidades informáticas para resolver problemas con el software y, por supuesto, el software está en todas partes. Lo interesante que quizás no se dé cuenta es que el software no es solo un programa de computadora que proporciona características y funcionalidades específicas. También incluye toda la documentación asociada y los datos de configuración para garantizar que el software funcione sin problemas y con eficacia. Y, por supuesto, también se vende software a los clientes, conocido como productos de software. La ingeniería de software es básicamente una disciplina de ingeniería relacionada con el desarrollo de productos de software, utilizando principios, métodos y procedimientos científicos bien definidos.

La Dra. Melanie Willett, escritora de contenido en HyperionDev y ex profesora de TIC en la Universidad Nelson Mandela y CTI Education Group, explica que hay una diferencia entre un desarrollador y un ingeniero de software. “En pocas palabras”, dice ella, “la diferencia es que generalmente se piensa en un desarrollador como alguien que escribe principalmente código para resolver un problema, mientras que un ingeniero diseña la solución al problema”. Diseñan la solución, ven qué componentes se necesitan para la solución, cómo interactúan con otros sistemas y usuarios, etc. ”

No vincularía el valor de un título de CS con lo que hace un desarrollador junior, porque las habilidades que aprende en un programa de CS pueden ayudarlo a lo largo de su carrera.

Lo que hace un ingeniero de software varía enormemente y también lo hace el valor del conocimiento adquirido en un programa de CS.

Hay muchos trabajos de programación en los que los desarrolladores usan lenguajes de programación de alto nivel para crear aplicaciones que toman la entrada del usuario y luego la almacenan, filtran y muestran (CRUD). Este tipo de trabajos requieren muy pocas matemáticas y casi ninguna teoría. En este tipo de trabajos, el valor de un CS es discutible.

Luego hay trabajos donde están los desarrolladores:

  • Diseñando lenguajes de programación
  • Construyendo sistemas de gráficos en 3D
  • Escritura de sistemas operativos
  • Construyendo marcos reutilizables o bibliotecas

En este tipo de trabajos, la educación en los siguientes ayuda mucho:

  • Análisis de algoritmo
  • Teoría del compilador
  • Principios en gráficos 3D
  • Diseño de bases de datos, etc.

Si fueras un estudiante altamente motivado que salga de la escuela con muchos conocimientos en CS, no comenzarías un trabajo haciendo un trabajo ocupado.

Puede tener éxito como ingeniero de software sin un título de CS, pero tener uno tiene valor y puede abrirle algunas puertas.

No, no codificamos todo el día, ¡lo deseo! que buen dia!

Cuando presumiblemente tenía tu edad, sentí lo mismo. Me gradué con una licenciatura en CS, pero tuve dudas acerca de ser un “mono de código”, sin mencionar que no pude encontrar un trabajo (después del accidente de las puntocom). Regresé a la escuela de posgrado por negocios, pensando que era un nivel superior de trabajo.

Me gradué, la economía volvió a la normalidad y conseguí un trabajo, ¡codificando! El trabajo que tenía era en una empresa de consultoría, así que tenía algunas responsabilidades mínimas de interacción / relación con el cliente. Resultó que era bastante bueno en la codificación y avanzó mi carrera; desafortunadamente, el avance en la empresa en la que estaba era sobre aumentar mi exposición al cliente. Muy pronto, me gradué para dirigir principalmente el trabajo de codificación y estar principalmente en la pista de presentación del cliente. Este fue un excelente uso de mis maestros de negocios, donde aprendí mucha jerga comercial excelente;]

Sin embargo, me di cuenta de que no había nada como el zen pacífico de sentarse con una taza de café y codificar una solución a un problema difícil. Fui a mi gerente y conseguí un trabajo en el back office, ¡codificando todo el día! No podría haber sido más feliz, qué destino irónico.

Desde entonces, hubo una buena racha de 3-4 años antes de avanzar demasiado lejos donde estaba codificando todo el día. Estos fueron buenos años, pero a medida que ganas experiencia como ingeniero de software, tienes más impacto ayudando a otros que tener las manos en el teclado. Hoy, paso la mayoría de los días en reuniones de diseño, escribiendo documentos de diseño, respondiendo muchas preguntas, estableciendo expectativas, restableciendo expectativas, comunicando planes, administrando informes, administrando a mis clientes, administrando a mi gerente, ayudando a mis compañeros, etc. Si realmente recibo un hora al día para codificar, me alegro.

Sobre si es o no estresante, la respuesta es que esto depende completamente de la compañía en la que se encuentre, no nada sobre ingeniería de software. Hasta ahora he trabajado en un buen número de lugares en mi carrera; la función de mi estrés laboral es
a) Si mi rol está alineado con mis fortalezas o no, y si no, si soy consciente de ello
b) La cultura de la empresa.

Me tomó mucho tiempo descubrir a) yb), parece tan obvio por escrito, pero no es obvio en la vida real.

A medida que avanza en su carrera, examine y controle su estrés. Si es a), hable con su gerente. Si es b) no tengas miedo de “ser el cambio que quieres ver en el mundo” y trata de cambiar la cultura, pero no pierdas demasiado tiempo dedicándote a un liderazgo pobre. El problema con un liderazgo pobre y una cultura tóxica es que las personas que prosperan en él, son aquellos que lo refuerzan y lo que se necesita para cambiarlo es exponencialmente. Es posible que hayas oído hablar de la “regla de no gilipollas”, bueno, si obtienes 1 gilipollas en una buena cultura, es devastador. El segundo imbécil todavía duele … cuando llegas al vigésimo imbécil, te estás estancando porque hay rendimientos decrecientes en los imbéciles … y a nadie le importa si contratas a uno más. Moraleja: huir de pendejos. Si alguien no te trata bien en una entrevista, eso es una señal de alerta. Busque lo que es “correcto” cuando elija empresas.

Si es a) yb), ¡entonces debes pensar en lo que salió mal cuando aceptaste la oferta de trabajo y nunca volver a hacerlo!

tl; dr: ¡la codificación es divertida! El estrés no está relacionado con la codificación, ¡es donde se codifica!

Los ingenieros de software aplican los principios y técnicas de la informática, la ingeniería y el análisis matemático al diseño, desarrollo, prueba y evaluación del software y los sistemas que permiten que las computadoras realicen sus numerosas aplicaciones. Lea el artículo completo aquí.

Convierten una especificación de software en una pieza de software totalmente funcional. Esto puede implicar trabajar en especificaciones, código y pruebas, ya que el desarrollador es el responsable de producir el producto, no solo escribir el código.

El ingeniero de software no hace una tarea en particular. Hay varias cosas que hacen. El trabajo principal que hacen es crear un nuevo software o aplicación, en el proceso de creación en sí hay muchas subsecciones como el diseño y las pruebas una vez que el software está construido. así que estos son flujos diferentes y son realizados por diferentes personas y se conocen como ingenieros de software.

Trabajo 9-5 y honestamente paso la mayor parte del tiempo caminando pensando en cómo resolver el problema actual. Probablemente paso la menor cantidad de tiempo escribiendo código y diría que la mayoría son probablemente iguales. Se pasa mucho tiempo pensando en el tema, luego discutiendo con colegas, tal vez anotando algunas ideas, una búsqueda en Google aquí y allá, y eventualmente se escriben algunas líneas de código. Luego pasa a probar / depurar, y así sucesivamente.

Definitivamente puede ser estresante cuando tienes una fecha límite y un error loco que simplemente no puedes encontrar, pero cada trabajo / carrera puede ser estresante. Si realmente te apasiona la codificación, creo que puedes lidiar con un poco de estrés. Sin embargo, realmente se reduce a lo que quieres. Si te encanta codificar, no creo que nada deba detenerte.

Sí, tú, “codifica todo el día”.

También interactúas con otros humanos, resuelves problemas, vas a beber y te emocionas.

Algunas compañías están caídas, en los escritorios, programando … con poca interacción social. En algunos trabajos, hay un montón de interacción, creatividad y resolución de problemas abierta, con pizarras, gritos y liberación cuando se resuelve un problema colosal.

La computadora es solo una herramienta. Tu imaginación puede entrar en juego; Puede que no. Puede confiar mucho en los demás; No deberias.

No puedo hablar por nadie más, pero paso la mayor parte de mi tiempo escribiendo café y pensando.

Cuando termino de pensar, paso algunas horas escribiendo código, probando y depurando. ¡Entonces vuelvo a pensar un poco más!

Escriben el código de la computadora que describe e instruye las acciones que implementan las máquinas en el sistema.

Pueden crear algo de la nada.

Escribe, mantiene y depura el código (programa de software). Incluso la página que está leyendo es compatible con miles de líneas de código desde el front-end hasta el servidor.

Principalmente leer el código de otras personas, la documentación de otras personas, buscar en Google las respuestas y jugar ping pong.

More Interesting

¿Cuándo es seguro llamarse programador / ingeniero de software? ¿Cuánta práctica tuviste que hacer antes de sentirte lo suficientemente cómodo para trabajar con tus habilidades?

Uber (empresa): ¿Cómo solicito en línea una pasantía de ingeniería de software en Uber?

Realmente disfruto escribiendo software como pasatiempo, pero rara vez puedo hacerlo durante más de unas pocas horas a la semana. ¿Cuáles son las probabilidades de que también me gustaría escribir software como un trabajo real, donde estaría codificando todo el día todos los días?

Trabajando como ingeniero de pruebas de software (manual) con solo 1 año de experiencia en una empresa, ¿puedo pensar en dejarlo ya que no siento pasión por trabajar?

¿Puede un desarrollador de SharePoint ser un desarrollador de pila completa?

¿Por qué los estudiantes de ingeniería informática / software necesitan un título para obtener un trabajo?

¿Existe demanda de consultorías de desarrollo web en Canadá?

¿Con qué frecuencia los ingenieros de software cambian su especialización?

¿La ingeniería de software ofrece mejores perspectivas profesionales a largo plazo que la ingeniería mecánica / eléctrica?

Soy un probador de software manual con 1.5 años de experiencia y quiero darle a mi carrera nuevas adiciones de valor. ¿Qué puedo hacer para que mi perfil se vea mejor?

Empecé a programar cuando tenía doce años. ¿Es una edad suficientemente buena para comenzar si quiero ser ingeniero de software?

Cómo conseguir un trabajo como ingeniero de software

Soy un desarrollador de software con un año de experiencia. Estoy muy interesado en cosas de seguridad. ¿Alguien podría decirme la forma de ser un hacker?

El título universitario solo es necesario para este corto período cuando te gradúas y buscas un trabajo, ¿verdad?

¿Cuáles son los pros y los contras de elegir un trabajo de autorización de alto secreto en lugar de un trabajo de producto comercial superior (como ingeniero de software)?