Quiero aprender a programar 🤓
Seguramente has escuchado, quiero aprender a programar porque:
1. Está de moda.
2. ¡Me siento cool!.
3. No tienen que interactuar mucho con la religión ultra mercantilista que hemos creado en el último siglo (miren hasta el título de otro artículo acaba de salir 🤣) .
4. Trabajan desde casa sin tener que ir a la oficina o pueden estar en cualquier lugar cumpliendo con sus jornadas laborales, un sueño hecho realidad por gran parte de los profesionales en distintos sectores en 2020 y 2021.
5. Generan sueldos jugosos y atractivos.
6. Etcétera…
Sin embargo, en pocas ocasiones cuestionamos o vamos más allá de las ideas y comentarios que escuchamos de otros. Aprovecho para preguntar ¿por qué te dedicas a la profesión que actualmente desempeñas?, ¿fue al azar?, ¿toda la vida supiste que querías dedicar aproximadamente 2/3 o más de tu vida a un tema en específico?, ¿no tenía nada mejor que hacer?, ¿era una condición para seguir obteniendo la manutención vitalicia de la familia?, ¿no tengo idea?, ¿sin pensarlo llegue a una posición en la que me siento bien?, …
No tomes esto como un juicio sino a manera de reflexión personal, es fácil comenzar a ejecutar acciones o tomar decisiones basadas en qué más que preguntarnos el por qué.
Si has leído hasta este párrafo te felicito 🥳, nuestra micra de atención degradada por los constantes memes (no tengo nada contra ellos, los disfruto mucho) y la historia de redes sociales que estas pensando en subir con la pose perfecta para ejecutar tu conducta de “surveillance” (vigilante) nutriéndote de las personas que vean tus estados o les guste esa maravillosa foto, tengo que reconocer que es un gran reto y lo has logrado, entonces comencemos!
El tema de la tecnología es sumamente amplio, diverso, plural, en constante evolución, lleno de retos personales y de comunidad, donde la zona de confort no tiene lugar, la mente mediocre, limitada, parcial-reduccionista no hace sentido y donde se aplica una visión dinámica entre la foto completa y los pequeños detalles que hacen la diferencia.
También es importante entender que la pasión que nos mueve, no es la misma que la que mueve a otra persona.
A manera de introducción te comento que mi pasión por la tecnología comenzó con entender y contar con las herramientas para crear algo que pudiera compartir al mundo de una manera sencilla, accesible por el medio más importante de comunicación que usamos actualmente, el internet.
Unido a lo anterior siempre me interesó el tema tecnológico, en específico la programación para desarrollar aplicaciones y servicios útiles, sin embargo mis miedos o falta de confianza para darme la oportunidad de probar y fracasar, lo impedían, hasta que un día aprendí que la experimentación es los que nos hace crecer como personas, conformado por la prueba y el error, como todo en la vida.
A nivel de un usuario de IT (Tecnologías de la Información por sus siglas en Inglés), conoces que cada sistema operativo que utilizas móvil o de escritorio, así como cada programa según su distribución, por ejemplo para resolver el problema de escribir y guardar texto en un ordenador requieres un procesador de texto, cuentas con múltiples opciones como Microsoft Word, Google Docs, Pages de MacOs, Apache OpenOffice, etc. Es decir para resolver una problema existen distintas tecnologías, distribuciones, versiones, diseños y más, sin saber perfectamente cómo utilizar alguno de los programas mencionados anteriormente con un poco de intuición podrás hacer escribir un párrafo y guardarlo. Para saber a detalle cómo usar el de tu preferencia, deberás leer su documentación oficial (manual de usuario), dedicar más tiempo y practicar lo más posible.
Como desarrollador de software cuentas con una amplia gama de herramientas, cada una de ellas con su filosofía y comunidad que la respaldan. Aún así a diferencia de usar un poco de intuición en un procesador de texto a escribir por pantalla un famoso “Hello world!” (Hola mundo) en algún lenguaje de programación, requerirá más que solo intuición. Primero deberás documentarte sobre el lenguaje para conocer su sintaxis, la forma de almacenar variables, las palabras reservadas, así como las reglas que hacen un enunciado válido.
Recapitulando un poco, una vez que hayas definido porque te interesa el desarrollo de tecnología o simplemente tengas curiosidad de explorar un nuevo tema, es importante considerar tu objetivo para saber por dónde comenzar.
Estas son algunas de las posiciones que tienen lugar en el entorno de IT:
1. Software Developer (Desarrollador de software): manejo general de un lenguaje de programación específico para ejecutar distintos roles o tareas de un proyecto.
2. Web Developer (Desarrollador Web): construcción de aplicaciones web por medio de arquitecturas de software, procesamiento de datos, estilo, diseño, funcionalidad, experiencia de usuario e interfaz de usuario.
3. Web Designer (Diseñador Web): diseño estético de contenido desplegado en una aplicación web.
4. Developer Operations (DevOps): configuración de servidores y despliegue de aplicaciones.
5. Data Scientist (Científico de Datos): combina el método científico para procesar datos en información y mejorar considerablemente la toma de decisiones en tiempo y efectividad.
6. AI Engineer (Ingeniero de inteligencia artificial): imitar el comportamiento humano en una máquina para automatizar procesos y tareas.
7. Cloud Engineer (Ingeniero de nube): planea, diseña, construye y brinda mantenimiento a la infraestructura de computación en la nube de una compañía.
8. Scrum Master (Gestor de proyectos de tecnología): gestiona actividades, responsables, tiempos de entrega, resuelve problemas de equipo, capacita a su personal aplicando metodologías ágiles de desarrollo.
9. Information Security Analyst (Analista de seguridad informática): protege datos personales e información sensible, almacenada, gestionada o creada con tecnología.
10. Network and Systems Administrator (Administrador de sistemas): instala, configura y brinda soporte a las necesidades de red locales de una compañía.
Respecto a los lenguajes de programación es importante tener en cuenta que con el paso del tiempo la comunidad de desarrolladores va en aumento, así como la creatividad y la motivación por compartir, mejorando tecnologías existentes o creando nuevas.
JetBrains (una empresa que crea herramientas para desarrolladores) anualmente realiza una encuesta para evaluar el uso de los diferentes lenguajes de programación, no quiere decir que sean los únicos, ni los más fáciles o complejos de utilizar, simplemente evalúan el número de desarrolladores que utilizan las tecnologías. Aquí te dejo el enlace de la “Developer Ecosystem Survey”
Para entender por qué existen distintos lenguajes de programación, comentaré brevemente en qué consiste cada uno de los principales lenguajes utilizados según JetBrains.
Markup Language (lenguajes de anotaciones o marcado)
Por definición no se consideran lenguajes de programación, sin embargo son la base donde se montan algunos lenguajes de programación.
HTML Hypertext Markup Language
El más básico de todos, proporciona una estructura de documento digital creada por medio de etiquetas, por ejemplo <header>Tu contenido</header>, para ser interpretado por un navegador o por otra aplicación como una aplicación de correo electrónico, para desplegar contenido al usuario.
CSS Cascading Style Sheets
Por medio de selectores, propiedades y valores, CSS permite añadir estilo, presentación y diseño a nuestro documento digital. Es una herramienta sumamente poderosa, además de colores, tipos de letra, alinear objetos, es posible añadir transiciones, animaciones, brindando vida al documento, incluso puedes modificar imágenes dentro de CSS sin recurrir a herramientas de edición de imágenes y mucho más.
Comenzamos con los lenguajes de programación
JavaScript
El lenguaje del internet, utilizado para trabajar del lado del cliente (navegador), del lado del servidor, interactuar con bases de datos e incluso existen abstracciones con librerías como “Electron” para hacer aplicaciones de escritorio, te suena “Slack o Trello” como aplicación en tu ordenador? o el popular editor de código “Visual Studio Code”?.
SQL Structured Query Language
Es un lenguaje de dominio específico, esto quiere decir que su funcionalidad está muy acotada, sirve para diseñar y administrar bases de datos relacionales. Por ejemplo, cuando das un “me gusta” en alguna publicación de tus amigos, esa información se debe almacenar en alguna parte.
Python
Sin lugar a dudas el lenguaje de la computación moderna, con una sintaxis amigable y entendible. Utilizado para gestionar proyectos de desarrollo web, análisis de datos, automatización, “Machine Learning”, redes y un sin fin de aplicaciones más, una auténtica navaja suiza.
Java
Ampliamente utilizado en el entorno empresarial, con una sintaxis más difícil derivada de los grandes lenguajes de programación como C o C++, es propiedad de la compañía Oracle creada en 1995, bastante utilizado para crear aplicaciones web, móviles, en servidores, bases de datos y más.
Shell Script
Es un lenguaje de scripts (pequeños programas) que son ejecutados en el intérprete de la línea de comandos de un sistema operativo basado en Unix como Linux y MacOs.
PHP
Bastante popular en las décadas pasadas, poco a poco comienza a perder popularidad cada año, sin embargo sigue siendo relevante, por ejemplo Wordpress está basado en esta tecnología para construir aplicaciones web desde el servidor.
TypeScript
Desarrollado y mantenido por Microsoft, es un “superset” de JavaScript, esto quiere decir que toman el lenguaje base de JavaScript y le agregan funcionalidades que lo transforman en otro lenguaje diferente por su funcionamiento. La principal funcionalidad es tener un lenguaje “tipado”, siendo un tema más técnico y profundo lo dejaremos en esta sencilla definición.
C++
Desarrollado por Bjarne Stroustrup como una extensión del lenguaje C, es un lenguaje de propósito general para desarrollar aplicaciones de alto desempeño. Para darte un ejemplo, algunas dependencias que utilizamos en entornos con JavaScript o Python están escritas en este lenguaje y a su vez basadas en C, que es el siguiente lenguaje.
C
Apareció por primera vez en 1973, probablemente siendo el lenguaje más relevante para la construcción de las bases de la tecnología que con el tiempo ha evolucionado a lo que utilizamos actualmente, C es un lenguaje de procedimiento imperativo, habla directamente con el Hardware (los componentes físicos y electrónicos de un sistema) siendo veloz y consumiendo poca memoria.
Go
Desarrollado en 2009 en Google, es un lenguaje de tipado estático compilado con una sintaxis similar a C por su eficiencia, su objetivo era lograr una lectura del código similar a JavaScript o Python con funcionalidades de alto desempeño en redes y multi procesamiento de datos.
Kotlin
Diseñado y mantenido por JetBrains, es un lenguaje que interactúa con Java y es ampliamente utilizado para desarrollar aplicaciones móviles para Android.
Dart
Desarrollado por Google en el 2011 con una sintaxis de C, utilizado para desarrollar aplicaciones móviles, Dart puede compilar en su mismo lenguaje o en JavaScript.
Swift
Desarrollado por apple en el 2014, es un lenguaje de propósito general compilado, creado para reemplazar en el mediano plazo a Objective-C (1980) el anterior lenguaje de desarrollo para el ecosistema Apple, utiliza una librería para ejecutarse en conjunto con C, Objective-C y C++ en un solo programa.
Nos falto nombrar muchos más lenguajes utilizados en el mundo del desarrollo según su funcionalidad, no obstante el objetivo de este artículo fue mostrarte el panorama general de desarrollo y así puedas entender mejor sus alcances, más allá de “quiero ser programador porque no utilizan traje 😂”.