¿Qué es la mentalidad de un “ingeniero de software”?

¿Cuál es la mentalidad de un ingeniero de software? Es específico, analítico y lógico … muy lógico. Pensamos en todo.

Tiene que ser. Las computadoras están diseñadas para recibir instrucciones (a través del código que proporcionamos) de una manera muy literal y lógica, y necesitamos poder pensar como una computadora, para asegurarnos de proporcionar una instrucción adecuada que no solo entienda, sino que responda de la manera que queramos.

Mira, las computadoras no tienen el beneficio de los ojos o los oídos o años de interacción humana genuina como nosotros, lo que ayuda a proporcionar contexto a una conversación dada. Dicho contexto nos permite diferenciar entre el significado real y el significado implícito de palabras específicas, solicitudes, preguntas, etc., pero las computadoras no pueden hacerlo por sí mismas. Necesitan que se les diga cada cosa, exactamente como es, en su idioma, para poder respondernos adecuadamente.

¿Cómo se aplica este tipo de mentalidad a la vida cotidiana?

Puede ser diferente de una persona a otra, pero me gusta pensar que un hilo común que compartimos en el proceso de pensamiento sería el análisis constante de cuál sería la forma más eficiente de completar nuestras tareas diarias (o cualquier cosa en general).

Por ejemplo:

Me levanto por la mañana y tengo varias cosas que hacer, como desayunar, ducharme, vestirme, buscar correos electrónicos en busca de algo urgente, etc. Ahora podría desayunar, lo que me llevará unos 5 minutos dependiendo de lo que haga. comer o podría ducharme primero y desayunar mientras mi cabello se seca un poco. ¿Es más eficiente? ¿Si? Muy bien, entonces estoy haciendo eso!

Gran parte de nuestro proceso de pensamiento para cualquier tarea o situación en la vida tomará una forma similar a la anterior, una especie de análisis de costo-beneficio donde comparamos una forma de hacer algo con otra, algunas veces examinando todas las posibilidades y resultados potenciales, y elija la forma más beneficiosa, más eficiente, más lo que sea que sea que queramos para lograrlo.

Si es una conversación casual que estamos teniendo con alguien, estaremos pensando profundamente en cuál es la mejor manera de responder a cada pequeña cosa. Si nos hacen una pregunta, revisaremos ese análisis de costo-beneficio para determinar cuál creemos que es la mejor respuesta.

Sin embargo, algunas veces, no es la respuesta que estás buscando, como dice Monica Valverde, ¡algunas veces las personas solo quieren desahogarse! En cuyo caso, debemos ser conscientes de la situación y practicar la simpatía y la empatía para que no nos adormezcamos ante las emociones de los demás. Siempre debemos recordar que no todos piensan de la misma manera que nosotros, y enfocamos cada situación, no como un problema a resolver (como solemos hacer), sino con una mente abierta y disposición para escuchar.

En primer lugar, los ingenieros de software no son especies completamente diferentes. Han venido de la misma cultura, la misma comunidad de donde provienen el resto de los profesionales como la policía, los políticos, los científicos y los delincuentes.

Por lo tanto, los ingenieros de software no tienen una mentalidad completamente diferente. Cuando un programador termina de escribir al menos 3–4 proyectos, se da cuenta de los siguientes puntos y luego estos puntos se vuelven habituales al igual que la policía es habitual en sospechar de todos, así como los ladrones son habituales en la búsqueda de objetivos blandos.

  1. La primera versión de cada programa se actualizará y, por lo tanto, debemos esforzarnos por escribir código que requiera cambios mínimos en el futuro y que sea fácil de cambiar. Esto lleva al segundo punto
  2. Encontrar patrones en programas / proyectos ayuda a escribir código genérico y reutilizable
  3. ¿Cuáles son las diferentes formas de resolver el problema? En la mayoría de los casos, un problema puede resolverse de más de una manera y necesitamos encontrar el mejor enfoque. A veces, los ingenieros de software tienden a aplicar esto también en la vida real (debido a la costumbre de optimizar todo en el software)
  4. Cómo hacer tareas en paralelo (multitarea)
  5. Muchas cosas más (agregaré algunos puntos más y actualizaré la respuesta. Mire el primer punto para comprender por qué he agregado este)

Se trata de practicar. Si alguien sigue haciendo una cosa durante algunas semanas / meses / años, entonces esa persona se vuelve bastante buena en eso y automáticamente desarrolla una mentalidad particular. La misma regla se aplica también a los ingenieros de software. Nada especial sobre ellos. Por supuesto, hay algunas personas muy talentosas / talentosas como Alan Turing, Dennis Ritchie, Linus Trovalds, etc., pero esas personas son raras.

Para mí, es un deseo de resolver problemas y hacer que las cosas funcionen.

La programación es una gran cantidad de depuración y corrección de errores. He visto muchos ejemplos de personas que comienzan a aprender a codificar, y luego retroceden después de la primera sensación de incomodidad por el error que no pueden resolver.

¡El verdadero ingeniero / programador de software se sentará en el problema día y noche, probando soluciones, probando diferentes enfoques una y otra vez, hasta que finalmente funcione!

Imagine que lo dejan caer en medio de un incendio forestal, y las únicas herramientas que tiene son 10 galones de gasolina y un encendedor. Te pusieron en un área donde el fuego aún no ha envuelto del todo, pero se está acercando rápidamente, tienes un par de horas como máximo. ¿Qué harías?

Un ingeniero de software diría “Vamos a verter un poco de gasolina y comenzar una combustión controlada, y lentamente comenzar a quemar todo en nuestra área”.

Después de quemar esa área, el fuego que se aproxima no tendrá nada que quemar, por lo que el desarrollador de software estaría parado sobre brasas quemadas y ese fuego no podrá alcanzarlas. 🙂

Pienso más que la persona promedio:

  • Les gusta saber cómo funcionan las cosas nuevas
    aprender nuevas herramientas / nuevos lenguajes informáticos
  • Les gusta trabajar con computadoras todo el día.
  • Son capaces de pensar de manera abstracta.
    esto es necesario para traducir el conocimiento del dominio en código de computadora
  • Tienen la capacidad de seguir intentando hasta que funcione como quieren que funcione
    esto es necesario porque habrá desafíos que parecen irresolubles al principio
  • Pueden manejar la frustración de las cosas que van mal / contratiempos
    Esto es necesario porque en las TIC muchas cosas pueden salir mal y saldrán mal

Supongo que la naturaleza de nuestras carreras nos influye hasta cierto punto. Siendo yo mismo un programador / ingeniero de software / desarrollador, he notado que tendemos a:

  • Reaccione a cada problema de la vida pensando en cómo resolverlo: a medida que enfrentamos problemas a diario, tendemos a reaccionar de manera menos dramática y de una manera más práctica. Podríamos comenzar a calcular las causas y preguntarnos sobre las diferentes formas de resolverlo. ¿El problema? A veces la gente solo quiere desahogarse, pero comenzamos a dar sugerencias, a veces demasiadas. ¿Los profesionales? No nos estresamos fácilmente.
  • Creatividad en soluciones: a veces nuestras soluciones pueden parecer extrañas, pero está bien mientras funcione.
  • Busque patrones cuando analice cómo funcionan las cosas: buscamos la lógica y el patrón detrás de las cosas, y a veces podríamos perdernos en los detalles. Pero puede ser divertido y podríamos tener algunos pequeños datos curiosos que venimos a aprender a compartir.
  • Estructuramos y categorizamos cosas, y vemos sistemas: vemos sistemas y enlaces en todo. Eso y Organizamos las cosas de manera que tenga sentido para nosotros.

More Interesting

¿Cuál es la combinación correcta entre practicidad y teoría en un título en informática? ¿Es uno mejor que el otro?

¿Cuál es la importancia de las certificaciones técnicas?

¿Conseguiré trabajo con un 57% hasta el sexto agregado en ingeniería informática? Sin retrasos, graduándose en 2018.

¿Cómo es la vida más fresca con experiencia en informática en L&T Technology Services?

¿Qué pueden hacer los estudiantes de CSE del MAIT (como entrenamiento de verano) después de su segundo año?

¿Dejarías un trabajo bien remunerado para tener la oportunidad de desarrollar experiencia profesional?

¿Puedes conseguir un trabajo después de terminar Codeacademy y Treehouse?

¿Puedo especializarme en ciencias de la computación aunque no soy tan bueno en matemáticas ni tengo experiencia con computadoras?

¿Cómo un título de CS te convierte en un mejor programador?

¿Hay alguna desventaja en un título de Informática Aplicada?

Tengo una oferta de doctorado de CMU en aprendizaje automático, y actualmente trabajo como científico de datos en el Área de la Bahía. ¿Qué tengo que hacer? Me apasiona el campo, pero me siento demasiado viejo para la escuela, y mi objetivo es crear una empresa.

¿Hay alguna carrera que pueda seguir con la biología y la informática?

¿Cuándo puedo considerarme un 'Programador'?

¿Cuáles son las ventajas y desventajas de cambiar de ingeniería mecánica a ingeniería informática?

¿Cómo puedo conseguir un trabajo haciendo investigación bioinformática sin obtener un doctorado?