"El software se está comiendo al mundo."— Marc Andreesse
Toda profesión e industria está siendo transformada (o absorbida) por la tecnología digital y el software.
La tecnología está cambiando la manera de trabajar de todas las industrias y sectores, sin importar qué tan "análogas" se hayan considerado.
Esto implica que: en toda profesión, pero muy especialmente en las profesiones que trabajan con conocimiento e información, las personas con una mentalidad tecnológica tienen las de ganar.
Entender cómo funciona la tecnología y el software que transforma(rá) nuestro trabajo y la manera en la cual nos relacionamos nos permite ampliar nuestras capacidades.
Piensa como hacker.
Esto implica
🚀 Aplicaciones Web y stacks
⚙️ Back-end
Aplicaciones que corren en el servidor y que entregan una respuesta (que puede ser en formato HTML, JSON u otras)
🖥 Front-end
Todo lo que ocurre en el lado del usuario (usualmente aplicado al navegador Web, pero también a las apps móviles). En el frontend se recibe y da estilo a la respuesta HTML del servidor, y/o se procesa la respuesta de datos.
Lenguajes de programación vs lenguajes descriptivos vs formatos
-
Lenguajes de programación: se construyen aplicaciones, ejecutan instrucciones, permiten construir lógica, responder a datos, etc.
- "Si ocurre A, haz B"
- JavaScript (Node.js), Java, Python, PHP, Ruby, Scala, Erlang, Go, Swift, Objective-C, R, C, C++, C#, F#, Rust...
-
Lenguajes descriptivos y formatos: no ejecutan instrucciones, simplemente describen el formato o apariencia de un contenido.
- HTML/XML
- CSS
- Markdown
- JSON, CSV (notación o formato)
- ❌ "Debe programar en HTML/CSS"
Frameworks
Los Frameworks son sistemas construidos sobre otros sistemas o lenguajes, usualmente pensados para funcionar a modo de plantilla, andamiaje (scaffolding) o para pre-hacer cosas habituales.
Algunos conocidos:
- Ruby on Rails es un framework basado en Ruby.
- Django es un framework basado en Python.
- Express es un framework basado en Node.js (que a su vez es JavaScript)
- Bootstrap es un framework CSS.
- .NET es un framework basado en la especificación CLI.
- React, Vue, Angular y Ember son frameworks basado en JavaScript.
💡 Para poder usar el framework, debes tener conocimientos del lenguaje subyacente.
Stack: unas cosas se apilan sobre otras
🖥 El front-end de tu aplicación puede construirse en React, el cual a su vez se basa en JavaScript, el cual requiere del navegador para ejecutarse.
⚙️ El back-end puede construirse sobre Django, un framework que su vez se basa en Python, el cual requiere un servidor con capacidad de ejecutar Python.
💡 En ambos casos, típicamente usarás decenas (o centenares) de 🧩 Librerías externas que aportan funcionalidad extra o complementaria.
Las tecnologías Web modernas son capas de abstracciones, unas sobre otras, que tienen como objetivo reducir la complejidad de desarrollo.
Ecosistema de webapps y apps
🎛 APIs
✉️ Webhooks
✉️ Webhooks
Webhooks son mensajes que envían las aplicaciones para comunicarse con otras aplicaciones.
Ejemplos:
- Cuando pagas por PayPal en un comercio, PayPal le avisa al comercio que el pago se realizó exitosamente.
- Cuando inicias sesión con Google en Airbnb, Google le envía un mensaje cifrado a Airbnb autenticándote, para que Airbnb pueda identificarte y mostrarte tu cuenta.
- Cuando agendas un evento en tu calendario usando Siri o Google Assistant, el calendario envía un mensaje confirmando que el evento fue agregado exitosamente.
🌱 Open Source
Open Source es una filosofía que ha acompañado el software desde sus inicios: que el software debe ser hecho y compartido de manera libre, descentralizada y colaborativa junto a la comunidad.
El mundo del software corre sobre Open Source.
Prácticamente todos los lenguajes de programación, frameworks, stacks y servidores modernos están hechos con software hecho bajo esta filosofía.
Y muchos de los sistemas operativos modernos son Open Source (Linux, Android) o están basados en Open Source (como iOS y macOS).
Dónde me encuentro con el Open Source?
- GitHub es el repositorio de código Open Source más grande e importante (la inmensa mayoría de l@s devs con experiencia y talento están en GitHub)
Sistemas de control de versiones
Cómo permito que dos, tres o 2348765 personas puedan trabajar al mismo tiempo en un archivo sin causar conflictos?
Los sistemas de control de versiones permiten trabajar colaborativamente y con precisión, de manera asíncrona y escalable.
- Git es el sistema de control de versiones más popular, creado por Linus Torvalds (el creador de Linux), para permitir que miles de personas alrededor del mundo pudieran trabajar colaborativamente sobre el mismo código sin causar caos y rápidamente.
- Esto no solamente sirve para código!
Pull requests
Los pull requests son una manera de proponer y aceptar cambios en un proyecto de software de más de una persona.
La persona que crea el pull request envía cambios de código que una persona autorizada deberá revisar y aceptar.
Usualmente, la manera más sencilla de colaborar con la comunidad Open Source es a través de un pull request que corrija un error o agregue una mejora a un repositorio ya existente.
*************************