¿Quieres ser INGENIERO DE SOFTWARE? Esto es lo que hago en mi trabajo

¿Quieres ser INGENIERO DE SOFTWARE? 🧑🏽‍💻 Esto es lo que hago en mi trabajo.

Apr 13, 2022

Este no es un blog más de “Un día en la vida de un desarrollador” por lo que tal vez muchas de estas actividades las vas a terminar haciendo cuando trabajes como programador siendo posible que tu forma de trabajo y tus responsabilidades sea parecidas a las mias. Me gusta pensar que hacemos las cosas diferentes en Seattle porque este es el corazón de la tecnología, pero hay que destacar que vivimos en un mundo muy globalizado. La información viaja tan rápido actualmente que permite que cualquier proceso novedoso se transmita de manera inmediata en diferentes partes del mundo, sin embargo antes de contarte sobre mis responsabilidades como líder, voy a mencionarte mis responsabilidades como ingeniero de software.

¿Qué Hago?

Al momento de trabajar para una compañía grande, cliente u amigo, podemos tener proyectos que van desde una página web hasta una aplicación. Actualmente yo trabajo con clientes que no puedo nombrar (NDA). Sin embargo, te puedo decir que es una compañía relativamente grande y la aplicación en la que trabajo está siendo utilizada en diferentes regiones de Estados Unidos, por lo que hay personas que utilizan esta aplicación diariamente y mi responsabilidad es escribir código para que las funcionalidades de dicha app sean utilizadas por usuarios todos los días.

Desarrollador Web

Cuando trabajaba en páginas web, me sentaba frente a la PC y trabajaba por unas 8 horas al día aproximadamente. Me tomaba uno o dos “breaks”, comía algunos snacks que teníamos en la oficina, caminaba por el edificio, salía a tomar aire fresco y volvía otra vez al código. Pero ¿Qué es lo que estaba construyendo en esos tiempos? Estaba construyendo una página web que tenía otras cinco adicionales que fueron creadas por un diseñador que empleó Photoshop. El tomó en cuenta la experiencia del usuario, en cómo el usuario puede usar esta página de forma cómoda, interactiva, con animaciones, botones. Me compartía esa información en archivos PDF y yo simplemente empezaba a generar las diferentes piezas porque cuando tienes un diseño de este tipo, empiezas a notar las diferentes piezas que no están animadas, detallas los botones, utilizas HTML para transformarlos, CSS para darles estilos y JavaScript para la interactividad.

En ese tiempo utilizaba GSAP una librería para animaciones de JavaScript (tengo un tutorial a cerca de esa librería que puedes ver aquí). En este trabajo no teníamos ningún requerimiento mas que terminar el proyecto lo más rápido posible y tratar de realizarlo en tres meses porque ese era la fecha límite que le habíamos indicado a nuestro cliente. Yo hablaba con el diseñador y nos preguntábamos cómo podíamos hacer esa página más interesante, hablábamos de efectos, y de otras mejoras.

Tal vez agregábamos unos efectos en los botones, una animación cuando se movía la página, o hablábamos de responsive design. Esas discusiones permitían aumentar la creatividad y con eso la página web mejoró notablemente, por otra parte, tenía que hacer que esa página funcionara en múltiples navegadores.

Es importante mencionar que tengo bastantes computadoras con diferentes sistemas operativos. Tengo también un Raspberry Pi que usa el sistema operativo Raspbian. Al tener distintos dispositivo y navegadores puedes probar una página web en diferentes ambientes. Eso era parte del trabajo, pero de pronto algo no funcionaba en un ambiente específico y tenía que investigar cómo podía arreglarlo, por lo cual pasaba mucho tiempo en Stack Overflow, refinando mis habilidades, estudiando un poco y aplicando los conceptos que aprendía. Podría decir que en ese tiempo era más diseñador web, posteriormente tuve otros trabajos en lo que hice algo parecido, pero me enfoqué en animaciones y pasé ese tiempo utilizando JavaScript, aprendiendo a realizar animaciones con SVG (Gráficos de vectores), lo cual me permitió crecer mucho. Después, cuando empecé a trabajar en aplicaciones más grandes, me percaté que había dejado de ser un desarrollador web y empecé a ser más un ingeniero de software porque en ese tiempo tenía que emplear Angular, React y tenía que trabajar con muchísimos datos y comunicarme con el backend para obtener información.

Ingeniero de Software

Posteriormente, el nivel de complejidad aumentó mucho, dejó de ser simples animaciones y empecé a pensar más en arquitectura, ya que al tener que pedir datos al backend, tenía que pensar en su optimización debido a que recibía miles de datos por parte del frontend, lo cual hacía que la aplicación fuera más lenta a veces. En las páginas web también trabajaba con SEO y analíticas para entender cómo los usuarios utilizaban nuestras páginas, pero cuando empecé a trabajar con aplicaciones, todo se trataba de datos a gran escala. Tenía que empezar a hacer pruebas de software con muchos datos y cuando estos no aparecían, tenía que observar el rendimiento de la aplicación porque si no lo hacia y llegaban datos inesperadamente, la aplicación se podría caer por lo que pasé mucho tiempo optimizando el código, usando Leet Code y Hacker Rank, donde podía estudiar sobre optimización del código y buenas prácticas.

Después empecé a trabajar con equipos más grandes y cuando trabajas con muchas personas en una aplicación, el estilo de trabajo cambia totalmente a diferencia de trabajar individualmente. Cuando trabajas solo no tienes que preocuparte sobre otros desarrolladores y como ellos leen tu código pero cuando empiezas a trabajar en apps de mayor tamaño, empiezas a darte cuenta de que cada línea de código que escribes puede terminar causando problemas, si no es fácil mantener o entender al ser leído por otros desarrolladores. Tienes que escribir código de una forma en que todos nos entendamos de la misma manera; sin embargo, cuando trabajaba en estas aplicaciones más grandes teníamos que tener un buen estilo de escritura del código porque tal vez a un desarrollador le gusta escribir el código de una manera u otra.

Teníamos reuniones con mi equipo y decidimos juntos maneras de mejorar este código, empezamos a utilizar herramientas como Linting y tecnologías como ESlint que asegura que todos sigamos las mismas reglas. Utilizaba un archivo editorConfig que aseguraba que todos los desarrolladores utilizáramos el mismo estilo de código aún cuando trabajábamos con diferentes IDE’s. Así algunos desarrolladores no iban a utilizar tabs, otros espacios y cada línea de código no podía pasar de 80 líneas, antes de fijar estos estándares cada desarrollador podía utilizar lo que deseaba. Esto ayudaba muchísimo con la consistencia del proyecto.

Tengo mucha suerte de trabajar en una compañía que me permite usar algunas horas de la semana para estudiar diferentes tecnologías que me permitían traer nuevas ideas y así contribuir con mi proyecto, era de destacar que los ingenieros de software alrededor mío hacían lo mismo. Ese tiempo también fue valioso para aprender muchos lenguajes backend para poder convertirme en ingeniero Fullstack.

Ingeniero Fullstack

Las responsabilidades de un proyecto únicamente no son escribir código, crear estructura del código, estándares y comunicarse con otros desarrolladores. También me dedicaba a comunicarme con gerentes de proyecto que tienen diferentes responsabilidades dependiendo de la compañía. En mi compañía los project managers se encargan de hablar con los clientes, de determinar cómo va a funcionar un proyecto, los tiempos de construcción del mismo, la comunicación con los ingenieros de software, y calcular el lapso de tiempo para sacar alguna funcionalidad. Dicha comunicación es constante porque seguimos sacando nuevas funcionalidades todo el tiempo.

También hablamos de los tiempos estimados para sacar diferentes funcionalidades, algunas personas creen que va a tomar una semana, otras creen que pueden llevar hasta tres semanas. Por lo que hacer estimaciones es muy difícil utilizamos los números de Fibonacci, también utilizamos Scrum para entregar nuevas funcionalidades frecuentemente. Cuando hay funcionalidades que son muy complejas, me reúno con otros ingenieros de software y usamos un pizarrón donde escribimos ideas. Podemos tratar de desarrollar una funcionalidad de la mejor manera, utilizando nuestra creatividad, conocimientos sobre tecnología y creando código de manera óptima, pero debido al coronavirus ese proceso es muy diferente, en lugar de hacer eso, se realizan llamadas por Slack y podemos definir estas mismas funcionalidades mientras las voy creando simultáneamente.

También trabajó con un equipo de Quality Assurance que se encargan de que todo funcione muy bien con una alta calidad. Si todo sale bien, puedo conectar mi código con el código principal utilizando Git. Tengo ambientes donde puedo probar el código en vivo antes de producción para así probar diferentes funcionalidades. Posteriormente, cuando todo está listo, puedo sacarlo a producción permitiendo que las personas utilicen la app en tiempo real.

Líder De Equipo

¿Cuáles son mis responsabilidades como líder?

Tengo que asegurarme que el código que vaya a producción sea de alta calidad, que pase ciertos estándares de calidad de código y diseño para que sea revisado por nuestros clientes, por lo que tengo conversaciones con el arquitecto del equipo y el director de desarrollo. Con ellos puedo conversar acerca de qué podemos hacer en el futuro del proyecto para que el mismo sea más mantenible y nuestros clientes estén satisfechos con lo que estamos haciendo, para que los ingenieros con los que yo trabajo se sientan cómodos en un ambiente receptivo donde puedan contribuir con ideas y sentirse parte del proyecto. La idea es que seamos efectivos y que cada uno de nosotros tenga cierta autonomía, que sientan que el proyecto es de nosotros por lo que aveces conversamos fuera del lugar de trabajo o vamos a comer en algún restaurante y hablamos de otras cosas diferentes al trabajo.

Pero las mayores responsabilidades como líder es asegurarme que los ingenieros con quienes trabajo tengan las herramientas necesarias para que no se bloqueen. A. mismo tiempo, soy una fuente de conocimientos. Cuando ellos necesitan ayuda o cuando se sienten bloqueados con alguna parte de su código me pueden llamar y trabajamos juntos para resolver ciertos problemas porque al final es mi responsabilidad que entreguemos lo que prometimos a tiempo. Hay una que otra semana en la que tenemos que trabajar algunas horas extras y otras semanas donde tal vez dedicamos más tiempo a estudiar.

Este trabajo es muy interesante pero hay días en que hay altos y bajos. No todo es perfecto, sin embargo en esos días en donde tal vez no estoy de buen humor trato de salir a ejercitarme o buscar alguna distracción. Hoy en día mis responsabilidades han aumentado un poco porque estoy tratando de hacer más vídeos para YouTube.

Esta carrera es simplemente de aprender, estudiar, aplicar y seguir haciéndolo de nuevo. Por ejemplo durante la pandemia sentía que necesitaba algo nuevo y empece a realizar vídeos. Esto vídeos educativos y entretenidos me están permitiendo conocer sobre lo que soy capaz y estoy seguro que tú estás haciendo lo mismo, que estás viendo vídeos y aprendiendo a programar. Algún día tú te convertirás en un ingeniero de software o tal vez ya lo eres y estas creciendo en tu carrera, por eso te deseo lo mejor, sigue estudiando que yo también seguiré haciéndolo para seguir creciendo juntos.

Ya sea que seas nuevo en la programación o busques mejorar tus habilidades, lleva tu carrera al siguiente nivel con uno de nuestros cursos integrales.

Ir a la tienda!

¡Mantente conectado con noticias y actualizaciones!


Únete a nuestra lista de correo para recibir las últimas noticias y actualizaciones de nuestro equipo.
No te preocupes, tu información no será compartida.

No te enviaremos SPAM. Nunca venderemos su información, por ningún motivo.

Cursos Destacados