Los algoritmos son el proceso paso a paso con el que resolvemos problemas, no solo de ingeniería, sino de todo tipo. Estos algoritmos reciben una entrada, ya sea texto, números o cualquier otro tipo de dato, realiza los cálculos necesarios y como resultado convierten estos datos en la información valiosa que necesitamos.
Las computadoras tienen el super poder de no equivocarse. ¡Nunca! Siempre que suma 1 + 1 retornará 2. Lo que sí puede causar problemas es que configuremos mal nuestro algoritmo y obtengamos resultados incorrectos. No porque la computadora se equivoque, sino porque nosotros lo desarrollamos mal.
Como desarrolladora de software tienes la importante responsabilidad de definir muy bien los requerimientos para el sistema que vas a programar, configurar muy bien la lógica de tu algoritmo y darle mantenimiento para solucionar los problemas que aparezcan en el futuro.
Los humanos construimos nuestra comunicación con idiomas, lenguajes como español, inglés y portugués, dependiendo del lugar donde viva la persona con la que queremos conversar.
Las computadoras también tienen sus propios idiomas para escribir algoritmos, los conocemos como lenguajes de programación. Casi todos los lenguajes tienen la misma estructura, pero cambian un poco las palabras y símbolos con los que funcionan.
Además, todo lenguaje tiene un objetivo, es decir, está mejor preparado para resolver ciertos problemas mejor que otros.
Así como estos existen muchos más lenguajes con propuestas muy interesantes. Cada año cambia la demanda de cada lenguaje, así que debes formarte como ingeniera agnóstica, una desarrolladora de software sin miedo a aprender y usar cualquier lenguaje de programación.
El desarrollo de software abarca muchas disciplinas y áreas de especialización. Una vez aprendas a programar podrás especializarte en muchas más carreras.
La ingeniería de software se encarga de construir la infraestructura de proyectos muy ambiciosos, impactando directa e indirectamente a cientos, miles o millones de personas (dependiendo del proyecto, claro).
Imagina que aprender a programar es equivalente a crear un tubo. Sabiendo muchísimo sobre construcción de tubos puedes incluso hacer el sistema de tuberías de tu casa o tus vecinos. La ingeniería de software va más allá: se encarga de la creación, mantenimiento y distribución de todos los sistemas de tuberías en barrios, ciudades o países enteros. Así de grande es la complejidad, responsabilidad e impacto que puedes lograr como ingeniera de software.
Los equipos de tecnología son muy diversos y requieren un equipo multidisciplinario. Prepárate para aprender una o varias de estas carreras. Algunas de las labores que puedes ejercer profesionalmente son:
El desarrollo frontend es la parte visual de una aplicación web. Son los botones, formularios, imágenes, textos y demás con los que interactúan los usuarios de cualquier plataforma online.
Estas se construyen con HTML, CSS, lenguajes de maquetación para dar estructura y estilos, y JavaScript, un lenguaje de programación especial porque funciona directamente en tu navegador, ya sea Chrome, Firefox, Safari u Opera.
Los usuarios le dan toda su información al frontend, pero ahí no la podemos guardar por motivos de seguridad, escalabilidad e interconectividad. Si quieres construir una aplicación altamente profesional, también debes aprender a conectarte / comunicarte con el backend.
El desarrollo backend se encarga de procesar la información de nuestros usuarios y almacenarla en bases de datos. Puede ser extremadamente complejo. Debes centralizar datos, diseñar un sistema que soporte nuevas características sin romper nada en el proceso, distribuir la información a todas las aplicaciones con un buen tiempo de respuesta, entre muchas otras responsabilidades.
Al programar backend no solo usas lenguajes de programación, también trabajarás con frameworks de desarrollo backend, paquetes de código que grandes comunidades de software construyeron para facilitarnos la vida.
Ejemplos de estos son Express.js para Node.js, Django y Flask para Python, Java Spring para Java, Laravel y Symphony para PHP, Rails para Ruby, entre muchos otros.
Así como en el frontend, el desarrollo móvil se encarga de la interacción con los usuarios, aunque no de un sitio web, sino en una aplicación móvil.
Los principales sistemas operativos para móviles son iOS y Android. Aunque comparten muchos conceptos y técnicas, los lenguajes y herramientas para desarrollar en cada uno son diferentes, así que debes aprender ambas por separado o especializarte como experta en ambas.
En Android usamos Java o Kotlin con Android Studio. Y en iOS usamos Swift con Xcode.
Si dominamos estas tecnologías, también podemos aprender desarrollo multiplataforma, herramientas donde con casi exactamente el mismo código podemos hacer aplicaciones para múltiples sistemas, ya sean móviles, web o de escritorio (incluso videojuegos para todas las consolas).
Los motores de videojuegos nos facilitan mucho todo el trabajo que implica desarrollar de videojuegos profesionales. Además, nos proporcionan herramientas con la que aceleramos nuestra labor a niveles extraordinarios, de forma que podemos crear mecánicas, historias y experiencias de mucho más impacto.
Algunos de estos motores son Unity, donde programamos con C#, y Unreal Engine, donde usamos C++. También nos permiten usar blueprints, un sistema de programación visual para definir la lógica y animaciones de nuestro juego.
Aprendiendo a desarrollar videojuegos podrás crear todo tipo de mundos, ya sea con 2D, 3D, RPG o incluso en realidad virtual.
El quality assurance y las pruebas de software nos permiten identificar errores de nuestro código para poder corregirlos y que causen el menor impacto negativo para nuestro equipo. Consiste en realizar pruebas a nuestros productos de forma manual (por humanos) y/o automatizada (por máquinas) para garantizar la buena calidad de nuestros servicios.
El testing no solo es una habilidad fundamental e indispensable para cualquier desarrolladora de software profesional, también puede convertirse en un rol o especialización, incluso podemos encontrar áreas únicamente de QA dentro de los equipo más robustos de programación.
DevOps son la serie de prácticas para enviar nuestro código a producción, de local en nuestra computadora a un servidor en internet. Dominando el cómputo en la nube podrás preparar a tu aplicación para que mantener un buen rendimiento con millones de usuarios en paralelo. Y aprendiendo devops a profundidad podrás definir cuáles son las mejores estrategias para que los despliegues de tu plataforma sean rápidos, seguros y efectivos.
Luego de aprender DevOps de forma general puedes super especializarte con los proveedores de servicios en la nube más poderosos de la tierra: Amazon Web Services, Microsoft Azure y Google Cloud Platform.
Las arquitectas de software son las encargas de tomar las decisiones de estructura, metodología, tecnologías y flujo de datos en los mejores equipos de programación.
Son las personas que eligen cómo construir nuestras aplicaciones, no por gustos personales, sino por conocer a profundidad la complejidad de nuestro proyecto, cuáles herramientas son mejores para cada caso y, por lo tanto, cuáles debemos usar para nuestro negocio.
Sin importar si quieres convertirte en programadora experta o arquitecta y gestora de proyectos, aprender arquitectura de software te ayudará a comprender la magnitud a la que puede llegar el software. No solo escribimos código, también debemos coordinar cómo se conecta todo un equipo de trabajo profesional.
Seguro has oido sobre hackers. Lo que tal vez debes re-aprender es que, así como hay criminales informáticos, también puedes convertirte en hacker ética o experta en algún ramo de seguridad informática, ya sea criptografía, análisis de malware, especialista en hacer código seguro o incluso ser la encargada de proteger una institución mediante el cumplimiento de normas de protección de datos y gestión de riesgos.
El camino para lograrlo no es solo aprender a programar. También debes dominar múltiples habilidades, desde ingeniería social (vulnerabilidades humanas) hasta técnicas de cifrado, pensamiento analítico, creatividad y técnicas de pentesting avanzadas.
Resiste la tentación del lado oscuro. Recuerda usar todo este conocimiento para el bien y la seguridad de las personas que utilizan sistemas informáticos.
La Ciencia de Datos e inteligencia de negocios combina programación y matemáticas para realizar análisis de datos con el fin de que las decisiones de nuestro negocio no se basen en intuiciones o corazonadas, sino información verídica y bien estudiada que podemos medir, examinar y mejorar a lo largo del tiempo.
Podemos resumir el flujo de trabajo en obtener, procesar, guardar, etiquetar y optimizar datos para un posterior análisis. Para cualquier rol necesitas entrenamiento general y profundo en todas la áreas del data science (ingeniería, matemáticas y negocios), pero también puedes especializarte en diferentes roles, como Data Engineer, Data Scientist y Machine Learning Engineer.
Las computer scientists son las personas que aplican matemáticas y algoritmos aa un nivel muy avanzado para construir la tecnología del futuro, las herramientas que usará la próxima generación generación de desarrolladoras de software.
Estas pueden ir desde la creación de sistemas operativos, navegadores web o incluso nuevos lenguajes de programación, precisamente lo que aprenderás en el Curso de Introducción al Desarrollo de Lenguajes de Programación y en el Curso de Creación de Intérpretes de Software.
Aunque en la Escuela de Programación y Desarrollo de Software vamos a aprender algoritmos y flujos de trabajo de alta complejidad, lo único que necesitas para iniciar es una computadora, conexión a internet y una suscripción a Platzi. Empezamos completamente desde cero, aprendiendo desde cómo funcionan las computadoras por dentro hasta instalar y configurar un entorno de desarrollo profesional en cualquiera que sea tu sistema operativo.
¡No esperes más para empezar!
Algoritmo: Conjunto ordenado de operaciones sistemáticas que permite hacer un cálculo y hallar la solución de un tipo de problemas.
JavaScript: JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, es basado en prototipos, imperativo, débilmente tipado y dinámico.
Python: Lenguaje de programación de alto nivel y de propósito general, caracterizado por la exigencia de uso de la indentación como forma de estructura del código lo que logra una mejor lectura del mismo. Muy usado actualmente para ciencia de datos y machine learning.
Servidor: Cuando una página web es visitada, los datos se envían desde alguna computadora a algún lugar a tu computadora a través del internet. Esa otra computadora es un servidor, configurada especialmente para entregar información a otras computadoras que la soliciten.
Backend: Parte del software que actua fuera de los ojos del usuario, en el desarrollo web es la capa que se encarga de manejar la información y las reglas del negocio
API: Aplicación que funciona como interfaz de programación, la cual es usada como biblioteca y proporciona interoperabilidad entre sistemas.
Git: Es un servicio de control de versiones.
Videojuego: Es un juego electrónico que permite la interacción de uno o más usuarios con un dispositivo que emite imágenes de video en diversas plataformas.
Frontend: Con este término se identifica al conjunto de tecnologías que dan estructura, apariencia y comportamientos de interactividad a los sitios y aplicaciones web modernas de cara a los clientes o usuarios finales en un navegador.
Bases de datos: Las bases de datos son contenedores o repositorios digitales en los que se almacenan de manera estructurada y organizada datos que comparten un mismo contexto para su posterior procesamiento y consulta.
DevOps: Modelo que mejora la comunicación entre el ambiente de desarrollo y producción a través de un enfoque de entrega continua.
Sistema Operativo: El el conjunto de órdenes y programas que controlan los procesos básicos interacción con el hardware.
Cloud computing: El término cloud computing se refiere a la estrategia (de pago) de almacenar en bases de datos aplicaciones y otros recursos gestionados y procesados con el uso de una red de servidores hospedados en internet y no en equipos locales como PCs o servidores personales.
PHP: (PHP: Hypertext Preprocessor) Es un lenguaje de programación open source y de propósito general que fue desarrollado originalmente para generar contenido dinámico en un sitio web.
en
Arquitecta TI en Sofka Technologies
Diego Camacho
hace 4 días
Majogarcia
hace 7 días
Alejandra Camacho
hace 11 días
Platzi
hace 13 días