Leira
Mechanical Engineer turned Software Engineer. Previously at Capital One, Welcome, and Jam.
¡Todo lo que puedes hacer como Software Engineer!
Mon Nov 28 2022
Photo by Emile Perron on Unsplash.
Como ya he dicho anteriormente, tener una carrera como Software Engineer no requiere un grado universitario. Es una de las carreras mejores remuneradas y con alta demanda. Es un trabajo con mucha flexibilidad que puedes hacer desde tu casa o en una oficina. Para aprender sobre otros beneficios de esta carrera puedes leer el blog Una carrera en tecnología sin programar.
Software Engineer es un título genérico, pero tiene muchas especializaciones. Aquí te voy a dar un overview de todo lo que puedes hacer como ingeniero/a de software. Además, compartiré contigo recursos para aprender los fundamentos. La semana que viene publicaré una guía para que puedas convertirte en Fullstack Software Engineer.
No tienes que saberlo todo para trabajar como Software Engineer.
Especializaciones de Software Engineering
Estas especializaciones no son cajitas en las que te tienes que quedar siempre. Pueden ser una guía para que aprendas lo necesario para hacer lo que quieres. Es posible que a través de tu carrera tomes roles que abarquen diferentes especializaciones.
Mi primer empleo fue como Fullstack Software Engineer donde trabajaba toda parte del producto. Luego, roté a ser Mobile Software Engineer trabajando en la aplicación de banca para iPhones de Capital One. Al dejar Capital One, tuve un trabajo como Frontend Engineer. Ahora soy Frontend Engineer, pero la meta es aprender del backend y cada otra parte necesaria para hacer que Jam funcione. En Mofongo Jobs, tengo que hacerlo todo. Lo que no sé hacer lo aprendo en el camino.
Al final de cada descripción te digo cuales son algunos lenguajes comunes de cada especialización.
Frontend. Conocido también como UI Engineer o simplemente Web Engineer, este construye la interface con la que interactúan los usuarios. El frontend es lo que ves en un website. Muchas veces, trabaja de la mano con el diseñador de UI/UX para lograr la visión del producto. Suele ser responsable por el rendimiento del website y de que se vean bien tanto en los browsers de las computadoras como en el de los celulares. Lenguajes: HTML, CSS, JavaScript.
Backend. Se encarga de la interacción entre el frontend y la base de datos. Cada vez que haces llenas una forma o hundes un botón de Save, es probable que estés enviando una acción al backend que este procesa para los datos pertinentes en la base de datos. Lenguajes: JavaScript, Python, Go.
Fullstack. Hay quienes dicen que no existe tal cosa pues es imposible saberlo todo. Fullstack Engineer generalmente se refiere a que puede hacer frontend y backend según la necesidad. A veces, también require conocimiento en otras áreas como DevOps o Mobile. Lenguajes: JavaScript, Ruby, TypeScript.
Data. Los ingenieros de data construyen los sistemas e infraestructura para recoger y utilizar información o datos. Usualmente esta información es analizada por los científicos de información. Lenguajes: Python, R, JavaScript.
Mobile. Si te interesa crear aplicaciones para celulares o tabletas, Mobile Engineering es para ti. Puedes hacer aplicaciones específicas para un tipo de teléfono. Por ejemplo, puedes aprender Swift y desarrollar aplicaciones para iPhones o Kotlin y desarrollar aplicaciones para Androids. Otra opción es aprender un framework que cree las aplicaciones para ambos tipos de celulares a la vez. Por ejemplo, puedes aprender JavaScript para utilizar React Native. Así escribes código una vez que funciona para ambas plataformas. Lenguajes: Swift, Kotlin, Java, JavaScript.
Machine Learning. Estos diseñan algoritmos con inteligencia artificial capaces de aprender. Esto les permite automatizar predicciones. Lenguajes: Python, R, JavaScript.
DevOps or Cloud. Todo código que se escribe depende de una infraestructura para que llegue al internet y, por ende, a los usuarios. Los ingenieros de DevOps o de Cloud se enfocan en eso. La infraestructura puede ser un sistema de computadoras en un edificio o puede ser en la nube. La nube también es un sistema de computadoras, pero la compañía (AWS, Azure, etc.) se encarga de la parte física. Es responsabilidad del Cloud Engineer codificar la infraestructura necesaria utilizando los recursos alquilados de la nube. Lenguajes: JavaScript, Go, Python.
Fundamentos de Software
Todas las especializaciones de software comparten habilidades en común.
Lenguaje. Primero, debes escoger un lenguaje para aprender. Busca recursos online para aprenderlo. Encontrarás cursos, libros, aplicaciones interactivas. Utiliza una combinación de estas. Luego, practícalo. Crea proyectos, completa challenges, escribe blog posts sobre lo que vas aprendiendo.
Editors. Vas a necesitar un editor para escribir código. Claro, código es texto así que en teoría puedes escribirlo en Notepad o Word, pero ¿por qué complicarte la vida? Los editores nos ayudan detectando errores, aplicando colores estratégicamente, y un sinnúmero de otras maneras. ¡Aprovéchalo! Cada ingeniero tiene un editor favorito y a veces va a depender del lenguaje. Por ejemplo, para Swift es difícil no utilizar Xcode. Para JavaScript Visual Studio Code es el preferido.
Shell Scripting & Terminal. Una de las herramientas más poderosas de los ingenieros de software es el terminal. Con el lenguaje bash puedes automatizar muchas tareas. Recurso: Shell Tools & Scripting.
Version control. Git es un sistema que te permite mantener récord de los cambios que haces a los archivos de tu proyecto. De esta manera, puedes volver atrás o comparar diferentes versiones. Recurso: Git and GitHub Tutorial – Version Control for Beginners.
Debugging. El arte de debugging se refiere a buscar y arreglar defectos en nuestros programas.Recurso: What is Debugging? How to Debug Your Code for Beginners.
Testing. Al escribir código es importante crear tests automatizado que puedan probar el funcionamiento de nuestro código automáticamente. Esto evita que publiquemos código defectuoso.
La semana que viene publicaré una guía para que puedas convertirte en Fullstack Software Engineer.
¿Tienes más preguntas? Escríbeme a leira[at]mofongojobs.com.
— Leira
Get notified about new posts!
Unlock resources for your job search, straight to your inbox!
You're in! ✅
Leira
Mechanical Engineer turned Software Engineer. Previously at Capital One, Welcome, and Jam.