Introducción al Desarrollo Web

Eldritch.Dev
22 min readJan 15, 2023

Contenido

  • ¿A quién va dirigida esta introducción?
  • ¿Por qué deberías gastar de tu tiempo en ella?
  • ¿Qué ganarás con esto?
  • Contexto (un poco sobre mí)
  • Entonces, ¿Qué es la Programación?
  • ¿Cómo se Hace y Qué Necesitas? (actitud y requerimientos de carácter)
  • ¿Algo Más? (cosas físicas que requieres)
  • Te Explico Un Poco Más
  • Y Bueno, ¿Quiéres Aprender C++ en 21 Días?
  • Algunos Conceptos Básicos
  • Arquitectura Básica
  • Bases de Datos
  • Backend
  • Frontend
  • Despliegue

¿A quién va dirigida esta introducción?

En esta introducción mi objetivo es presentarte un esbozo del cuadro completo del desarrollo web. Está escrita para ti, si es que estás interesado en aprender a programar aplicaciones web y no has estudiado previamente nada respecto a programación o sabes muy poco.

¿Por qué deberías gastar de tu tiempo en ella?

Tal vez te estés preguntando por qué deberías usar parte de tu valioso tiempo, tu único activo real junto con tu mente, en una publicación de un perfecto desconocido. Y créeme, te entiendo. Podrías estar viendo memes de gatitos o viendo videos de algún youtuber o streamer de twitch famoso y carismático que te enseñe React en 15 minutos.

Lo que yo te ofrezco, es el producto de mi experiencia de 1 año como desarrollador web, desde la perspectiva de un adulto. Te hablaré de las capas que conforman una aplicación web en la actualidad, del valor de saber moverse de un extremo al otro de la pila completa, de los “básicos” del desarrollo web, de los “básicos” de las bases de datos y cómo se conecta cada parte formando un todo coherente para darle valor a un negocio.

¿Qué ganarás con esto?

Habiendo vislumbrado el cuadro completo, deberás haber ganado cierta perspectiva. Una mirada más amplia de la disciplina de la programación. Ya juzgarás tú, luego, si esto es valioso o no. Yo considero que sí. Espero no estar equivocado.

La idea es que con esta mirada ampliada, puedas discernir bien qué cursos elegir para atravesar por los contenidos expuestos hasta dominar los conceptos y la praxis y que te lances a la piscina.

La tarea de encontrar estos cursos quedará para ti, ya que depende del stack tecnológico que decidas explorar de acuerdo a tus objetivos.

Por último, si bien prometí en mi publicación anterior, escribir respecto a estructuras de datos y algoritmos, lo dejaré más adelante, por dos motivos. En primer lugar, no considero tener el nivel suficiente para hablar de ello aún. Y en segundo lugar, quisiera entregar material valioso desde lo más básico hasta donde yo alcance a tener cierto dominio hilándolo todo de una manera coherente. No me interesa entregar material inconexo ni “partes y piezas” llamativas pero que no lleven a ninguna parte.

Ahora sí, arranquemos.

Yo y mi gato Curry

Contexto (un poco sobre mí)

Me cambié al área T.I. el año 2019 habiendo obtenido trabajo como consultor T.I., mientras aún cursaba mi carrera técnica vespertina de analista programador porque me las di de bacán y quise saltarme la práctica.

Estaba en una competencia contra mi mismo en la que todos mis esfuerzos estaban concentrados en aprender bien para convertirme en desarrollador de software. Como mencioné en mi publicación anterior, programación es mi segunda carrera, iniciada a mis 34 años. Y la obtención del título no fue nada fácil (nada realmente importante lo es) viniendo de un área en la que no había “pensamiento lógico/abstracto”. Sólo diré que el costo final involucró más que únicamente dinero, tiempo y energía.

Y muy consciente de la severidad del tiempo y su paso, junto con el ardiente deseo de mejorar mi situación económica, transformado en voluntad, pensé: “me chupan un huevo. No haré la práctica”.

Esto porque previamente había sido seleccionado para una práctica en IBM, pero ni Duoc, ni nadie dentro de esa misma institución me autorizó a adelantarla. Tal vez porque no estaba su programa que eso pudiera ocurrir. Además, burocracia. Privada en este caso.

Sea como sea, el punto es que convalidé la práctica con trabajo real pagado pero no como programador o desarrollador de software. Llegar a ese cargo no ocurrió sino hasta Noviembre de 2021, a mis 37, después de seguir estudiando fuera del horario de trabajo, madrugando muchas veces en horarios extraños.

¿Por qué expongo esto? Para que sirva de evidencia. Evidencia de que muchas cosas son posibles cuando se pone disciplinadamente la voluntad en ello con perseverancia, y evidencia de que no hay nada más grato que disfrutar de los frutos de la propia labor.

Sobretodo cuando no ha sido fácil llegar a cierto punto y lugar en la vida.

Entonces, ¿Qué es la Programación?

La programación es básicamente el arte y la ciencia de dar instrucciones. Pero no instrucciones a los demás. No instrucciones a las personas ni a los animales, sino a máquinas, computadores y dispositivos. Esto con el objetivo de que lleven a cabo una tarea de forma repetitiva o sistemática.

Generar o editar una imagen; realizar una operación matemática; obtener, generar, transmitir o proteger información; sacar una fotografía; grabar o editar un video; grabar o editar música; son todas operaciones que actualmente nuestros dispositivos pueden realizar mediante programas que han sido escritos por programadores o desarrolladores de software.

Desde el punto de vista comercial, la programación es imprescindible ya que permite resolver todo tipo de problemas de negocio digitalizando procesos, automatizando tareas, resolviendo cálculos complejos o procesando datos que luego serán visualizados por quienes toman las decisiones en las empresas.

Desde el punto de vista cognitivo, te permite ver la vida de una manera “abstracta y lógica”. Ver patrones, establecer rutas coherentes de resolución de problemas, conectar los trozos de información dispersa de lo que sea que te interese para tener una imagen más completa y clara de las cosas, son rasgos que se desarrollan con la profundización en esta disciplina intelectual y a medida que vas disipando la ignorancia mediante el ejercicio continuo de esta actividad. Es decir, te permite comprender mejor el mundo que te rodea y posiblemente a ti mismo si eres de los que además les interesa esa veta.

Por último, como cualquier otra actividad creativa, te permite operar y experimentar en lo real a partir de lo imaginado. Y con esto me refiero a que si inviertes el tiempo suficiente en aprender y practicar, puedes eventualmente desarrollar aplicaciones de software acorde a lo que puedas imaginar.

Actualmente, la programación se requiere para desarrollar sistemas operativos; tiendas en línea; redes sociales; sitios y aplicaciones web como foros de discusión, blogs, vlogs o plataformas de streaming; videojuegos; software de monitoreo médico o financiero, entre otros; software embebido, aplicaciones móviles, IOT/IIOT (básicamente conectividad entre dispositivos y aparatos) y un largo etcétera.

Como verás, su alcance es bastante amplio.

¿Cómo Se Hace y Qué Necesitas?

La explicación más sencilla es que el software, las aplicaciones o programas, se escriben.

Y a nivel personal, lo que requieres para dedicarte a esto, en el fondo es simple: curiosidad infinita, y voluntad y práctica sostenidos, además de alta atención a los detalles.

Es necesario además, una cierta actitud que combina ser perseverante, paciente y obstinado para superar el tedio, la rutina, y la frustración que se presentan como obstáculos en esta disciplina; y una cualidad de “objetividad técnica” para consigo mismo.

Me explico. Si no eres capaz de escuchar tranquilamente las críticas que recibas de otros desarrolladores, sean constructivas o destructivas, es muy probable que te estanques. De seguro las recibirás. Y esto es bueno.

El desarrollo de software, es a nivel profesional, un juego en equipo en el que cada miembro debe colaborar con los demás para desarrollar los servicios o productos que el negocio al que se deben requiere.

Ahora bien, si disfrutas de esto como si del mejor juego del mundo se tratara, tolerar la frustración será menos difícil (no más fácil).

¿Algo Más?

Así es. Necesitas ciertas herramientas físicas antes de continuar.

  1. Un computador (recomiendo con procesador desde i3 o Ryzen3, con mínimo 8 Gb de RAM, y un HDD o SSD de mínimo 256gb. Los gráficos no son importantes por el momento y cualquier tarjeta gráfica de una laptop moderna te servirá.)
  2. Conexión a internet.
  3. Un editor de código, un entorno de desarrollo integrado o ambos.
  4. Un lenguaje de programación.
  5. Conocer la sintaxis o reglas de escritura de ese lenguaje.
  6. Saber inglés.

Te explico un Poco Más

  1. Computador. Tu principal herramienta de trabajo. Te permite almacenar las aplicaciones web que escribas en tu entorno local, ejecutarlos y eventualmente “subirlos a la nube” o desplegarlos en un entorno remoto. Puede tener un sistema operativo Linux, Mac o Windows. Yo soy fanboy de Windows y el Imperio Gates y he probado y me ha gustado Linux. A la vez, soy un antifan de Mac, cuyos precios me parecen una ofensa a lo que me queda de humanidad.
  2. Conexión a internet, esa gran red de computadores enlazados, que comenzó como un proyecto militar, desde la cual puedes descargar las herramientas necesarias y obtener la información necesaria para sortear con éxito algunos de los problemas que irás encontrando en el camino.
  3. Editor de código y/o Entorno de desarrollo integrado (IDE, por sus siglas en inglés). Estas herramientas te permitirán escribir archivos y programas compuestos de archivos. Lo que terminarás escribiendo son algoritmos, que no son más que “series de instrucciones que describen cómo llevar a cabo una tarea”. Yo recomiendo Visual Studio Code junto con esta guía de atajos para mayor productividad. Por último, también puedes usar un editor de texto como el bloc de notas para programar , que aunque a estas alturas estoy muy seguro de que no tiene sentido, sí se puede.
  4. Lenguaje de programación. Son los posibles lenguajes en los que escribirás tus programas. Hay muchos y se suelen clasificar según sus usos y potencialidades, la demanda que tienen en el mercado o el sueldo que ganan quienes se adhieren a uno o a otro en su trabajo. Sin embargo, si quieres desarrollar aplicaciones web, deberás comenzar eligiendo un lenguaje para el backend (la trastienda de tu aplicación) como Python, C# o Ruby y deberás aprender JavaScript, HTML y CSS para el frontend (el rostro de tu aplicación). Insistiré en que hay más lenguajes de programación, pero estos son los que me han llamado la atención a mí. Por otro lado, mencionaré que técnicamente, HTML y CSS, no son lenguajes de programación. HTML es una especie de clasificador y organizador de elementos de tu contenido web y CSS es una tecnología que te permite controlar la estética de tus sitios y aplicaciones web.
  5. Conocer la sintaxis. Son las reglas de escritura de los lenguajes de programación o tecnologías que utilices. Pero la verdad es que no necesitas conocer TODA la sintaxis de un lenguaje o tecnología para comenzar a programar. Baby steps. Tomas un poco, das un poco. Aprendes un poco, escribes otro poco. Se requiere teoría y práctica, pero la verdad la teoría que manejes no debería sobrepasar jamás el nivel de tu práctica. De este modo cuando hables, sabrás realmente de lo que estás hablando.
  6. Saber inglés. Lo único necesario de esto al principio, es que seas capaz de comprender palabras y combinaciones de palabras sencillas. Principalmente porque los lenguajes de programación utilizan funciones, métodos y propiedades que se escriben en inglés. Más adelante, deberás hacerte amigo de las documentaciones de las tecnologías que casi siempre están en inglés, por lo que eventualmente deberás manejarte bien con el idioma. De igual modo, hace ya bastante existen traductores en línea como google translate.

Respecto a la educación formal, esta no es un requisito obligado. Al punto de que hay empresas a las que ni siquiera les importa si tienes título alguno para contratarte, siempre y cuando sepas programar y seas capaz de resolver los problemas de desarrollo de software que sus negocios tienen.

Por otro lado, aunque la educación formal no sea un requisito obligado, hay ciertos contenidos que deberías llegar dominar eventualmente, como lo son la teoría de la computación y las estructuras de datos y algoritmos. De aquellas, yo he investigado la segunda. Lo importante aquí es, en todo caso, llegar a comprender, no simplemente almacenar información. Y para ello, como he ido aprendiendo, es imprescindible conjugar práctica y teoría de modo que tu saber se base de manera rotunda en tu capacidad de hacer.

El desafío que se presenta entonces, es estar permanentemente estudiando y entrenando para mantenernos actualizados. Y para esto, internet está lleno de cursos y recursos, y lo más probable es que, hayas estudiado o no programación o ingeniería de software, debas estar constantemente pasando a través de ellos. Udemy, es un buen lugar para hacerlo. Platzi también tiene algunos cursos interesantes para iniciar.

Existen también otras plataformas más especializadas, y a medida que vayas aprendiendo un poco más y sabiendo lo que no sabías que no sabías, puedes comenzar a buscar y evaluar un poco mejor la calidad del contenido que encuentres y a qué dedicarle atención. Y esto es muy importante, porque con la sobrecarga de información disponible, saber qué elegir puede ser un problema difícil. Principalmente porque el tiempo es un bien finito, pero también porque careciendo de experiencia, se carece a la vez de la capacidad de evaluar o juzgar la calidad del material disponible. Pero con algo de experiencia, deberías enfocarte en el material y los referentes de más alta calidad que encuentres.

En mi caso, después de obtener mi titulo técnico en programación, me suscribí a EDTeam, pero cancelé cuando encontré material e instructores de mejor calidad en otros lugares. Un factor relevante para mi elección de dónde estudiar online, fue sin duda la claridad con que los profesores explicaban los contenidos y el poder saber de antemano, qué aplicación lograría construir con cada curso que me ofrecían.

Y Bueno, ¿Quiéres Aprender C++ en 21 Días?

No se puede

Y olvídate de “lo fácil y gratis”.

Esto puede parecer contenido para otra publicación, pero no puedo dejar de hablar de ello en esta introducción.

No te dejes engañar por los clickbaits de youtubers, influencers y vendedores de humo, que en su afán de causar un impacto inmediato y movilizar la atención, consumo de datos por parte de su público, y por ende dinero, entregan contenido bajo títulos como los de “aprende a programar en 10 minutos”. Eso no existe. No es real. Nadie nunca, por favor compréndelo bien, nadie nunca, jamás, aprenderá en profundidad una disciplina sin un tiempo considerable de trabajo y esfuerzo sostenido.

Habiendo dicho eso, siéntete libre de explorar esos caminos. La experiencia propia vale más que los relatos ajenos.

Y hablando de experiencia, a los gerentes y reclutadores les gusta contratar gente con experiencia aunque estén recién salidos de la escuela (léase Universidad, Instituto, Academia, Centro de Formación Técnico, Escuela de Magia y Hechicería, bootcamp, Youtube, el sofá de tu casa, whatever).

Y si no saliste de ningún centro de estudios de educación superior, y aún así llegaste a una entrevista de trabajo y prueba técnica, de igual modo más temprano que tarde, se te hará necesario haber adquirido experiencia previa desarrollando algún tipo de software.

Esto es posible sólo habiendo construido alguna aplicación antes de postular a cualquier trabajo en el área de la programación. Puede sonar tragicómico pero lo ideal es comenzar a los 6 años. Ni que decir que no fue mi caso.

Volviendo al punto del contenido gratuito para aprender, es posible que encuentres algún curso gratis con contenido valioso, pero de ser así, de igual modo tendrás que poner de tu parte para completarlo, “pagando” con tu tiempo, atención y práctica para hacer tuyo el conocimiento. Y programar requiere de lapsos de concentración y tiempo amplios y profundos. Es decir, lo que hagas con tu tiempo IMPORTA.

Los mejores cursos que he encontrado yo, donde explican con claridad, coherencia y mayor profundidad, han sido de pago.

Algunos Conceptos Básicos

Teniendo la actitud y los materiales enumerados previamente, esbozaré un poco el camino que sugiero para comenzar en el desarrollo web. Insistiré en que es sólo una sugerencia de ruta producto de mi año de experiencia trabajando como desarrollador.

Ah, dos cosas más. Te sugiero leer toda esta publicación primero, de inicio a fin para hacerte un idea del panorama completo. Y ya cuando comiences a experimentar, crea un archivo de texto por cada tecnología que vayas aprendiendo, en el que tomes nota de cada comando, método o función con la que trabajes, para qué sirve y ejemplos concretos de uso.

Los comandos para las tecnologías asociadas al desarrollo son muchos y muchas son las tecnologías de un stack de pila completa. Por lo que no tiene sentido intentar memorizarlo todo. Yo uso notepad++ que me permite crear archivos en diferentes lenguajes, por ejemplo, crear un archivo llamado “javascript.js” y combinar comentarios con bloques de código de acuerdo a lo que voy aprendiendo.

Ten presente que el orden es una cualidad sumamente importante cuando no eres un genio (yo no lo soy). Probablemente si lo eres también.

Arquitectura Básica.

Lo primero es comprender qué es una aplicación web. Esta, es sencillamente un sistema digital, un software, con cierta complejidad que te permite realizar operaciones en ella, como elegir y comprar productos, llenar un carro de compras, pagar en línea por ellos y recibir un comprobante de la transacción realizada en tu correo electrónico. Es más compleja que una “página web”, ya que una “página web” es sencillamente un documento específico con texto, imágenes y/o video o sonido mayoritariamente estática, no dinámica. Una aplicación web está compuesta de múltiples páginas.

Estructura típica de una aplicación web

La estructura típica de una aplicación web de extremo a extremo comienza desde la base de datos hasta el navegador web que utiliza el usuario. En alguna época, frontend y backend se agrupaban en lo que se llamó estructuras monolíticas siendo “uno”. Hoy en día se ha llegado al punto en que tanto el frontend como el backend pueden estar desacoplados en múltiples aplicaciones o “servicios” llamados microservicios que interactúan entre sí, para facilitar la construcción y mantenimiento de aplicaciones muy grandes y complejas.

Comunicación entre sistemas

El flujo de comunicación de información a través de una aplicación web en internet, simplificado, es por lo regular como muestra la imagen de arriba. A través de un navegador, hacemos click a un botón, que envía una solicitud o petición http desde el frontend hacia el backend, y este realiza una consulta a la base de datos. Desde allí, se envía una respuesta que recorre el camino inverso, de vuelta al navegador para presentar los resultados de la acción gatillada por el usuario.

Command Prompt o Símbolo del Sistema

Interfaces de Línea de Comandos.

  1. Comienza a jugar con CMD. Como bien ya sabes que yo soy fanboy de Windows, te diré que juegues con el Símbolo del Sistema (CMD) o con PowerShell. Aprende a navegar entre los directorios de tu computador sólo utilizando alguna de estas herramientas. Puedes listar archivos y directorios, crearlos, eliminarlos, renombrarlos y un largo etc. Para ello comienza creando una carpeta o directorio (es lo mismo) y llénala de archivos que luego manipularás a través de la consola (CMD o PS). Puedes buscar por ti mismo cómo ejecutar estos programas y los comandos necesarios para las operaciones mencionadas.
  2. Una vez que te aburras de lo anterior, prueba instalando Git. Git es un sistema de control de versiones muy útil para trabajar desarrollando software. Además, viene con GitBash, otra terminal con la que puedes jugar. La diferencia es que desde GitBash puedes usar Vim o Nano, que son dos editores de archivos para terminal que vienen junto con la instalación de Git para Windows. Puedes buscar por ti mismo como se hace para abrir GitBash, iniciar Vim o Nano y editar alguno de los archivos que creaste en el paso anterior.
  3. Hasta ahora has hecho esto en tu entorno local: es decir, tu propio computador. Pero conectado a internet, puedes salir de tu local. Por ejemplo, puedes “golpear a la puerta” de google (www.google.com). Prueba haciendo ping a www.google.com desde cualquiera de las terminales instaladas. Para no repetirme más con esto, puedes buscar en internet cada cosa de la que te hable y te sugiera hacer para aprender qué es, cuál es su alcance, para qué sirve, etc.

La idea es que estas herramientas (CMD, Powershell o GitBash) se te vuelvan familiares, ya que hay comandos que usarás más adelante con interfaces de línea de comandos (CLI) en terminal para muchas cosas, como crear proyectos, servicios, componentes en el frontend, realizar consultas y operaciones sobre tu BD desde el backend, etc.

Tablas y Relaciones de una BD SQL

Base de Datos.

Es hora de instalar un motor de base de datos relacional gratuito, como PostgreSQL, MySQL o SQL Server.

Las bases de datos (BD) pueden ser relacionales (SQL) o no relacionales (No SQL). Mi sugerencia, es comenzar aprendiendo una tecnología de base de datos relacional, porque estas representan el fundamento, la piedra angular sobre la cual se crearon estos sistemas de almacenamiento de data.

Toma nota del proceso de instalación de la BD que elijas, porque en algún momento se te preguntará por nombres de usuario y contraseña. Esto es importante para que puedas acceder a tu BD así que no pierdas esas credenciales.

La idea de esto, es que luego de instalada accedas a ella para comenzar a crear tablas con información. El acceso puede ser por terminal o por un cliente con una GUI (interfaz gráfica de usuario). En el caso de SQL Server, el cliente que se usa es SSMS.

Lo que aquí tienes que aprender es a lo mismo que hiciste con los directorios pero esta vez con tablas. Y esto es algo que se repetirá bastante en todas partes. Me refiero a las operaciones de listar, crear, editar y eliminar. Pero además, aquí puedes añadir las operaciones de insertar datos a tus tablas y actualizar registros. Estas operaciones te acompañarán en el proceso de desarrollo web, de extremo a extremo, bajo la sigla CRUD (create, read, update, delete).

Cuando crees tus primeras tablas, deberás indicar las columnas que tendrá y el tipo de dato que almacenará, junto con ciertas restricciones como por ejemplo el largo de caracteres que contendrán como máximo, la cantidad de decimales, qué columna representa una llave primaria (PK), qué columna representa una llave foránea (FK) y a qué tabla referencia, etc.

Si aún sigues aquí, me alegro y debes saber que la gracia que tienen las BD SQL, es que la data está relacionada entre sí. Eso significa que puedes tener tablas vinculadas a través de sus PK y FK. Una tabla puede contener registros de empresas, y otra puede tener registros de empleados de esas empresas. Esto puede ser tan sencillo como lo que menciono o tan complejo como puedas imaginarte (Imagina por ejemplo la cantidad de tablas y relaciones que podría tener la BD de un negocio como un banco). La BD más compleja con la que he trabajado hasta el momento tiene más de 50 tablas vinculadas entre sí.

Una vez que hayas experimentado creando tablas, relacionándolas, hayas insertado y eliminado registros, etc. Deberías empezar a aprender cómo diseñar un modelo de datos. Aquí hay mucha abstracción, en el sentido de que puedes abstraer cualquier negocio de la vida real y modelar su base de datos para digitalizarla. La idea es que efectivamente esa digitalización le signifique al negocio la disminución en sus costos, la optimización de su productividad o un incremento en sus ventas. No tiene ningún sentido digitalizar sólo por amor a la digitalización.

Una cosa interesante que puedes hacer en algún momento de tu proceso de aprendizaje de BD SQL, es crear un procedimiento almacenado que llene miles de datos aleatorios en una o más de las tablas que creaste. Después podrás crear otras estructuras lógicas de instrucciones llamadas triggers (disparadores) y más. Ya tendrás tiempo de aprender conceptos avanzados de BD, cuando comiences a profundizar en una en específico.

Algo curioso y digno de mencionar, es que la creación de tablas junto con sus restricciones por llave, deben ser creadas en un orden específico. Por ejemplo, no puedes crear una tabla que referencia a otra que no existe. Primero deberías crear esa tabla referenciada y luego la que la apunta. Puede que ahora mismo no entiendas, pero ya lo harás.

Otro problema con el que podrías encontrarte es que tal vez no puedas insertar datos en una tabla, cuando el valor que le pasas a alguna columna FK, no existe como PK en la tabla a la que referencia.

Por último, los comandos de búsqueda o listado de tablas con su información, puede ser tan sencilla o compleja como quieras. Al buscar puedes combinar datos de otras tablas, filtrar, excluir columnas, ordenar los resultados, utilizar funciones y más. También puedes anidar búsquedas dentro de búsquedas.

En fin, es todo un mundo.

En el siguiente apartado, cuando tomes un curso para crear una aplicación web, asegúrate de que te enseñe a crear una BD y poblarla de datos, para utilizarla y que no utilice “dummy data” (una simulación de data que debería venir desde la base de datos) sino data real que deberás consultar a tu BD.

Está bien, puedes elegir el curso que quieras, pero la idea es que trabajes “de extremo a extremo” de la pila de desarrollo para que puedas conocer el panorama general.

Imagen robada de internet sobre algunos aspectos del backend

Backend.

Una vez hayas jugado lo suficiente con tu BD, elige un lenguaje de programación de backend. Usa tu criterio y discernimiento. Sin caer en la parálisis por análisis, usa tu pensamiento crítico.

Seguramente tienes algún objetivo importante que quieres conseguir y para ello deberás buscar información que te indique qué lenguaje de programación se ajusta más a él. Asegúrate de que puedas encontrar su documentación y comprende cómo crear una conexión a la BD que creaste con el lenguaje elegido.

Respecto a JavaScript, si bien es un lenguaje que mediante Node.js puedes utilizar en el backend, te sugiero que elijas otro. Porque de todas maneras en el frontend lo usarás y lo que queremos es un mínimo de amplitud de conocimiento. Luego podrás profundizar.

Recomiendo explorar un poco con lecciones que puedas encontrar en Youtube, y una vez que te decidas por uno para profundizar, que tomes algún curso en Udemy sobre él. De preferencia uno que te enseñe a crear una aplicación web y no uno que te pase “unidad por unidad”, “pieza por pieza” qué es cada cosa.

A mi parecer, los cursos que se van tan al detalle, aislados del conjunto y sin aplicación inmediata en un proyecto, son un exceso de teoría, que al final no sirve si quieres trabajar como desarrollador. Y no conozco a nadie que sin estar jubilado le sobre aquello en lo que he hecho hincapié durante toda esta publicación: el tiempo.

El curso ideal para iniciar, debe combinar teoría y práctica, con énfasis en la práctica. Porque imagina que te enseñasen a jugar padel sentado en un salón de clases… no tiene mucho sentido, ¿no?.

Ya después de que seas capaz de crear tu primera aplicación, podrás profundizar en qué es cada cosa que utilizaste para ella, bajo qué circunstancia se usa, y qué alternativas existen a las funciones, métodos, estructuras de control, condicionales, y otros que utilizaste.

Lo importante aquí, en el backend, que es donde estaríamos siguiendo el esquema que te mostré previamente, es que desarrolles una API.

Esta es una aplicación de backend que debería conectarse a tu BD y ser capaz de realizar las operaciones CRUD sobre tus tablas, quedando disponible para ser consumida por el frontend, la aplicación de cara al usuario final que le presenta una GUI para que él pueda operar sobre la BD mediante las opciones que tú le des.

En el caso del ejemplo provisto, la API es del Instituto de Arte de Chicago y se muestran los resultados de un método get contra el endpoint de artworks. Puedes encontrar su documentación aquí.

Tu backend debería utilizar el patrón MVC porque es prácticamente un estándar. Puedes buscar qué es el patrón MVC pero mejor sería si primero lo implementas y luego te educas sobre el concepto. Sólo asegurate de que el curso que tomes, que te enseñe a desarrollar tu aplicación web de extremo a extremo, utilice este patrón.

Luego de meter las manos al código, ya podrás ir ampliando tu conocimiento conceptual. Recuerda que el énfasis debe estar al principio en el ejercicio, la ejecución, la programación. Por el momento, y sobre todo si nunca has programado antes, deja la teorización para los académicos y doctores y explícate las cosas en tus propias palabras a medida que vayas usando lo que tu curso te enseñe.

Ya desde aquí, es imperativo que aprendas a depurar (debuggear) tu código con las herramientas que tu IDE o editor de código te ofrezcan. Esto es algo que he aprendido a valorar cada vez más y que los mejores programadores que he conocido dominan a la perfección, exprimiéndole todo el jugo posible para corregir errores en su labor diaria. Es muy importante aprender a hacerlo y llegar a dominarlo.

No seas mezquino con el tiempo que dedicas a debuggear y aprende a corregir errores de compilación correctamente. Esto te ayudará a comprender mejor el código que lees.

Ten en cuenta también que testear tu API a través de OpenApi (ex Swagger) y que funcione es un cosa y conectar tu frontend a tu API backend, y que las mismas operaciones CRUD funcionen, es otra cosa.

Imagen robada de internet de algunos aspectos del frontend

Frontend.

Probablemente, el curso que tomes te vaya llevando entre el backend y el frontend en paralelo. Podrían ser 2 aplicaciones distintas o puede ser sólo 1, dependiendo del curso. Ambos escenarios te servirán, pero te recomiendo encarecidamente que frontend y backend no estén acoplados en el curso que elijas completar.

Aquí usarás tecnologías como JavaScript para las operaciones, HTML para las vistas y CSS/SASS/SCSS para los estilos. Pero además, aquí entran en juego marcos de trabajo como React, Angular o Vue. Mi preferencia está en las dos primeras y actualmente trabajo en profundidad con la segunda.

Ideal también que el curso que elijas completar, incluya alguno de estos porque permiten realizar cosas muy interesantes en el frontend, facilitan muchas de las tareas que se deben realizar de este lado y actualmente se consideran un estándar obligado de la industria (IMHO).

Aquí también debes aprender a depurar correctamente. Puedes utilizar las herramientas de depuración del editor de código que estés utilizando o las herramientas de desarrollador del navegador. A mí me enseñaron con las herramientas del navegador y la verdad, esto facilita mucho las cosas.

https://guides.hexlet.io/deploy/

Despliegue.

Hasta ahora tu aplicación vive y corre en tu entorno local. Pero las aplicaciones web del mundo real, funcionan en ambientes productivos. Estos se encuentran en infraestructuras especiales, diseñadas y configuradas para ello. Desde allí, se exponen al público.

En concreto, un ambiente productivo se hospeda en lugares como AWS, Microsoft Azure, Google Cloud, Digital Ocean o Heroku, siendo los 3 primeros los más conocidos.

Es conveniente que aprendas a desplegar tu aplicación en alguno de estos proveedores de hospedaje, que de seguro que tu currículum se destacará con ello. Y aprende además a incorporar CI/CD. Esto es algo en lo que estoy en deuda.

En resumen, te sugiero que el curso que compres y al que dediques la mayor atención, te permita desarrollar una aplicación web que maneje usuarios y autorización, operaciones CRUD desde un frontend que conecte a la BD a través de una API en el backend, que utilice algún patrón como MVC, y algún marco de trabajo como React, Angular o Vue.

Últimas Palabras

Si llegaste hasta acá, probablemente este tema te interesa bastante y posiblemente quieras hacer una carrera en esta área. Existen muchos, muchos libros respecto a estos temas.

En mi corta experiencia, para aprender a programar, al principio, leer casi no sirve. No sirve ser un ratón de biblioteca y yo lo he sido. Por eso, en este artículo, aunque he volcado muchas palabras, no te he enseñado una sola línea de código y lo que hice fue darte un esquema, un mapa del territorio, una cierta “orientación”.

Desde aquí, lo que viene, es la incursión en el territorio. Porque a programar se aprende programando.

Crea aplicaciones. Experimenta, escribe código, equivócate mucho mientras puedas y aprende de tus errores.

Y si puedes ingresar a una comunidad en la que tengas compañeros de aprendizaje y gente contra la cual puedas contrastar conocimientos y opiniones, mucho mejor. En Discord por ejemplo, puedes encontrar canales de diversas tecnologías o grupos de estudio donde es más que seguro que te recibirán con gusto.

Finalmente, cuando tengas algunas aplicaciones realizadas, crea tu propio sitio web que te sirva de portafolio y expón tu trabajo. Mucha suerte y éxito en el camino que elijas seguir desde aquí.

--

--