<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mateo Garcia</title>
    <description>The latest articles on Forem by Mateo Garcia (@mateo_garcia).</description>
    <link>https://forem.com/mateo_garcia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F24289%2Fa4560f94-c601-4474-b744-2e4619e561d0.png</url>
      <title>Forem: Mateo Garcia</title>
      <link>https://forem.com/mateo_garcia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mateo_garcia"/>
    <language>en</language>
    <item>
      <title>¿Qué demonios es desarrollo web? 🇪🇸 🤷‍♀️🤷‍♂️</title>
      <dc:creator>Mateo Garcia</dc:creator>
      <pubDate>Wed, 30 Mar 2022 20:25:57 +0000</pubDate>
      <link>https://forem.com/mateo_garcia/que-demonios-es-desarrollo-web-5lm</link>
      <guid>https://forem.com/mateo_garcia/que-demonios-es-desarrollo-web-5lm</guid>
      <description>&lt;p&gt;&lt;a href="https://blog.teo-garcia.dev/what-the-heck-is-web-development" rel="noopener noreferrer"&gt;🇺🇸 English Version&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Hola a todos 👋
&lt;/h1&gt;

&lt;p&gt;Estaré usando este blog para compartir tutoriales y pensamientos acerca de mi carrera como Software Engineer, esto podría ser de ayuda para ti o tus allegados. Si puedes seguirme en mis redes y reaccionar a mis artículos me motivaría a continuar.&lt;/p&gt;

&lt;p&gt;La vida no es fácil, muchas personas han tenido que empezar de nuevo por una mala decisión, una calamidad, o por una pandemia como esta. Mi motivación para escribir este artículo es compartir a personas que necesiten un nuevo rumbo, una alternativa con la cual puedan obtener bienestar y abundancia para ellos y sus familias.  Si encontraste por ti mismo este artículo puede que ya sepas de qué va todo esto, posiblemente conozcas a alguien que esté buscando algo nuevo que emprender, compártele este post y cambiemos vidas.&lt;/p&gt;

&lt;p&gt;Como motivación para el lector, aquí hay algunos aspectos que considero ciertos de la industria del desarrollo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No necesitas un título universitario para convertirte en desarrollador (la mayoría del tiempo).&lt;/li&gt;
&lt;li&gt;Una computadora gama media con Windows, Linux o Mac es suficiente para empezar.&lt;/li&gt;
&lt;li&gt;Trabajar en desarrollo/tecnología habilita beneficios que no son tan comunes en otras disciplinas (Hablaremos de ellas posteriormente).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mi nombre es Mateo Garcia, tengo 25 años, y trabajo como desarrollador web desde hace 7 años, mi paso por la academia no fue brillante, sin embargo, la industria tecnológica me abrió las puertas para trabajar como desarrollador sin pedirme un título profesional, después de todo este tiempo sigo convencido de que cualquier persona hubiera podido lograr lo mismo sin el diploma, y por eso estamos aquí hoy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo sacarle provecho a este artículo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Tomate el tiempo de entender cada concepto sin afán, no es necesario que lo entiendas todo en el primer intento, avanza cuando estés listo.&lt;/li&gt;
&lt;li&gt;Toma buenas notas, una estrategia para interiorizar los conceptos es tomar buenos apuntes, puedes usar un cuaderno físico o uno digital.&lt;/li&gt;
&lt;li&gt;Usa los recursos que están anexos al contenido y practica por tu propia cuenta, no te preocupes si las cosas no salen bien en las primeras ocasiones, practicar es avanzar.&lt;/li&gt;
&lt;li&gt;No pierdas la motivación. Aunque no lo percibas, estás avanzando solo decidiendo leer este artículo, estudia, practica, busca ayuda y repite. Somos una comunidad y estamos para apoyarnos a cumplir los objetivos.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tabla de Contenido
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Los beneficios del desarrollador&lt;/li&gt;
&lt;li&gt;¿Qué significa ser desarrollador?&lt;/li&gt;
&lt;li&gt;¿Qué significa ser desarrollador web?&lt;/li&gt;
&lt;li&gt;Quiero ser desarrollador web!&lt;/li&gt;
&lt;li&gt;Conceptos Fundamentales

&lt;ol&gt;
&lt;li&gt;Dominio de la computadora&lt;/li&gt;
&lt;li&gt;Editor de código&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Escoge un framework&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;¡No pares de aprender!&lt;/li&gt;

&lt;li&gt;Y ahora qué?&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Los beneficios del desarrollador
&lt;/h2&gt;

&lt;p&gt;La industria tecnológica es bien conocida por los beneficios que le otorga a sus empleados, es difícil hablar de ello sin sonar como un engreído. Sin embargo, creo que es uno de los factores que más influyen para que las personas se interesen en esta disciplina y es por ello que quiero que conozcas algunas de los beneficios que podrías disfrutar trabajando en tecnología:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Salarios superiores a los de otras disciplinas de ingeniería, en ocasiones con pagos en dólares.&lt;/li&gt;
&lt;li&gt;Formar parte de un equipo con excelentes profesionales&lt;/li&gt;
&lt;li&gt;Planes adicionales de salud, subsidios de Internet, bonos para mejorar tu oficina, presupuesto para educación formal e informal, etc.&lt;/li&gt;
&lt;li&gt;Trabajar a distancia, parcialmente a distancia, o en oficinas deslumbrantes.&lt;/li&gt;
&lt;li&gt;Vacaciones ilimitadas (toma los días que necesites) o días adicionales a los establecidos por ley en tu país.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ¿Qué significa ser desarrollador?
&lt;/h2&gt;

&lt;p&gt;Los desarrolladores son personas que adquieren conocimientos para crear software (programas, aplicaciones, apps). Son contratados para crear un producto con un propósito en el mercado. Cuando alguien está desarrollando, hay una comunicación entre una máquina y un ser humano a través de un conjunto de reglas o sintaxis llamada lenguaje de programación, que es escrito en un documento tal y como si estuvieras escribiendo una carta o un guión en un documento de word.&lt;/p&gt;

&lt;p&gt;Existen diferentes tipos de desarrolladores, cada uno se enfoca en los usos que le damos a la tecnología en nuestras vidas. Un desarrollador móvil trabajó en el nivel de Candy Crush que acabas de pasar, un desarrollador web creó la funcionalidad con la que subiste un producto en Amazon, un desarrollador de controladores programó la lavadora con la que lavaste tu ropa y estos son solo algunos ejemplos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué significa ser desarrollador web?
&lt;/h2&gt;

&lt;p&gt;La web nació en 1989 gracias a la visión que tuvo Tim Berners-Lee de automatizar la transmisión de documentos científicos entre universidades. Diez años más tarde su invento pasó a ser usado para impulsar el comercio digital; grandes empresas estaban haciendo llegar sus productos y servicios a más personas, todos querían estar en Internet.&lt;/p&gt;

&lt;p&gt;Volviendo al presente, nos resulta sospechoso e incluso absurdo que una empresa no tenga presencia en Internet, es por eso que casi todas ellas buscan tener presencia digital, llegar a más clientes y generar más ventas. Las páginas web funcionan como herramientas que pueden ayudar a un producto a crecer y mejorar, por lo cual surge la necesidad de contar con una persona que pueda desarrollar un sitio o una aplicación web. Ahí es donde aparecemos nosotros, los desarrolladores web.&lt;/p&gt;

&lt;p&gt;Los desarrolladores web son personas que han especializado sus habilidades de desarrollo en los navegadores web como Chrome, Mozilla, Firefox y Safari (Si en los teléfonos móviles también 💪). Se han capacitado a través de diferentes recursos en Internet, gratuitos y/o de pago, después de un tiempo han aplicado a su primer trabajo en tecnología y ahí están, revolucionando el mercado.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quiero ser desarrollador web!
&lt;/h2&gt;

&lt;p&gt;Como lo mencioné anteriormente, no tener un título universitario no es un limitante para incursionar en el mundo del desarrollo, te resultará curioso saber la cantidad de gente que trabaja en Tech sin un título o con uno en una área diferente a este. Pienso que esta es la industria de las segundas oportunidades.&lt;/p&gt;

&lt;p&gt;No obstante, quiero ser franco contigo: Para triunfar vas a tener que ser consciente y proactivo de tu proceso, administrar tu propio tiempo, escoges tu material de estudio, descubrirás tu metodología de aprendizaje, y serás tu quien determine si estás avanzando.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659723417%2FKpHXDVVuT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659723417%2FKpHXDVVuT.png" alt="Meme de challenge accepted"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si has decidido aceptar mi invitación, el siguiente paso será comprender los conceptos fundamentales que todo desarrollador web debe conocer, el objetivo de este artículo no es hacerte un desarrollador en 30 minutos o en 1 hora. Es motivarte y brindarte las herramientas con las cuales, usando tu tiempo, te permitan convertirte en un desarrollador y le des ese impulso a tu vida para hacer algo nuevo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conceptos Fundamentales
&lt;/h2&gt;

&lt;p&gt;Existe una larga lista de conceptos que los desarrolladores experimentados terminan cargando en su mochila, no te voy a mentir, es extensa, sin embargo, muchos de ellos se aprenden en la marcha y hacen parte del aprendizaje continuo que forja la carrera. Desde mi perspectiva, estos son los conceptos más importantes que todo desarrollador web debería de dominar para aplicar a su primer trabajo:&lt;/p&gt;

&lt;h3&gt;
  
  
  Dominio de la computadora
&lt;/h3&gt;

&lt;p&gt;No es un secreto que una gran porción de la población mundial no sabe cómo usar una computadora y es totalmente entendible. En la actualidad, las computadoras siguen siendo un artículo de lujo y es más fácil dominarlas cuando las usas desde la infancia. Aprende a usar una, mejora tu mecanografía, agiliza tu capacidad para moverse entre aplicaciones, aprende como hacer una buena búsqueda en Google (Busca soluciones en Inglés, si no lo sabes usa un traductor).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659748318%2FrFur6nDms.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659748318%2FrFur6nDms.jpeg" alt="Persona usando una laptop"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;a href="https://www.pexels.com/@fauxels/" rel="noopener noreferrer"&gt;fauxels&lt;/a&gt; de &lt;a href="https://www.pexels.com/photo/person-using-macbook-pro-3183202/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Editor de código
&lt;/h3&gt;

&lt;p&gt;Un editor de código es el lienzo en el cual los desarrolladores escriben sus programas, sitios o aplicaciones. Es un simple editor de texto como el Bloc de Notas o Microsoft Word pero con capacidades especiales para usar lenguajes de programación, técnicamente podrías escribir un sitio web con tu Bloc de Notas (No lo hagas, por favor).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659774289%2F0drFqwsQU.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659774289%2F0drFqwsQU.jpeg" alt="Laptop con un editor de código abierto"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;strong&gt;&lt;a href="https://www.pexels.com/@kevin-ku-92347?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Kevin Ku&lt;/a&gt; de&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/data-codes-through-eyeglasses-577585/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cada desarrollador escoge su editor de texto y lo personaliza de manera que se sienta cómodo  usándolo como herramienta del día a día. Ahora es tu turno, échale un vistazo a los editores más usados y escoge el tuyo!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; (Recomendación personal)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;

&lt;p&gt;El desarrollo web es la evolución del contenido impreso. Las revistas y los periódicos llevan años difundiendo información que hoy, los sitios buscan ocupar. Es por eso que la analogía más básica de un sitio web puede ser una revista o un periódico (Con super poderes).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660268129%2FaijDrAbPP.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660268129%2FaijDrAbPP.jpeg" alt="Revista física"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;strong&gt;&lt;a href="https://www.pexels.com/@eviphotography?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Evi&lt;/a&gt; de&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/wood-fashion-art-vintage-10058574/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes de producir una revista debe existir una definición de contenido, cada página tiene secciones que se repiten y algunas que son únicas, tenemos títulos, párrafos, imágenes, etc. Usando HTML, podemos hacer la definición del contenido, establecemos en cada página el contenido que queremos compartir.&lt;/p&gt;

&lt;p&gt;Para darte una idea de que puedes hacer, estos son algunos usos que podrías darle a un documento HTML:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Definir los títulos o encabezados del sitio&lt;/li&gt;
&lt;li&gt;Agregar párrafos de texto que describen los encabezados&lt;/li&gt;
&lt;li&gt;Añadir imágenes y/o videos que agreguen significado a la información compartida&lt;/li&gt;
&lt;li&gt;Implementar formularios que almacenen información de los usuarios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En este punto nuestro sitio no tiene buen aspecto visual, ni tampoco interactividad, solo posee el contenido “crudo” y el siguiente paso es hacer que visualmente se vea bien, y así llamar la atención de los clientes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662016368%2FiZDGV_x4N.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662016368%2FiZDGV_x4N.png" alt="Esqueleto humano"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A continuación te dejaré algunos de los recursos gratuitos con los cuales podrás aprender HTML y ganar experiencia:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics" rel="noopener noreferrer"&gt;HTML Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/jordanholtdev/how-to-create-a-web-page-with-html-26ho"&gt;How to create a Web Page with HTML&lt;/a&gt; - The Practical Dev&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/hiidweig/html-basics-starts-from-zero-59a2"&gt;HTML Basics Start From Zero&lt;/a&gt; - The Practical Dev&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=qz0aGYrrlhU" rel="noopener noreferrer"&gt;HTML tutorial for Beginners&lt;/a&gt; - Programming with Mosh&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;

&lt;p&gt;El aspecto estético de cualquier producto o servicio puede impactar en su rentabilidad, es más fácil vender algo bonito que algo que no lo es. CSS aporta la estética del sitio, nos permite definir colores de texto, colores de fondo, tamaños, espaciados, distribuciones y mucho más; para usarlo solo debes crear una hoja de estilos y seleccionar los elementos HTML que quieres modificar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660489054%2FJwRnhFb4Y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660489054%2FJwRnhFb4Y.jpg" alt="Lienzo con pinturas"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;strong&gt;&lt;a href="https://www.pexels.com/@greta-hoffman?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Greta Hoffman&lt;/a&gt; de&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/person-painting-an-artwork-7859008/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para darte una idea de que puedes hacer, estos son algunos usos que podrías darle a un documento CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cambiar el color o el tamaño de la letra&lt;/li&gt;
&lt;li&gt;Especificar tamaños específicos o relativos&lt;/li&gt;
&lt;li&gt;Ajustar la distribución de un conjunto de elementos&lt;/li&gt;
&lt;li&gt;Aparecer o desaparecer elementos según el tamaño del dispositivo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En este punto nuestro sitio tiene un mejor aspecto visual, no es interactivo, pero puede captar la atención de los clientes y puede transmitir cualquier mensaje con estética. Podrías vender un sitio solo con HTML y CSS, sin embargo no es tan común ya que generalmente se prefiere la interacción pero existen muchos sitios en internet que están hechos solo con estas dos tecnologías.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662062970%2FGukUSsIcl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662062970%2FGukUSsIcl.png" alt="Cuerpo humano con ropa"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A continuación te dejaré algunos de los recursos gratuitos con los cuales podrás aprender CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics" rel="noopener noreferrer"&gt;CSS Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS" rel="noopener noreferrer"&gt;Learn to style HTML using CSS&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scrimba.com/learn/htmlcss" rel="noopener noreferrer"&gt;HTML and CSS crash course&lt;/a&gt; - Scrimba&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Vj7NZ6FiQvo&amp;amp;list=PLu8EoSxDXHP7xj_y6NIAhy0wuCd4uVdid" rel="noopener noreferrer"&gt;What the flexbox&lt;/a&gt; - Wes Bos&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Javascript
&lt;/h3&gt;

&lt;p&gt;Eventualmente, los sitios web empiezan a necesitar interactividad, no te puedes quedar haciendo sitios estáticos (HTML + CSS) cuando tienes a tu disposición la capacidad de responder a los eventos de los usuarios, enviar datos dinámicos o realizar conversiones directas en línea. Las empresas avanzan rápidamente y ninguna se quiere quedar con el sitio menos innovador del mercado, es por eso que este lenguaje de programación juega un papel fundamental en el desarrollo de sitios y aplicaciones modernas.&lt;/p&gt;

&lt;p&gt;Javascript es un lenguaje de programación que habilita la interactividad de los sitios y aplicaciones web modernas. Conecta el documento HTML con lógica de programación generando experiencias de usuario más enriquecedoras y sitios web más poderosos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660554608%2FuusdgnsWo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660554608%2FuusdgnsWo.jpeg" alt="Tormenta eléctrica"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;strong&gt;&lt;a href="https://www.pexels.com/@alexandre-bringer-1853849?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Alexandre Bringer&lt;/a&gt; de&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/lightning-unk-on-green-grass-field-3637060/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para darte una idea de que puedes hacer, estos son algunos usos que podrías darle a un documento Javascript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buscar un elemento HTML y cambiar alguna propiedad como el color, el tamaño, o el contenido.&lt;/li&gt;
&lt;li&gt;Quedarse escuchando cuando un botón sea clickeado, una tecla sea presionada o haya un scroll (Usar la rueda del mouse) y hacer algo.&lt;/li&gt;
&lt;li&gt;Almacenar información única de un usuario y generarla en caliente en el futuro (Escribir HTML dinámicamente).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En este punto tienes un sitio web con mucho más potencial, puedes transmitir información a través  de contenido escrito y multimedia, puedes hacerlo de manera estética y atractiva, y finalmente puedes agregar interactividad para que la experiencia vaya más allá de solo leer una revista o un periódico digital.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662089354%2F0vedxexSx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662089354%2F0vedxexSx.png" alt="Cuerpo humano con su capa muscular"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A continuación te dejaré algunos de los recursos gratuitos con los cuales podrás aprender Javascript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics" rel="noopener noreferrer"&gt;Javascript Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learnjavascript.online/" rel="noopener noreferrer"&gt;Learn Javascript Online&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eloquentjavascript.net/" rel="noopener noreferrer"&gt;Eloquent Javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=VuN8qwZoego&amp;amp;list=PLu8EoSxDXHP6CGK4YVJhL_VWetA865GOH" rel="noopener noreferrer"&gt;Javascript 30&lt;/a&gt; - Wes Bos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Escoge un framework
&lt;/h2&gt;

&lt;p&gt;Algunos de los aspectos más valiosos, desde mi perspectiva, acerca de la industria tecnológica son el ecosistema y las comunidades. Vas a encontrar personas mejorando las herramientas de trabajo, ayudando desarrolladores atascados en su código, o aportando a comunidades de aprendizaje como meetups, blogs o vlogs.&lt;/p&gt;

&lt;p&gt;Hablemos de herramientas de trabajo (los frameworks web). Posiblemente habrás escuchado el dicho “no re-inventar la rueda”, en desarrollo web la rueda ha evolucionado para solucionar los problemas más comunes a la hora de crear sitios y aplicaciones web. Un framework web es una abstracción para solucionar problemas comunes de manera administrada/guiada.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660657310%2F7OWCIUegx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660657310%2F7OWCIUegx.jpeg" alt="Vitrina con varios sabores de helado"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;a href="https://www.pexels.com/@roman-odintsov/" rel="noopener noreferrer"&gt;Roman Odintsov&lt;/a&gt; de &lt;a href="https://www.pexels.com/photo/gelato-ice-creams-on-trays-5061033/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HTML, CSS y Javascript siguen vigentes, puedes hacer un sitio totalmente asombroso solo con esos tres ingredientes. Los frameworks solo cambian el paradigma en el cual se combinan los tres ingredientes.&lt;/p&gt;

&lt;p&gt;No opinaré de ninguno para no sesgar, pero aquí hay una lista de los frameworks más usados en el mercado (en ese orden). Es tu decisión escoger el que más te guste, practicarlo con proyectos personales, y finalmente conseguir tu primer trabajo en tecnología 💪.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661104611%2Fql5fXHHF8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661104611%2Fql5fXHHF8.png" alt="Logo de React"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;React&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Documentación oficial:&lt;/strong&gt; &lt;a href="https://reactjs.org/docs/getting-started.html" rel="noopener noreferrer"&gt;https://reactjs.org/docs/getting-started.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursos gratuitos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=bMknfKXIFA8" rel="noopener noreferrer"&gt;React Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=w7ejDZ8SWv8" rel="noopener noreferrer"&gt;React Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=RVFAyFWO4go" rel="noopener noreferrer"&gt;React for Beginners&lt;/a&gt; - Dave Gray&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661126909%2Fky75fBb-K.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661126909%2Fky75fBb-K.png" alt="Logo de Vue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vue&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Documentación oficial:&lt;/strong&gt;  &lt;a href="https://vuejs.org/guide/introduction.html" rel="noopener noreferrer"&gt;https://vuejs.org/guide/introduction.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursos gratuitos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=FXpIoQ_rT_c" rel="noopener noreferrer"&gt;Vue Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=bzlFvd0b65c" rel="noopener noreferrer"&gt;The best way to learn Vue&lt;/a&gt; - Vue Mastery&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=qZXt1Aom3Cs" rel="noopener noreferrer"&gt;Vue JS Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661152014%2Fpp4l6qzuL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661152014%2Fpp4l6qzuL.png" alt="Logo de Svelte"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Svelte&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Documentación oficial:&lt;/strong&gt; &lt;a href="https://svelte.dev/docs" rel="noopener noreferrer"&gt;https://svelte.dev/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursos gratuitos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ujbE0mzX-CU" rel="noopener noreferrer"&gt;Svelte Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=3TVy6GdtNuQ" rel="noopener noreferrer"&gt;Svelte Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=0I_B6o2RX5A" rel="noopener noreferrer"&gt;Svelte Crash Course&lt;/a&gt; - Evan Does Tech&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  No pares de aprender
&lt;/h2&gt;

&lt;p&gt;La tecnología se mueve rápido, lo has notado con la velocidad en la que los teléfonos, los electrodomésticos o las aplicaciones evolucionan o se hacen obsoletos, dando paso a nuevas e innovadoras soluciones. Esto mismo ocurre con el desarrollo web, nuevas funcionalidades, librerías, frameworks, o conocimientos que no has adquirido empiezan a aparecer en tu lista de prioridades y depende de ti priorizar lo más importante.&lt;/p&gt;

&lt;p&gt;No necesitas aprender todo, lo que necesitas es estar vigente en el mercado. HTML, CSS y Javascript son los tres pilares fundamentales y es importante dominarlos. Más tarde depende de ti identificar cuales son las herramientas adicionales que te acercarán a tu trabajo ideal y organizarte tu tiempo para dominarlas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661481958%2FNUG_pJbv_.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661481958%2FNUG_pJbv_.jpeg" alt="Persona practicando en su computadora"&gt;&lt;/a&gt;&lt;br&gt;
Foto por &lt;strong&gt;&lt;a href="https://www.pexels.com/@rethaferguson/" rel="noopener noreferrer"&gt; RF._.studio&lt;/a&gt; de&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/woman-writing-on-her-notebook-3059747/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Y ahora qué?
&lt;/h2&gt;

&lt;p&gt;Es el final de este artículo, pero el inicio de una nueva aventura. Ahora que sabes en qué consiste ser desarrollador web y entiendes lo que se necesitas para alcanzarlo, es el momento de que te lo creas y te visualices alcanzando el éxito.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invierte tu tiempo y tu dinero (si es posible) en realizar actividades que te ayuden a ser un mejor desarrollador.&lt;/li&gt;
&lt;li&gt;Crea tu cuaderno de notas en el cual estén todos los conceptos que has aprendido.&lt;/li&gt;
&lt;li&gt;Realiza proyectos personales y présentalos como tú portafolio.&lt;/li&gt;
&lt;li&gt;Participa en comunidades digitales como &lt;a href="http://Dev.to" rel="noopener noreferrer"&gt;Dev.to&lt;/a&gt; o &lt;a href="http://Hashnode.com" rel="noopener noreferrer"&gt;Hashnode.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Encuentra un mentor que te ayude a mejorar tus habilidades.&lt;/li&gt;
&lt;li&gt;Resiste ante la frustración y vuelve a empezar si es necesario.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quiero agradecerte seguir esta guía, espero que impacte positivamente tu carrera y puedas cumplir el propósito de ser un desarrollador. Déjame saber que te ha parecido y compártelo con alguien a quien le pueda servir.&lt;/p&gt;

&lt;p&gt;Hasta la próxima 👋.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What the heck is web development? 🇺🇸 🤷‍♀️🤷‍♂️</title>
      <dc:creator>Mateo Garcia</dc:creator>
      <pubDate>Wed, 30 Mar 2022 20:23:28 +0000</pubDate>
      <link>https://forem.com/mateo_garcia/what-the-heck-is-web-development-f96</link>
      <guid>https://forem.com/mateo_garcia/what-the-heck-is-web-development-f96</guid>
      <description>&lt;p&gt;&lt;a href="https://blog.teo-garcia.dev/que-demonios-es-desarrollo-web" rel="noopener noreferrer"&gt;🇪🇸  Spanish Version&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Hi everyone 👋
&lt;/h1&gt;

&lt;p&gt;I will be using this blog to share tutorials and thoughts about my career as a Software Engineer. It may be helpful for you or your close ones. If you can follow me on my networks and react to this post, it would motivate me to continue.&lt;/p&gt;

&lt;p&gt;Life is not easy many people have had to start over because of a wrong decision, a calamity, or a pandemic like this one. My motivation for writing this article is to share with people who need a new direction, an alternative with which they can obtain well-being and abundance for themselves and their families.&lt;/p&gt;

&lt;p&gt;If you found this article for yourself, you may already know what this is all about. However, you may know someone looking for something new to undertake, share this post and let's change lives. As motivation for the reader, here are some aspects that I consider actual of the development industry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't need a college degree to become a developer (most of the time).&lt;/li&gt;
&lt;li&gt;A mid-range computer running Windows, Linux, or Mac is enough to get started.&lt;/li&gt;
&lt;li&gt;Working in development/technology enables benefits that are not as common in other disciplines (we'll talk about them later).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My name is Mateo Garcia. I am 25 years old, and I have been working as a web developer for seven years. My time in the academy was not brilliant; The technology industry opened the doors for me to work as a developer without asking for a professional degree. After all this time, I am convinced that anyone could have achieved the same without the diploma, and that's why we are here today.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to take advantage of this article
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Take the time to understand each concept without being anxious. It is not necessary to understand everything on the first try. Move forward when you are ready.&lt;/li&gt;
&lt;li&gt;Take good notes. A strategy to internalize the concepts is to take good notes. You can use a physical or digital notebook.&lt;/li&gt;
&lt;li&gt;Use the resources attached to the content and practice by yourself. Don't worry if things don't go well the first few times. Practicing is progress.&lt;/li&gt;
&lt;li&gt;Do not lose motivation. Even if you don't realize it, you are moving forward just by deciding to read this article, study, practice, look for help and repeat. We are a community, and we are here to support each other to achieve our goals.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The benefits of the programmer&lt;/li&gt;
&lt;li&gt;What does it mean to be a programmer?&lt;/li&gt;
&lt;li&gt;What does it mean to be a web programmer?&lt;/li&gt;
&lt;li&gt;I want to be a web developer!&lt;/li&gt;
&lt;li&gt;Fundamental Concepts

&lt;ol&gt;
&lt;li&gt;Computer Proficiency&lt;/li&gt;
&lt;li&gt;Code editor&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Choose a framework&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Don't stop learning!&lt;/li&gt;

&lt;li&gt;What's next?&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  The benefits of the programmer
&lt;/h2&gt;

&lt;p&gt;The technology industry is well known for the benefits it gives to its employees, it's hard to talk about it without sounding like a braggart. However, I believe that it is one of the most influential factors in getting people interested in this discipline and that is why I want you to know some of the benefits that you could enjoy working in technology:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher salaries than other engineering disciplines, sometimes with payments in dollars.&lt;/li&gt;
&lt;li&gt;Being part of a team with excellent professionals&lt;/li&gt;
&lt;li&gt;Additional health plans, Internet subsidies, bonuses to improve your office, budget for formal and informal education, etc.&lt;/li&gt;
&lt;li&gt;Working remotely, partially remote, or in dazzling offices.&lt;/li&gt;
&lt;li&gt;Unlimited vacation (take as many days as you need) or additional days beyond those established by law in your country.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What does it mean to be a developer?
&lt;/h2&gt;

&lt;p&gt;From the verb to develop, developers are people who acquire knowledge to create software (programs, applications, apps) and from that, they are hired to create a product with a purpose in the market. When someone is developing, communication occurs between a machine and a human being through a set of rules or syntax called programming language, which is written in a document as if you were writing a letter or a script in a word document.&lt;/p&gt;

&lt;p&gt;There are different types of developers, each focused on the uses we make of technology in our lives. A mobile developer worked on the Candy Crush level you just passed. A web developer created the functionality with which you uploaded a product on Amazon. A driver developer programmed the board of the washing machine with which you washed your clothes. These are just a few examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does it mean to be a web developer?
&lt;/h2&gt;

&lt;p&gt;The web was born in 1989 thanks to Tim Berners-Lee's vision of automating the transmission of scientific documents between universities. Ten years later, his invention was used to boost digital commerce; large companies were making their products and services reach more people, everyone wanted to be on the Internet, the feeling was incredible.&lt;/p&gt;

&lt;p&gt;Returning to the present, we find it suspicious and even absurd that a company does not have a presence on the Internet. That is why almost all of them seek to have a digital presence, reach more customers and generate more sales. Web sites work as tools that can help a product grow and improve, so the need arises to have a person who can program a website or a web application. That's where we appear, the web developers.&lt;/p&gt;

&lt;p&gt;Web developers are people who have specialized their development skills in web browsers like Chrome, Mozilla, Firefox, and Safari (Yes, in mobile too 💪). They have trained through different free or paid resources on the Internet. After a while, they have applied for their first job in technology (with no professional experience), and there they are, revolutionizing the market.&lt;/p&gt;

&lt;h2&gt;
  
  
  I want to be a web developer!
&lt;/h2&gt;

&lt;p&gt;As I mentioned before, not having a college degree is not a limiting factor to entering the development world. You would be curious to know how many people work in Tech without a degree or with one in a different area. I think this is the industry of second chances.&lt;/p&gt;

&lt;p&gt;Nevertheless, I want to be honest with you: To succeed, you will have to be conscious and proactive in your process. You will manage your own time, will choose your study material, will discover your learning methodology, and will be the one to determine if you are making progress.&lt;/p&gt;

&lt;p&gt;If you have decided to accept my invitation, the next step will be to understand the fundamental concepts that every web developer should know. The goal of this article is not to turn you into a developer in 30 minutes or 1 hour. It is for motivating you and giving you the tools that, using your time, will allow you to become a developer and bring that impulse to your life to do something new.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659723417%2FKpHXDVVuT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659723417%2FKpHXDVVuT.png" alt="Challenge accepted meme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fundamental Concepts
&lt;/h2&gt;

&lt;p&gt;There is a long list of concepts that experienced developers end up carrying in their backpacks. I'm not going to lie to you is extensive. Many of those are learned on the fly and are part of the continuous learning that forges the career. From my perspective, these are the most important concepts that every web developer should master to apply to their first job:&lt;/p&gt;

&lt;h3&gt;
  
  
  Computer Proficiency
&lt;/h3&gt;

&lt;p&gt;It is no secret that a large portion of the world's population does not know how to use a computer and it is understandable. Nowadays, computers are still luxury items, and it is easier to master them when you have been using them since childhood. Learn how to use one, improve your typing, speed up your ability to move between applications, learn how to do a good Google search (look for solutions in English, if you don't know it use a translator).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659748318%2FrFur6nDms.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659748318%2FrFur6nDms.jpeg" alt="Person using a laptop"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;a href="https://www.pexels.com/@fauxels/" rel="noopener noreferrer"&gt;fauxels&lt;/a&gt; from &lt;a href="https://www.pexels.com/photo/person-using-macbook-pro-3183202/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Editor
&lt;/h3&gt;

&lt;p&gt;A code editor is a canvas on which developers write their programs, sites, or applications. It is a simple text editor like Notepad or Microsoft Word but with special capabilities to use programming languages, technically you could write a website with your Notepad (Don't do it, please).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659774289%2F0drFqwsQU.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648659774289%2F0drFqwsQU.jpeg" alt="Laptop with a code editor opened"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;strong&gt;&lt;a href="https://www.pexels.com/@kevin-ku-92347?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Kevin Ku&lt;/a&gt; from&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/data-codes-through-eyeglasses-577585/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every developer chooses their text editor and customizes it to feel comfortable using it as a day-to-day tool. Now it's your turn to take a look at the most used editors and choose yours!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; (Personal recommendation)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;

&lt;p&gt;Web development is the evolution of printed content. Magazines and newspapers have been disseminating information for years, which today, sites seek to occupy. That is why the most basic analogy of a website can be a magazine or a newspaper (with superpowers).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660268129%2FaijDrAbPP.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660268129%2FaijDrAbPP.jpeg" alt="Magazine"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;strong&gt;&lt;a href="https://www.pexels.com/@eviphotography?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Evi&lt;/a&gt; from&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/wood-fashion-art-vintage-10058574/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before producing magazines, there must be a content definition, each page has sections repeated and some that are unique, it has titles, paragraphs, images, etc. Using HTML, we can make the content definition, establishing on each page the content we want to share.&lt;/p&gt;

&lt;p&gt;To give you an idea of what you can do, here are some uses you could put an HTML document to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define site titles or headings&lt;/li&gt;
&lt;li&gt;Adding paragraphs of text describing the headings&lt;/li&gt;
&lt;li&gt;Adding images and videos that add meaning to the information shared&lt;/li&gt;
&lt;li&gt;Implementing forms that store user information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point our site does not have a good visual aspect or interactivity, it only has "flat" content and the next step is to make it look good visually, and thus attract the attention of customers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662016368%2FiZDGV_x4N.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662016368%2FiZDGV_x4N.png" alt="Human skeleton"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some of the free resources with which you can learn HTML and gain experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics" rel="noopener noreferrer"&gt;HTML Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/jordanholtdev/how-to-create-a-web-page-with-html-26ho"&gt;How to create a Web Page with HTML&lt;/a&gt; - The Practical Dev&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/hiidweig/html-basics-starts-from-zero-59a2"&gt;HTML Basics Start From Zero&lt;/a&gt; - The Practical Dev&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=qz0aGYrrlhU" rel="noopener noreferrer"&gt;HTML tutorial for Beginners&lt;/a&gt; - Programming with Mosh&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;

&lt;p&gt;The aesthetic aspect of any product or service can impact its profitability, it is easier to sell something beautiful than something that is not. CSS provides the aesthetics of the site. It allows us to define text colors, background colors, sizes, spacing, distributions, and much more; to use it, you only have to create a style sheet and select the HTML elements you want to modify.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660489054%2FJwRnhFb4Y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660489054%2FJwRnhFb4Y.jpg" alt="Canvas with paintings"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;strong&gt;&lt;a href="https://www.pexels.com/@greta-hoffman?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Greta Hoffman&lt;/a&gt; from&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/person-painting-an-artwork-7859008/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To give you an idea of what you can do, here are some uses you could make of a CSS document:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the color or size of the font.&lt;/li&gt;
&lt;li&gt;Specify specific or relative sizes&lt;/li&gt;
&lt;li&gt;Adjust the layout of a set of elements&lt;/li&gt;
&lt;li&gt;Appear or disappear elements according to device size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point our site has a better visual aspect, it is not interactive, but it can capture the attention of customers and can convey any message with aesthetics. You could sell a site only with HTML and CSS, however, it is not so common since the interaction is generally preferred but there are many sites on the Internet that are made only with these two technologies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662062970%2FGukUSsIcl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662062970%2FGukUSsIcl.png" alt="Human body with clothes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some of the free resources with which you can learn CSS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics" rel="noopener noreferrer"&gt;CSS Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS" rel="noopener noreferrer"&gt;Learn to style HTML using CSS&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scrimba.com/learn/htmlcss" rel="noopener noreferrer"&gt;HTML and CSS crash course&lt;/a&gt; - Scrimba&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Vj7NZ6FiQvo&amp;amp;list=PLu8EoSxDXHP7xj_y6NIAhy0wuCd4uVdid" rel="noopener noreferrer"&gt;What the flexbox&lt;/a&gt; - Wes Bos&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Javascript
&lt;/h3&gt;

&lt;p&gt;Eventually, websites start needing interactivity. We can't stay making static sites (HTML + CSS) when you have at your disposal the ability to respond to user events, send dynamic data, or perform direct online conversions. Companies are moving fast, and no one wants to have the least innovative site on the market. That's why this programming language plays a fundamental role in modern sites and applications development.&lt;/p&gt;

&lt;p&gt;Javascript is a programming language that enables the interactivity of modern websites and applications, connects the HTML document with programming logic generating richer user experiences and vigorous sites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660554608%2FuusdgnsWo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660554608%2FuusdgnsWo.jpeg" alt="Thunderstorm"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;strong&gt;&lt;a href="https://www.pexels.com/@alexandre-bringer-1853849?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Alexandre Bringer&lt;/a&gt; from&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/lightning-unk-on-green-grass-field-3637060/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To give you an idea of what you can do, here are some uses you could make of a Javascript document:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for an HTML element and change some properties such as color, position, size, content, etc.&lt;/li&gt;
&lt;li&gt;Listen when a button is clicked, when a key is pressed, or when there is a scroll (Use the mouse wheel) and do something.&lt;/li&gt;
&lt;li&gt;Store unique information about a user and generate it on the fly in the future (Write HTML dynamically).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point you have a website with much more potential, you can transmit information through written and multimedia content, you can do it aesthetically and attractively, and finally, you can add interactivity so that the experience goes beyond just reading a magazine or a digital newspaper.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662089354%2F0vedxexSx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648662089354%2F0vedxexSx.png" alt="Human body with its muscular layer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some of the free resources with which you can learn Javascript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics" rel="noopener noreferrer"&gt;Javascript Basics&lt;/a&gt; - Mozilla Developer Network&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learnjavascript.online/" rel="noopener noreferrer"&gt;Learn Javascript Online&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eloquentjavascript.net/" rel="noopener noreferrer"&gt;Eloquent Javascript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=VuN8qwZoego&amp;amp;list=PLu8EoSxDXHP6CGK4YVJhL_VWetA865GOH" rel="noopener noreferrer"&gt;Javascript 30&lt;/a&gt; - Wes Bos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choose a framework
&lt;/h2&gt;

&lt;p&gt;Some of the most valuable aspects, from my perspective, of the tech industry, are the ecosystem and communities. You'll find people improving tools, helping developers stuck in their code, or perhaps contributing to learning communities like meetups, blogs, or vlogs.&lt;/p&gt;

&lt;p&gt;Let's talk about working tools (web frameworks). You may have heard the saying "don't reinvent the wheel", in web development, the wheel has evolved to solve the most common problems when creating websites and web applications. A web framework is an abstraction to solve common issues in a managed/guided way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660657310%2F7OWCIUegx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648660657310%2F7OWCIUegx.jpeg" alt="Several ice cream flavors"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;a href="https://www.pexels.com/@roman-odintsov/" rel="noopener noreferrer"&gt;Roman Odintsov&lt;/a&gt; from &lt;a href="https://www.pexels.com/photo/gelato-ice-creams-on-trays-5061033/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HTML, CSS, and Javascript are still valid, you can make an amazing site with just those three ingredients. Frameworks just change the paradigm in which the three ingredients are combined.&lt;/p&gt;

&lt;p&gt;I won't give my opinion about any of them to avoid bias, but here is a list of the most used frameworks in the market (in that order). It's up to you to choose the one you like the most, practice it with personal projects, and finally get your first job in technology 💪.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661104611%2Fql5fXHHF8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661104611%2Fql5fXHHF8.png" alt="React Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;React&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Official Docs:&lt;/strong&gt; &lt;a href="https://reactjs.org/docs/getting-started.html" rel="noopener noreferrer"&gt;https://reactjs.org/docs/getting-started.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Courses:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=bMknfKXIFA8" rel="noopener noreferrer"&gt;React Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=w7ejDZ8SWv8" rel="noopener noreferrer"&gt;React Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=RVFAyFWO4go" rel="noopener noreferrer"&gt;React for Beginners&lt;/a&gt; - Dave Gray&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661126909%2Fky75fBb-K.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661126909%2Fky75fBb-K.png" alt="Vue Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Vue&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Official Docs:&lt;/strong&gt;  &lt;a href="https://vuejs.org/guide/introduction.html" rel="noopener noreferrer"&gt;https://vuejs.org/guide/introduction.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Courses:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=FXpIoQ_rT_c" rel="noopener noreferrer"&gt;Vue Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=bzlFvd0b65c" rel="noopener noreferrer"&gt;The best way to learn Vue&lt;/a&gt; - Vue Mastery&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=qZXt1Aom3Cs" rel="noopener noreferrer"&gt;Vue JS Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661152014%2Fpp4l6qzuL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661152014%2Fpp4l6qzuL.png" alt="Svelte Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Svelte&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Official Docs:&lt;/strong&gt; &lt;a href="https://svelte.dev/docs" rel="noopener noreferrer"&gt;https://svelte.dev/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Courses:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ujbE0mzX-CU" rel="noopener noreferrer"&gt;Svelte Course&lt;/a&gt; - FreeCode Camp&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=3TVy6GdtNuQ" rel="noopener noreferrer"&gt;Svelte Crash Course&lt;/a&gt; - Traversy Media&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=0I_B6o2RX5A" rel="noopener noreferrer"&gt;Svelte Crash Course&lt;/a&gt; - Evan Does Tech&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Don’t stop learning!
&lt;/h2&gt;

&lt;p&gt;Technology moves fast, you've noticed it with the speed at which phones, appliances or applications evolve or deprecate, giving way to new and innovative solutions. The same happens with web development. New functionalities, libraries, frameworks, or knowledge that you have not acquired starts to appear in your list of priorities. It is up to you to prioritize what is most important.&lt;/p&gt;

&lt;p&gt;You don't need to learn everything. What you need is to be current in the market. HTML, CSS, and Javascript are the three fundamental pillars; it is crucial to master them. Later it is up to you to identify additional tools that will get you closer to your ideal job and organize your time to learn how to use them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661481958%2FNUG_pJbv_.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1648661481958%2FNUG_pJbv_.jpeg" alt="Woman practicing on her computer"&gt;&lt;/a&gt;&lt;br&gt;
Pic by &lt;strong&gt;&lt;a href="https://www.pexels.com/@rethaferguson/" rel="noopener noreferrer"&gt; RF._.studio&lt;/a&gt; from&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://www.pexels.com/photo/woman-writing-on-her-notebook-3059747/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Now what?
&lt;/h2&gt;

&lt;p&gt;It is the end of the article but the beginning of a new adventure. Now that you know what it is to be a web developer and understand what it takes to be one, it's time for you to believe it and visualize yourself achieving success.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invest your time and money (if possible) in activities that will help you become a better developer.&lt;/li&gt;
&lt;li&gt;Create your notebook with all the concepts you have learned.&lt;/li&gt;
&lt;li&gt;Create personal projects and present them as your portfolio.&lt;/li&gt;
&lt;li&gt;Participate in digital communities such as &lt;a href="http://dev.to/"&gt;Dev.to&lt;/a&gt; or &lt;a href="http://hashnode.com/" rel="noopener noreferrer"&gt;Hashnode.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find a mentor to help you improve your skills.&lt;/li&gt;
&lt;li&gt;Resist frustration and start over if necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want to thank you for following this guide, I hope it positively impacts your career, and you can fulfill the purpose of being a developer. Let me know how you liked it and share it with someone who may find it helpful.&lt;/p&gt;

&lt;p&gt;See you next 👋.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Rendering in React ♻ ⚛️</title>
      <dc:creator>Mateo Garcia</dc:creator>
      <pubDate>Sun, 31 Jan 2021 14:34:20 +0000</pubDate>
      <link>https://forem.com/mateo_garcia/understanding-rendering-in-react-i5i</link>
      <guid>https://forem.com/mateo_garcia/understanding-rendering-in-react-i5i</guid>
      <description>&lt;p&gt;Hey there! 👋🏼&lt;/p&gt;

&lt;p&gt;I'm Mateo Garcia, I co-organize a community in Medellin, Colombia called React Medellin. This year I started a series of posts called 'Coding with Mateo'; My first post was about &lt;a href="https://dev.to/teo_garcia/6-ways-to-write-a-react-component-ts-included-2k42"&gt;6 ways to write a React component&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsowd5c0xwoinpbaxaza4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsowd5c0xwoinpbaxaza4.png" alt="Coding with Mateo billboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today I want to share with you what I have researched for a couple of weeks about how rendering works in React. To begin with, I will say that the concept of rendering in React is a little different from how we know it. Let's find out why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;p&gt;1.Introduction&lt;br&gt;
2.VirtualDOM&lt;br&gt;
3.Render&lt;br&gt;
4.Reconciliation&lt;br&gt;
5.Commit&lt;br&gt;
6.An example&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;You are probably here because you have worked with React, interacted with their APIs, changed the state of your components, and seen the magic happen. However, it is sometimes useful to go into a little more detail about how React does what it does. Performance problems can appear when your React application is continuously re-rendering, the application has scaled considerably and, the components are complex and expensive to represent. That's why &lt;code&gt;Understanding rendering in React&lt;/code&gt; is something that all of us who use this library should understand.&lt;/p&gt;

&lt;p&gt;To understand why React is so fast it is important to know these four concepts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Virtual DOM.&lt;/li&gt;
&lt;li&gt;Render.&lt;/li&gt;
&lt;li&gt;Reconciliation.&lt;/li&gt;
&lt;li&gt;Commit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's get started&lt;/p&gt;

&lt;h2&gt;
  
  
  VirtualDOM
&lt;/h2&gt;

&lt;p&gt;The Virtual DOM was a strategy that appeared to solve the modifications or mutations that the DOM suffers when using a web or mobile application. Rendering the entire document tree is too costly as applications become more complex; by mutations, we can understand any change that the DOM can undergo: an insertion/modification/deletion of an element or its properties.&lt;/p&gt;

&lt;p&gt;Thus, the Virtual DOM came to represent the DOM tree in memory. Perform calculations using the state and props and finally decide which elements of the actual DOM (the browser one, I mean haha) should be mutated. From the &lt;a href="https://reactjs.org/docs/faq-internals.html" rel="noopener noreferrer"&gt;official React website&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The virtual DOM (VDOM) is a programming concept where an ideal, or “virtual”, representation of a UI is kept in memory and synced with the “real” DOM by a library such as ReactDOM. This process is called reconciliation. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Initially, I said that the concept we normally know as rendering is different in React, I personally considered rendering as the procedure of synchronizing changes in the DOM. React synchronizes the changes in the DOM through three steps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcsjl5onhxu99qhokbfjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcsjl5onhxu99qhokbfjh.png" alt="Virtual DOM in a graphic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Render
&lt;/h2&gt;

&lt;p&gt;Rendering is a process that is triggered by a change of state in some component of your application, when a state change occurs React:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9s7jqpadoijq32y5b1eo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9s7jqpadoijq32y5b1eo.png" alt="React render phase illustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will collect from the root of your App all the components that requested a re-render because their state or their props changed.&lt;/li&gt;
&lt;li&gt;It will invoke these components

&lt;ol&gt;
&lt;li&gt;If you use &lt;code&gt;function components&lt;/code&gt; it will invoke the function itself, something like &lt;code&gt;Header(props)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you use &lt;code&gt;class components&lt;/code&gt; it will invoke &lt;code&gt;YourComponent.render()&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when the process's name is rendering, at this point, the DOM has not been modified or altered, which could be a little tricky if you think as I did, about the meaning of render.&lt;/p&gt;

&lt;p&gt;Since we normally use &lt;code&gt;JSX&lt;/code&gt;, the code will be transformed to &lt;code&gt;React.createElement(...)&lt;/code&gt;. The output of the &lt;code&gt;createElement&lt;/code&gt; will describe how the application should look like in the next version of the render through the next stage called:&lt;/p&gt;

&lt;h2&gt;
  
  
  Reconciliation
&lt;/h2&gt;

&lt;p&gt;Once the re-rendering has happened, React has the context of two versions of the &lt;code&gt;React.createElement&lt;/code&gt; output, the version executed before the state change occurred, and the version executed after the state has changed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5b2efk1nj6yhl83jou5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5b2efk1nj6yhl83jou5i.png" alt="Reconcilier process illustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point two objects are describing the UI, React through a heuristic algorithm of order O(n^3) will be able to determine which elements need to be represented again.&lt;/p&gt;

&lt;p&gt;Among technical details the React team tells us some aspects about how React identifies which elements were affected:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Elements that changed type must be recreated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changes within the attributes of an element are replaced, without unmounting the element.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrades within the element's children recreate all children&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates within child elements that use &lt;code&gt;key&lt;/code&gt; as attributes are compared and only new items are represented.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Commit
&lt;/h2&gt;

&lt;p&gt;After React calculated all the changes that should be made in the application tree, &lt;code&gt;react-dom&lt;/code&gt; appears for the browser and &lt;code&gt;react-native&lt;/code&gt; for the mobile platforms, which make the modifications to the browser or mobile app API (finally! 🥳). Synchronously React will clean up the past layout effects, run the new layout effects, then the browser will paint the DOM, after that, React will clean up the past effects and mount the new ones; when I talk about effects I refer to the lifecycles method such as &lt;a href="https://reactjs.org/docs/hooks-reference.html#uselayouteffect" rel="noopener noreferrer"&gt;useLayoutEffect&lt;/a&gt; and &lt;a href="https://reactjs.org/docs/hooks-reference.html#useeffect" rel="noopener noreferrer"&gt;useEffect&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pswc5zt2psdqbgiq8oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pswc5zt2psdqbgiq8oa.png" alt="Commit phase illustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To explain the lifecycles method part a little bit more, I bring to you this wonderful graph that Donavon West and his contributors created. This is the project &lt;a href="https://github.com/donavon/hook-flow" rel="noopener noreferrer"&gt;repo&lt;/a&gt;, check it out!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frexqxdys2yzjq7m178ba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frexqxdys2yzjq7m178ba.png" alt="React Hooks lifecycle methods flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before moving on to the example, it is important to understand that under normal conditions, if a component calls &lt;code&gt;render&lt;/code&gt;, it will automatically do so for all its children. However it is possible to prevent certain components from being re-rendered under certain special cases, I have in my plans to talk about it, however, you can read about &lt;code&gt;React.PureComponent&lt;/code&gt;, &lt;code&gt;React.memo&lt;/code&gt;, &lt;code&gt;React.useMemo&lt;/code&gt;, and &lt;code&gt;React.useCallback&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Consider the following example.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhnrnb18jxqolmu2vuffb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhnrnb18jxqolmu2vuffb.png" alt="Rendering example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the code&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRenderTimes&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../utils&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getRandomHEX&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`#&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;16777215&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setColor&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#111&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRenderTimes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Header component has re-rendered &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; times&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getRandomHEX&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Click&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Footer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRenderTimes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Footer component has re-rendered &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; times&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRenderTimes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hey, nice to see you again 👋🏼&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;The App component has re-rendered &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; times&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Footer&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;useRenderTimes&lt;/code&gt; is a hook that will allow us to accumulate the number of times a component is re-rendered. I saw it in a &lt;a href="https://kentcdodds.com/blog/how-to-optimize-your-context-value" rel="noopener noreferrer"&gt;post&lt;/a&gt; by Kent C Dodds, so thanks!&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useRenderTimes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;renderRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;renderRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;renderRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;renderRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRenderTimes&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;&amp;lt;Header /&amp;gt;&lt;/code&gt; component has its own state, which will be changing once we start pressing the button. Let's take a look&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9fwem222jn8vn08ywsin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9fwem222jn8vn08ywsin.png" alt="Rendering example in the second render"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What just happened here is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An event in the &lt;code&gt;&amp;lt;Header /&amp;gt;&lt;/code&gt; component triggered a state change. A render was scheduled.&lt;/li&gt;
&lt;li&gt;VirtualDOM started analyzing which components were marked as needing to be re-rendered. Only &lt;code&gt;&amp;lt;Header /&amp;gt;&lt;/code&gt; needed it.&lt;/li&gt;
&lt;li&gt;Through the reconciliation step, it was identified that the style of the &lt;code&gt;&amp;lt;header&amp;gt;&amp;lt;/header&amp;gt;&lt;/code&gt; was changing.&lt;/li&gt;
&lt;li&gt;Dispatched a commit to DOM.&lt;/li&gt;
&lt;li&gt;Boom, we see the change of the background color.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;Although rendering in React is a process that can become complex, we must recognize the excellent work done by the entire React Team to improve the day to day experience in web development. Knowing the deeper parts of a tool can be useful for people who are just starting to discover it, as well as for people who have been using it for a long time and want to understand what was going on behind the scenes.&lt;/p&gt;

&lt;p&gt;I want to thank the experts who continually strive to share all the knowledge in the most understandable way possible, some of them are &lt;a href="https://blog.isquaredsoftware.com/" rel="noopener noreferrer"&gt;Mark Erikson&lt;/a&gt; and &lt;a href="https://kentcdodds.com/blog/" rel="noopener noreferrer"&gt;Kent C Dodds&lt;/a&gt;. I leave you the link to their blogs. Each article is a gold mine and needs to be recognized.&lt;/p&gt;

&lt;p&gt;If you found this post useful and would like to see more content, you could react to this post, which would make me very happy. If you have any comments or corrections that could improve this post, I would be glad to receive them. Thank you for your time 👋🏼 💙.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>6 ways to write a React component (TS Included)</title>
      <dc:creator>Mateo Garcia</dc:creator>
      <pubDate>Sun, 03 Jan 2021 16:44:21 +0000</pubDate>
      <link>https://forem.com/mateo_garcia/6-ways-to-write-a-react-component-ts-included-2k42</link>
      <guid>https://forem.com/mateo_garcia/6-ways-to-write-a-react-component-ts-included-2k42</guid>
      <description>&lt;p&gt;Hello everyone, my name is Mateo and like many of you, I have set some goals now that a new year has begun. Sharing, documenting, and applying my knowledge are some of them so I have decided to open this space called &lt;code&gt;Coding with Mateo&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F88camp6rkxome3to2vs2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F88camp6rkxome3to2vs2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first post I will write is a compilation of different ways you can write a React component. Additionally, I will leave its version in Typescript in case it is useful to clarify how to annotate the functions in its different presentations, let's start.&lt;/p&gt;

&lt;p&gt;React has gradually become the paradigm/technology we think of when it comes to frontend development. Watch some videos, buy some Udemy courses, make your first task list, finally master the main concepts. However, the diversity of syntax provided by Javascript makes that at some point we don't understand why some people write components one way and others another way.&lt;/p&gt;

&lt;p&gt;It is important to remember that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A React component is a function that thanks to the composition can contain internal functions, including new components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Javascript functions are objects with the difference that they can be executed through parentheses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even if you are still maintaining/writing class components, those components are interpreted, transposed, and executed as ES5 functions since those classes are only &lt;a href="https://sophiali.dev/syntactic-sugar-examples-javascript" rel="noopener noreferrer"&gt;syntactic sugar&lt;/a&gt; of recent EcmaScript features.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you are working on a project by yourself or in a team, defining a syntax to declare your utility functions and React components can help to simplify the fatigue caused by the rapid growth of the project structure.&lt;/p&gt;

&lt;p&gt;Below, I show you different ways to write a React component using a button as an example.&lt;/p&gt;

&lt;p&gt;1.Using a regular &lt;code&gt;function&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

   &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
   &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;2.Using a &lt;code&gt;function&lt;/code&gt; expression.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

   &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;3.Using an &lt;code&gt;arrow function&lt;/code&gt; with &lt;code&gt;const&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

   &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;4.Using an &lt;code&gt;arrow function&lt;/code&gt; with &lt;code&gt;let&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

   &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
   &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;5.Using an &lt;code&gt;explicit return&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

   &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
   &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="c1"&gt;// or&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;6.Using a &lt;code&gt;class&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;

    &lt;span class="c1"&gt;// Button.jsx&lt;/span&gt;
    &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;render &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;

   &lt;span class="c1"&gt;// Button.tsx&lt;/span&gt;
   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;};&lt;/span&gt;

   &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Finally, I must say that, all the ways of writing them work well.  There is no one better than another, feel free to use the one you like best.&lt;/p&gt;

&lt;p&gt;However, I would like to clarify that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The class components are being progressively &lt;a href="https://reactjs.org/blog/2019/02/06/react-v16.8.0.html" rel="noopener noreferrer"&gt;deprecated&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Declaring components with a let can be useful when performing &lt;a href="https://reactjs.org/docs/conditional-rendering.html" rel="noopener noreferrer"&gt;conditional rendering&lt;/a&gt; based on the props of a parent component.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;

   &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ThisOrThat&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="cm"&gt;/* 
        Maybe some difficult logic.     
        Of course, that code does not smell good, however, it's 
        important to know that's possible to do this.
      */&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;renderedComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getComplexComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// &lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;renderedComponent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="nx"&gt;renderedComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FallbackComponent&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;renderedComponent&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;I would love to know your opinion and what topics you would like to see in my blog posts. Also if you can &lt;code&gt;react&lt;/code&gt; to this blog that would make me very happy.&lt;/p&gt;

&lt;p&gt;Thank you very much and happy new year 🎉🥳&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
