Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes:$349
$259
Currency
Antes:$349
Ahorras:$90
COMIENZA AHORA

Lleva tu carrera a otro nivel por menos de 1 dólar al día.

Escuela de Programación y Desarrollo de Software

Escuela de Programación y Desarrollo de Software

Aprende programación de cero a profesional para ingeniería de software, ciencia de datos y computer science. Domina la tecnología más demandada en la industria.

Acelera tu carrera profesional

¿Por qué aprender programación?

¿Qué es un algoritmo?

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.

¿Qué es un lenguaje de programación?

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. El software con el que manejamos nuestro día a día también tiene su propio sistema y lenguaje, ya sea open source o privativo.

  • Kotlin, Swift y JavaScript nos ayudan a construir interfaces visuales.
  • Java, Ruby y PHP están optimizados para el desarrollo web backend.
  • Python y R funcionan espectacularmente bien para ciencia y análisis de datos.
  • C# y C++ nos permiten desarrollar videojuegos.
  • C es muy rápido porque maneja muy bien la memoria para optimizar recursos y programar hardware.

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.

¿Qué puedes hacer aprendiendo programación? ¿Cuál es el siguiente paso?

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.

¿Qué es Software Engineering?

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.

  • 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.

  • Mobile development

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.

  • Testing y QA

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. Con este conocimiento puedes incluso crear tu propio lenguaje de programación.

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.

¿Qué es Data Science y Business Intelligence?

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.

¿Qué es Computer Science?

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.

¿Quiénes pueden tomar esta Escuela?

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!

Glosario

Glosario

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.

Aprende de los mejores

Freddy Vega

Freddy Vega

CEO en Platzi

@freddier
Sytse Sijbrandij

Sytse Sijbrandij

Co-founder and CEO en GitLab

@sytses
Guido Contreras Woda

Guido Contreras Woda

Software Engineer en Medallia

@guiwoda
Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Android, Firebase, Java, Geek & Teacher en Platzi

@anncode
Jorge Zavala

Jorge Zavala

CEO en Kinnevo

@jzavala
Belen Ceballos

Belen Ceballos

UX en Platzi

@benjibel
Adrián Estrada

Adrián Estrada

Support Engineer en NodeSource

@edsadr
Ricardo Celis

Ricardo Celis

Course Director en Platzi

@celismx
Daniela Coyotzi

Daniela Coyotzi

Desarrolladora de Videojuegos en HyperBeard

@Poiad_
Mauro Parra Miranda

Mauro Parra Miranda

DevOps Engineer en Limelight Health

@mauropm
Luis Rudge

Luis Rudge

Engineering Lead en Round Pegs Inc

@luisrudge
Claudio Pinkus

Claudio Pinkus

COO en CodeStream

@Claudio_Pinkus
Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Director de tecnologías en Matoosfe

@martosfre
Israel Vázquez Morales

Israel Vázquez Morales

Senior Software Engineer en YouNoodle

@israbaurel
Carolina Gayosso

Carolina Gayosso

Reclutadora en Wave

@CarolinaGayosso
Mauro Chojrin

Mauro Chojrin

Consultor PHP en Independiente

@mchojrin
Santiago Bernal

Santiago Bernal

Software Engineer en Aumentada

@santiaguf
Jhon Edison Castro

Jhon Edison Castro

CTO en Mobility Solutions S.A.S

@edisoncast
Juan Pablo Buriticá

Juan Pablo Buriticá

Head of Engineering, LatAm en Stripe

@Buritica
Diego De Granda

Diego De Granda

Software Engineering Manager en Platzi

@degranda10
Isabel Yepes

Isabel Yepes

Arquitecta TI en Sofka Technologies

Carolina Boquín

Carolina Boquín

Course Director and Recruiter en Platzi

@carolboquin
Antonio Guzmán

Antonio Guzmán

Cloud Customer Enginee en Google

@tonioguzmanf
Italo Morales F

Italo Morales F

Profesor de Programación Web en Rimorsoft Online

@italomoralesf
José de la Luz López

José de la Luz López

Founder & CEO en delt.ai

@josedelaluz_
Anibal Rojas

Anibal Rojas

VP of Engineering en Platzi

@anibalrojas
Silvina Moschini

Silvina Moschini

CEO en SheWorks

@Miss_Internet
Alexander Torrenegra

Alexander Torrenegra

CEO en Torre.co

@torrenegra
Felipe Peña

Felipe Peña

Founder en 9punto5

@patrosmani
Samanta Martínez

Samanta Martínez

Senior Web Engineer en HUGE

@mssroboto
Facundo García Martoni

Facundo García Martoni

Technical Mentor en Platzi

@facmartoni
Catalina Valenzuela

Catalina Valenzuela

Self Employed en

@cavalenzu
Ana Belisa Martínez

Ana Belisa Martínez

Master Coach en Platzi

@anabelisam_
Héctor Vega

Héctor Vega

Course Director en Platzi

@TerranigmArk
Carlos Arriaga Luna

Carlos Arriaga Luna

Specialized Trainer en Amazon Web Services

@CarlosIplusone3
NancyNSalazar

NancyNSalazar

Coach en Platzi Máster

@NancyNSalazar
Enrique Devars

Enrique Devars

Course Director, Facultad de Computer Science en Platzi

@codevars
Jorge Villalobos

Jorge Villalobos

Software Engineer en Microsoft

@jorge_vgut
Quetzally Meza

Quetzally Meza

Course Director en Platzi

@zallyhg
Osmandi Gómez

Osmandi Gómez

Data Engineer en Platzi

@osmandi
Diana Martínez

Diana Martínez

Frontend Developer en Octahedroid

@diana_nerd

Rutas relacionadas para complementar tu aprendizaje

Escuela de Desarrollo Web

Escuela de Desarrollo Web

Aprende desarrollo web Full Stack desde cero con HTML, CSS y JavaScript. Domina herramientas como React, Vue, Angular y backend development con Node.js.
Escuela de Videojuegos

Escuela de Videojuegos

Esta escuela te guiará para convertirte, desde cero, en un profesional listo para diseñar, desarrollar y lanzar un videojuego.
Escuela de Data Science

Escuela de Data Science

Domina las herramientas y técnicas para el procesamiento de Big Data y Ciencia de Datos.