<?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>DEV Community: Gabriel Espinel</title>
    <description>The latest articles on DEV Community by Gabriel Espinel (@esgabo).</description>
    <link>https://dev.to/esgabo</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%2F410676%2F936718c6-98cd-469b-9825-658842e7bcbb.png</url>
      <title>DEV Community: Gabriel Espinel</title>
      <link>https://dev.to/esgabo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/esgabo"/>
    <language>en</language>
    <item>
      <title>¿Por qué uso Windows como mi Sistema Operativo principal?</title>
      <dc:creator>Gabriel Espinel</dc:creator>
      <pubDate>Mon, 24 Aug 2020 16:17:10 +0000</pubDate>
      <link>https://dev.to/esgabo/por-que-uso-windows-como-mi-sistema-operativo-principal-27n7</link>
      <guid>https://dev.to/esgabo/por-que-uso-windows-como-mi-sistema-operativo-principal-27n7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--beHotSxQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/windows10.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--beHotSxQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/windows10.webp" alt="heading-image"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Mi historia con Windows se remonta a muchos años atrás. La primera computadora que tuvimos en casa tenía Windows 3.1, donde para poder entrar el sistema operativo había que invocarlo desde la línea de comandos usando el comando &lt;em&gt;win&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;En esa época, no estábamos ni siquiera cerca de tener Internet en casa. Así que lo único que podía hacer con el computador era básicamente jugar algunos videojuegos o ponerme a “surfear” las carpetas y los archivos que existían.&lt;/p&gt;

&lt;p&gt;Después de ese computador viejo y anticuado, tuvimos en casa un computador &lt;em&gt;HP Pavilion&lt;/em&gt; con Windows ME. Nuevamente, sin Internet.&lt;/p&gt;

&lt;p&gt;Esta situación de no tener Internet prevaleció bastantes años después, incluso después de haberme graduado del bachillerato.&lt;/p&gt;

&lt;p&gt;Fue justo esta situación y mi curiosidad, que hicieron que pudiera entender el funcionamiento de Windows y las opciones que ofrecía. Esta habilidad me resultó muy útil cuando me encontraba arreglando computadores, haciéndole mantenimiento, y otras tareas que requerían saber el funcionamiento básico de Windows.&lt;/p&gt;

&lt;p&gt;Ya cuando entre a la universidad, mis conocimientos en Windows estaban afianzados. Además, no había tenido mucha (o ninguna) interacción con Linux o Mac.&lt;/p&gt;

&lt;p&gt;En la Universidad el uso de Linux era casi obligatorio. La teoría era principalmente sobre sistemas operativos tipo Unix (A.K.A Linux). Los laboratorios eran en computadores con alguna distribución de Linux. En fin, estaba prácticamente obligado a usarlo.&lt;/p&gt;

&lt;p&gt;En Linux, muchas cosas son diferentes (no necesariamente peores). Tuve que empezar a aprender casi desde cero. Afortunadamente, la curva de aprendizaje, al menos para las cosas básicas, fue relativamente baja, tomando en cuenta que ya conocía la línea de comandos de Windows. De esta manera me pude “defender” durante mis años universitarios.&lt;/p&gt;

&lt;p&gt;Ya en este entonces tenía mi computador personal portátil (laptop) con Windows y Linux al mismo tiempo. Así que cuando necesitaba usar Linux, simplemente lo usaba.&lt;/p&gt;

&lt;p&gt;El problema vino cuando trate de usarlo como mi opción principal. Trate de no usar Windows y quedarme con usando Linux únicamente (trate con varias distribuciones). Pero cuando se trató de cosas personales, no académicas, no me pude acostumbrar.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ya tenia a Windows demasiado arraigado en mis habitos computacionales.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tener que usar la consola para tener que instalar una aplicación no era de mi gusto. ¿Por qué tenía que trabajar más para lograr lo mismo que lograba en Windows con unos cuantos clics?.Tener que instalar repositorios de paquetes, actualizarlos, y ejecutar cinco comandos para poder instalar un programa era simplemente demasiado trabajo. Incluso tareas tan sencillas como cambiar la resolución de la pantalla era complicado.&lt;/p&gt;

&lt;p&gt;Que alguien diga que puedes hacer lo mismo en Linux &lt;strong&gt;simplemente&lt;/strong&gt; ejecutando 15 comandos y creando 3 archivos en 2 directorios diferentes &lt;strong&gt;NO ES SENCILLO&lt;/strong&gt;. ¡No insistan!, eso no es más sencillo.&lt;/p&gt;

&lt;p&gt;Luego me di cuenta de que muchos juegos que yo jugaba para la época, no estaban disponibles en Linux. Así que no podía desprenderme totalmente de Windows, al menos si quería seguir jugando videojuegos.&lt;/p&gt;

&lt;p&gt;Probé Ubuntu cuando empezaron a usar Unity y me sorprendió la cantidad de problemas que tuve. Por algunas incompatibilidades con el hardware, la computadora se quedaba pegada, y a veces no funcionaba la interfaz gráfica correctamente.&lt;/p&gt;

&lt;p&gt;Poco a poco me fui desilusionando de lo complicado que era Linux en comparación a Windows, en el uso diario. Tampoco ayudaba el hecho de creer en el mito que para ser un buen programador tenías que usar Linux. Al final, cuando tuve más experiencia y un poco de pensamiento crítico, me di cuenta de que esto era solo un mito.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Que algo sea bueno o malo, normalmente depende del uso que le des.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Así que yo, Gabriel, uso Windows por las siguientes razones:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tengo años de experiencia con Windows, así que se me hace más fácil trabajar con algo que ya sé cómo funciona.&lt;/li&gt;
&lt;li&gt;Funciona para todo lo que necesito hacer en mi trabajo. Soy desarrollador de software y todos los programas y aplicaciones que uso están disponibles en Windows, Linux, o Mac. Así que ya no estoy atado u obligado a usar Linux y sus complejidades.&lt;/li&gt;
&lt;li&gt;Funciona para todo lo que necesito en mi vida personal. Sean videojuegos, edición de imágenes, edición de videos, y cualquier otra cosa, Windows funciona perfectamente. Y no solo perfectamente sino que un muchos casos de una manera más sencilla.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;En general, podría decir que uso Windows porque se ajusta a mis necesidades de una manera sencilla.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hace lo que necesito que haga y punto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es gratis
&lt;/h2&gt;

&lt;p&gt;Decir que es mejor solo porque es gratis, es como decirle a un niño que los dulces gratis son mejores simplemente porque no hay que pagar por ellos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Muchas veces lo barato sale caro&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Particularmente he aprendido que no vale la pena ahorrarse un poco de dinero, si al final desperdicias más tiempo que el dinero que te ahorraste.&lt;/p&gt;

&lt;p&gt;Yo pago por la comodidad de que lo que yo haga funcione y sea fácil de hacer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Que sea gratis no lo hace necesariamente mejor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque hay más variedad en las versiones
&lt;/h2&gt;

&lt;p&gt;Honestamente, para mí, eso no es un beneficio. Yo soy flojo (perezoso) de cierta manera, y no quiero preocuparme o tener que pensar más de lo necesario para hacer algo.&lt;/p&gt;

&lt;p&gt;Si tú me presentas Linux con 50 distribuciones distintas, tengo que analizar cada una de ellas para saber cuál se ajusta mejor a lo que yo quiero hacer.&lt;/p&gt;

&lt;p&gt;Mientras que si me ofreces Windows con su versión más reciente Windows 10, o si quisiera usar alguna versión más antigua por alguna razón, como Windows 7/8, es mucho más fácil para mí poder elegir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es más rápido
&lt;/h2&gt;

&lt;p&gt;Primero que nada, esto es relativo. ¿Qué es rápido? ¿Es más rápido iniciando? ¿Es más rápido ejecutando programas? ¿Es más rápido haciendo qué?.&lt;/p&gt;

&lt;p&gt;La rapidez, en este contexto, es muy relativa y yo solo espero que los que usen este argumento tengan pruebas para decir esto. Puede que sea verdad en varios escenarios, pero hay que analizar más allá de la velocidad y pensar en la experiencia del usuario.&lt;/p&gt;

&lt;p&gt;Esto de la rapidez, entre otras cosas, también depende de nuestra propia tolerancia. Es posible que a alguien no le importe que abrir una aplicación en Windows le lleve 1 segundo más que en Linux.&lt;/p&gt;

&lt;p&gt;Este es un ejemplo sencillo, puede haber otros con mejores o peores tiempos, pero mi punto es que, al final, depende de si el usuario puede lidiar y aceptar esos tiempos, aceptando los beneficios adicionales que el sistema operativo le ofrece.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es más estable
&lt;/h2&gt;

&lt;p&gt;La estabilidad de Linux es innegable y eso se ve reflejado en su uso en el entorno de servidores. Sin embargo, para computadores de escritorio, la historia es diferente. Existe en Internet muchas historias de personas teniendo problemas con alguna distribución de Linux. Yo personalmente, tuve mi propia experiencia al respecto.&lt;/p&gt;

&lt;p&gt;Puede que a muchas personas Linux les funcione muy bien, pero no por eso pueden generalizar y decir que es mejor en este aspecto.&lt;/p&gt;

&lt;p&gt;De la misma forma, Windows le puede fallar a muchas personas. Sin embargo, a mí personalmente, pocas veces me ha fallado con algún error de esos que ponen la pantalla azul.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es más seguro
&lt;/h2&gt;

&lt;p&gt;A menos que tengas algún secreto de estado, o tengas algo muy muy importante que no quieres que te roben, la seguridad es simplemente, en una gran parte, sentido común.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Aplica el sentido comun y estaras bien.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;No descargues cosas de páginas que no confías&lt;/li&gt;
&lt;li&gt;No entres en enlaces de correos que no estabas esperando&lt;/li&gt;
&lt;li&gt;No te ganaste la lotería ni ningún premio en el cual no participaste&lt;/li&gt;
&lt;li&gt;Deja la curiosidad y sospecha de todo de lo que te envían, incluso si es una persona de confianza.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Tengo que pagar por un Antivirus? No. Tengo el antivirus gratuito de Kaspersky y con eso (y mi sentido común) me basta.&lt;/p&gt;

&lt;p&gt;Entonces, Linux es probablemente más seguro pero no me hace falta ese nivel de seguridad para el uso que le doy a mí computadora personal. Al menos no lo suficiente para sacrificar las otras cosas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es de código abierto
&lt;/h2&gt;

&lt;p&gt;Sin duda esta es una característica que lo puede hacer atractivo para cierto tipo de personas, o para cierto tipo de entidades como gobiernos o empresas que quieren hacer cambios al funcionamiento del sistema operativo.&lt;/p&gt;

&lt;p&gt;No es mi caso. Yo, con casi seguridad, no voy a contribuir al kernel de Linux, así que no me interesa tener acceso a su código.&lt;/p&gt;

&lt;p&gt;Algunos podrían decir que esto hace que sea más seguro porque hay más personas revisando el código. Por favor, ver el punto anterior acerca de la seguridad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque puede correr en hardware más antiguo
&lt;/h2&gt;

&lt;p&gt;Es cierto, Windows es algo “pesado” en comparación a la mayoría de las distribuciones de Linux. Sin embargo, el hardware que tengo es lo suficientemente potente para correr Windows, los juegos y las aplicaciones que uso sin ningún problema.&lt;/p&gt;

&lt;p&gt;Si algún día tengo un computador viejo, seguramente le instalaría Linux.&lt;/p&gt;

&lt;p&gt;De hecho, tengo un Raspberry Pi 4, que aunque no es viejo, tiene Linux instalado por ser más liviano.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Usa el mejor S.O para tus necesidades&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Linux es mejor porque es perfecto para programadores
&lt;/h2&gt;

&lt;p&gt;Totalmente falso. Esto depende enteramente de la clase de programador seas. Si eres un programador web, con casi seguridad todas las cosas que necesitas están disponible para los sistemas operativos principales: Navegadores, Servidores, Entornos de desarrollo, etc.&lt;/p&gt;

&lt;p&gt;Si deseas desarrollar para Apple, con casi seguridad estarás obligado a tener un computador Mac. Así que no hay mucho que hacer aquí.&lt;/p&gt;

&lt;p&gt;Muchas herramientas de desarrollo están disponibles para todas las plataformas populares, y podemos ser capaces de usarlas de igual manera con (más o menos) la misma eficacia.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muchos dicen que Windows es "Malo"
&lt;/h2&gt;

&lt;p&gt;Esto es el argumento del que no ha hecho un análisis exhaustivo y solo es capaz de ver las cosas desde su perspectiva.&lt;/p&gt;

&lt;p&gt;Si a estas personas le preguntas las razones, muchos no saben que decir y simplemente argumentan que Linux es mejor "porque sí".&lt;/p&gt;

&lt;p&gt;Personas que creen en los mitos y los invito a pensar si es un tema de preferencia, o si de verdad tienen las pruebas sustentando que Windows es Malo.&lt;/p&gt;

&lt;p&gt;¿Qué es "Malo" en este contexto específicamente? ¿Qué criterios usaron para evaluarlo?. ¿Es "Malo" en todas las situaciones? o ¿Es "Malo" para lo que estás haciendo solamente?.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué pasa con macOS?
&lt;/h2&gt;

&lt;p&gt;MacOS y los productos de Apple me parecen, en general, productos de excelente calidad. Probablemente podría usar macOS como mi S.O principal, si no fuera tan &lt;strong&gt;ridículamente&lt;/strong&gt; costoso.&lt;/p&gt;

&lt;p&gt;Por esta razón tampoco tengo un iPhone. Me parece que su relación costo/beneficio es terrible.&lt;/p&gt;

&lt;p&gt;¿Por qué me parece terrible? Me alegra que preguntes.&lt;/p&gt;

&lt;p&gt;Tener que pagar 500 $, 1000 $, 2000 $ adicionales que lo que pagaría por un PC, o un teléfono Android solo por ser Apple no me convence.&lt;/p&gt;

&lt;p&gt;Volviendo a mis necesidades y las cosas que yo hago en mi día a día, no vale la pena ese costo adicional para hacer exactamente lo mismo con otro computador pero pagando mucho menos. En pocas palabras, hago lo mismo con Windows/Android, pagando mucho menos.&lt;/p&gt;

&lt;p&gt;Apple vende la ilusión del &lt;em&gt;status&lt;/em&gt;. La impresión que tengo de ellos (Apple) es que simplemente crean todo a su entorno para generar más beneficios para ellos que para el usuario. Algo con lo que fundamentalmente no estoy de acuerdo.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Cuál computador/SO necesito para aprender/empezar a programar?
&lt;/h2&gt;

&lt;p&gt;Cualquiera donde puedas ejecutar los programas que necesitas. Si te sientes cómodo con Windows, te aseguro que puedes aprender a programar usando Windows.&lt;/p&gt;

&lt;p&gt;No caigan en opiniones donde dicen que para aprender a programar necesitas un computador Mac simplemente porque ahí puedes hacer todo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Que alguien diga que necesitas un computador Mac para aprender a programar es como decir que para aprender a conducir debes comprarte un Mercedes-Benz.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esto es totalmente falso, y además costoso.&lt;/p&gt;

&lt;p&gt;Tampoco necesitas saber Linux para aprender a programar. Sin duda no está de más aprender Linux, y lo recomiendo. Pero no es un requisito, y si usas un sistema operativo con el cual ya estás acostumbrado, tendrás una cosa menos de que preocuparte mientras te estabilizas.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusiones
&lt;/h1&gt;

&lt;p&gt;Por estas razones yo uso Windows y no Linux como mi sistema operativo principal.&lt;/p&gt;

&lt;p&gt;Cabe aclarar que he tenido que usar Linux en muchas ocasiones. He aprendido mucho de Linux y es un muy buen Sistema Operativo. Pero yo estoy contento con Windows y lo más importante, me funciona.&lt;/p&gt;

&lt;p&gt;¿Tienes alguna preferencia por Windows?, eso está perfectamente bien si cumple con tus necesidades. ¿Tienes preferencia por Linux? No hay ningún problema, es un buen sistema operativo. ¿Te gusta más Mac y tienes el dinero adicional? Perfecto, cómpralo y me cuentas como te va.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://esgabo.dev/blog/por-que-uso-windows-como-mi-sistema-operativo-principal"&gt;esgabo.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>principiante</category>
      <category>sistemasoperativos</category>
    </item>
    <item>
      <title>¿Por qué Svelte es el mejor Framework moderno para principiantes?</title>
      <dc:creator>Gabriel Espinel</dc:creator>
      <pubDate>Fri, 07 Aug 2020 16:08:14 +0000</pubDate>
      <link>https://dev.to/esgabo/por-que-svelte-es-el-mejor-framework-moderno-para-principiantes-2pak</link>
      <guid>https://dev.to/esgabo/por-que-svelte-es-el-mejor-framework-moderno-para-principiantes-2pak</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvfOku7n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/svelte-f-b.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvfOku7n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/svelte-f-b.webp" alt="heading-image"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Antes que nada voy a aclarar algunas cosas para evitar recibir amenazas de muerte por parte de los fanáticos de otros &lt;em&gt;frameworks&lt;/em&gt; como React, Angular o Vue.&lt;/p&gt;

&lt;p&gt;Esta publicación &lt;strong&gt;no&lt;/strong&gt; es para decir que un &lt;em&gt;framework&lt;/em&gt; es mejor que otro. Cada uno tienes sus fortalezas y debilidades. Aquí solamente estoy dando mi opinión después de haber jugado con Svelte, y ya teniendo un poco de experiencia con los otros &lt;em&gt;frameworks&lt;/em&gt;. ¡Así que cálmense!.&lt;/p&gt;

&lt;p&gt;Si sienten alguna molestia o no soportan las opiniones contrarias a sus creencias, por favor, no sigan leyendo esta publicación. Están advertidos.&lt;/p&gt;

&lt;p&gt;También tengo que aclarar que solo estoy tomando en cuenta los &lt;em&gt;frameworks&lt;/em&gt; más populares React, Angular y Vue. Entonces si existe algún otro &lt;em&gt;framework&lt;/em&gt; que no sea tan popular y consideran que es mejor que Svelte, háganmelo saber.&lt;/p&gt;

&lt;p&gt;Ya que pasamos la advertencia. Lo primero que tengo que definir es a que me refiero con "principiantes". &lt;/p&gt;

&lt;p&gt;Me refiero a quellas personas que no tienen experiencia profesional y que acaban de terminar algún curso, tutorial, libro, etc. acerca de lo básico del desarrollo web (HTML, JS, CSS) y tienen la pregunta ¿Ahora qué?.&lt;/p&gt;

&lt;p&gt;En muchos sitios aún se dice que aprendiendo lo básico ya vas a ser un desarrollador web y eso es técnicamente es cierto: si dominas esos lenguajes vas a poder hacer aplicaciones web (generalmente sencillas). Pero en el mundo profesional, cuando tengas un empleo en alguna empresa o estes buscando un empleo, con casi seguridad, esto no va a ser suficiente porque la industria del desarrollo FrontEnd usa mucho más que lo básico. Usa herramientas como &lt;em&gt;Bundlers&lt;/em&gt;, Preprocesadores, &lt;em&gt;frameworks&lt;/em&gt; modernos para JavaScript, administrador de paquetes, y una cantidad de tecnologías que van mucho más allá del simple HTML/JS/CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es Svelte?
&lt;/h2&gt;

&lt;p&gt;Para quienes no sepan que es Svelte, les explico rápidamente:&lt;/p&gt;

&lt;p&gt;Svelte es un &lt;em&gt;framework&lt;/em&gt; para JavaScript, similar a React, Angular o Vue (que son los más utilizados en la actualidad). Sin embargo, a diferencia de estos &lt;em&gt;frameworks&lt;/em&gt; populares que necesitan incluir su propia lógica con tu aplicación, en Svelte no se incluye nada (o casi nada) adicional, dejando el código final producido de tu aplicación mucho más ligero.&lt;/p&gt;

&lt;p&gt;Svelte es en el fondo un compilador que traduce tus componentes desarrollados a JavaScript puro, sin necesitar agregar lógica adicional para que el navegador pues entender tu app.&lt;/p&gt;

&lt;p&gt;Entre las ventajas más destacadas de Svelte se encuentran su desempeño (más rápido que otros &lt;em&gt;frameworks&lt;/em&gt;), su simplicidad (menos código repetitivo), su reactividad (administración de estado de los componentes de manera simple), y su poca huella en el tamaño de la app generada (una app en Svelte pesa significativamente menos que una app en otros &lt;em&gt;frameworks&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;He de aclarar que aunque es cierto todo esto, también es relativo. Por ejemplo, no podemos simplemente decir que Svelte es mejor que React solo por ser algunas milésimas de segundo más rápido. Es cierto que es más rápido, pero llegará un punto donde la diferencia no es tan significativa y no impacta la experiencia del usuario. Así que no se dejen llevar solo por esa métrica, ya que dependerá realmente de la complejidad de la aplicación.&lt;/p&gt;

&lt;p&gt;Lo mismo en el caso del tamaño de la app. Menos no siempre significa mejor. &lt;/p&gt;

&lt;p&gt;Sin duda es algo bueno tener una aplicación que pese menos, ya que se transmite más rápidamente por la red, y si tiene menos código adicional que procesar, pues el motor de JavaScript tendrá menos trabajo, lo que implica naturalmente una carga más rápida. Pero, nuevamente, es relativo, ya que los otros &lt;em&gt;frameworks&lt;/em&gt; también están optimizados.&lt;/p&gt;

&lt;p&gt;En cuanto a la simplicidad por necesitar menos código, sí me parece muy importante para los principiantes o incluso expertos que quieran adoptar Svelte. Creo que todo podemos estar de acuerdo que entre menos código tengamos que escribir, es más fácil de aprender una tecnología.&lt;/p&gt;

&lt;p&gt;Una acotación que hay que hacer es que he leído publicaciones o visto videos donde expresan que Svelte es mejor simplemente por necesitar menos líneas de código para generar componentes. Esto es simplemente incorrecto. Medir si algo es mejor por el número de líneas de código no está bien porque empieza a generar una práctica de tratar de hacer todo los más compacto posible para decir que es "mejor".&lt;/p&gt;

&lt;p&gt;No por meter todo en una sola linea va a ser mejor. Esto es muy importante que lo tengamos claro. ¿En dónde está la diferencia? Si tenemos el mismo componente escrito en dos lenguajes diferentes (o &lt;em&gt;frameworks&lt;/em&gt; diferentes) y ambos han aplicado las buenas practicas (e.g. es un código limpio y es fácil de entender), entonces la suposición es que menos líneas de código es menos código que mantener y por tanto menos probabilidad de errores. Aunque esto no es necesariamente cierto.&lt;/p&gt;

&lt;p&gt;Puede ser que tengamos menos líneas de código porque estamos usando alguna librería o algún componente que se encargue de esa necesidad particular. En este caso, no estamos removiendo la posibilidad de errores sino que lo estamos moviendo de lugar, desde nuestro código hacia algún componente externo.&lt;/p&gt;

&lt;p&gt;Particularmente, no estoy totalmente de acuerdo con estas suposiciones, las menciono porque es de las cosas que van a encontrar en Internet. Menos líneas de código no es necesariamente mejor. Pero menos código repetitivo...eso sí me parece un beneficio, y hay que tener clara la diferencia.&lt;/p&gt;

&lt;p&gt;Les recomiendo que vean el video &lt;a href="https://www.youtube.com/watch?v=AdNJ3fydeao"&gt;Rethinking Reactivity&lt;/a&gt; de Rich Harris, creador de Svelte. Aquí explica más a fondo las ventajas de Svelte y sus valores fundamentales con ejemplos y comparaciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué es mejor para principiantes?
&lt;/h2&gt;

&lt;p&gt;La razón principal es que desarrollar componentes con Svelte se siente natural e intuitivo. Se siente casi como si estuviéramos trabajando solamente con HTML, JS, y CSS.&lt;/p&gt;

&lt;p&gt;Por supuesto que hay que aprender cosas adicionales, pero estos puntos adicionales se parecen mucho a lo que los principiantes ya conocen. Para alguien que está empezando, entre menos cosas adicionales deba aprender para usar algo nuevo, le va a resultar más fácil adoptarlo.&lt;/p&gt;

&lt;p&gt;Consideremos este componente en React donde se tienen dos campos de textos para sumar dos números y mostrarlos por pantalla.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&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;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;export&lt;/span&gt; &lt;span class="k"&gt;default&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setA&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&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;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setB&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;handleChangeA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;setA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&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="nx"&gt;handleChangeB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;setB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&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;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&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;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChangeA&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;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChangeB&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;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; + &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; = &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&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;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;div&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;Mi primera impresión como un principiante, serían las siguientes preguntas: ¿Para qué debemos usar ese setState? ¿Por qué tengo que declarar un arreglo con dos elementos? ¿No sería suficiente tener una variable y ya? ¿Por qué tengo que retornar el HTML desde este JavaScript?. Por supuesto que hay una explicación para todo esto pero luce diferente a lo básico que han aprendido. Claro que pueden aprender JSX, Hooks, CSS-In-JS, Redux, etc. Pero es algo que va a llevar su tiempo.&lt;/p&gt;

&lt;p&gt;Veamos un componente equivalente usando Angular:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&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="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
    &amp;lt;input type="number" [(ngModel)]="a"&amp;gt;
    &amp;lt;input type="number" [(ngModel)]="b"&amp;gt;
    &amp;lt;p&amp;gt;{{a}} + {{b}} = {{a + b}}&amp;lt;/p&amp;gt;
  `&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;a&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;b&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&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;Se ve un componente más corto, de menor tamaño. ¿Qué es ese &lt;em&gt;@Component&lt;/em&gt;?, ¿Por qué el HTML esta dentro de esa propiedad de ese objeto JavaScript? ¿Qué es ese &lt;em&gt;ngModel&lt;/em&gt;? ¿Qué es TypeScript?. Aún se ve diferente a lo básico, y por tanto, deberán tomarse su tiempo para acostumbrarse a aprender estas diferencias.&lt;/p&gt;

&lt;p&gt;Para ser justos, en Angular podríamos definir el HTML en su propio archivo, pero estaríamos siguiendo un enfoque diferente (y no es que esté mal) al tener separados los diferentes aspectos del mismo componente en archivos separados.&lt;/p&gt;

&lt;p&gt;Ahora veamos la contraparte en Vue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;v-model.number=&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;v-model.number=&lt;/span&gt;&lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}}&lt;/span&gt; + &lt;span class="si"&gt;{{&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}}&lt;/span&gt; = &lt;span class="si"&gt;{{&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&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;{&lt;/span&gt;
        &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
      &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Lo vemos, un poco más limpio. Se parece más a lo que estamos acostumbrados. Etiquetas en HTML, incluyendo el uso de la etiqueta Script para el código JavaScript. ¿Por qué tenemos que poner ese "export default"? ¿Por qué las variables deben estar dentro de esa propiedad "data" que es una función que retorna un objeto con las variables que quiero tener?. Creo que se puede mejorar.&lt;/p&gt;

&lt;p&gt;Finalmente, veamos como sería este componente en Svelte.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;bind:value=&lt;/span&gt;&lt;span class="s"&gt;{a}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; &lt;span class="na"&gt;bind:value=&lt;/span&gt;&lt;span class="s"&gt;{b}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;{a} + {b} = {a + b}&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Es similar al componente de Vue. Sin embargo, el área del script se ve más limpia. Aún habría que aprender el significado de "bind:value" al igual que los otros, pero se ve mucho más cercano a algo básico.&lt;/p&gt;

&lt;p&gt;Con estos ejemplos nos damos cuenta de que para alguien sin mucho conocimiento ni experiencia en los &lt;em&gt;frameworks&lt;/em&gt; modernos, Svelte puede presentar una curva de aprendizaje menor a los otros porque ofrece un modelo similar al que ya conocen: HTML/JS/CSS.&lt;/p&gt;

&lt;p&gt;Sin duda que este fue un ejemplo básico, pero no tengo duda de que aun en escenarios más complejos, el resultado es similar a lo que acabamos de ver con estos ejemplos.&lt;/p&gt;

&lt;p&gt;Finalmente, con esto no quiero decir que no deben aprender los otros frameworks, o que son peores. Solo estoy diciendo que Svelte es más sencillo de aprender y se siente más natural para aquellos que se están adentrando a este mundo y tienen conocimientos limitados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;Comparamos los &lt;em&gt;frameworks&lt;/em&gt; más populares con Svelte, considerando únicamente la simplicidad de adopción al mirar la manera de construir el mismo componente en cada uno de ellos.&lt;/p&gt;

&lt;p&gt;Un principiante deberá aprender lo que sea más sencillo, a fin de entender los conceptos lo más rápido y de la mejor manera posible. Una vez hecho esto, le será más fácil continuar y saltar hacia otro &lt;em&gt;framework&lt;/em&gt;, simplemente buscando la correspondencia de lo aprendido en Svelte en el nuevo &lt;em&gt;framework&lt;/em&gt; que desea aprender.&lt;/p&gt;

&lt;p&gt;Svelte, sin duda, dará más de que hablar.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://esgabo.dev/blog/por-que-svelte-es-el-mejor-framework-moderno-para-principiantes"&gt;esgabo.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>svelte</category>
      <category>frontend</category>
      <category>principiante</category>
    </item>
    <item>
      <title>La Abstracción en la programación</title>
      <dc:creator>Gabriel Espinel</dc:creator>
      <pubDate>Wed, 24 Jun 2020 20:08:57 +0000</pubDate>
      <link>https://dev.to/esgabo/la-abstraccion-en-la-programacion-b0h</link>
      <guid>https://dev.to/esgabo/la-abstraccion-en-la-programacion-b0h</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4al_O32V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/abstracto.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4al_O32V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/abstracto.webp" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Según la &lt;a href="https://www.rae.es/"&gt;RAE&lt;/a&gt;, la abstracción, o más específicamente, el verbo &lt;a href="https://dle.rae.es/abstraer"&gt;&lt;em&gt;abstraer&lt;/em&gt;&lt;/a&gt; significa:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Separar por medio de una operación intelectual un rasgo o una cualidad de algo para analizarlos aisladamente o considerarlos en su pura esencia o noción.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;De esto podemos decir que &lt;em&gt;abstraer&lt;/em&gt; es, básicamente, ignorar o eliminar detalles de algo para enfocarnos en los puntos más relevantes de ese algo.&lt;/p&gt;

&lt;h2&gt;
  
  
  La abstracción como base para la reutilización
&lt;/h2&gt;

&lt;p&gt;Los humanos dependemos tanto de la abstracción que, virtualmente, nuestra vida cotidiana se basa en ella. Damos por hechas muchas cosas a nuestro alrededor, abstrayéndonos de su funcionamiento interno; simplemente conociendo qué hace, qué necesita para hacerlo pero &lt;strong&gt;no&lt;/strong&gt; cómo lo hace.&lt;/p&gt;

&lt;p&gt;Piensa un poco y analiza con cuantos objetos interactúas diariamente de los cuales no tienes idea de cómo funcionan y la verdad, no tienes que saberlo. La mayoría de nuestras investigaciones científicas se basan en conclusiones de trabajos de otras personas, donde se da por hecho que algo funciona como dice que funciona, y trabajan sobre esas conclusiones sin tener que empezar todo desde cero. Esta es una buena manera de avanzar reusando el trabajo existente, abstrayéndonos de los detalles internos lo que nos permite funcionar en un nivel más alto.&lt;/p&gt;

&lt;p&gt;¿Te has preguntado como funciona un televisor? Pues si lo pensamos un poco, le damos energía eléctrica, alguna señal y esperamos que nos muestre imágenes. Ahí estamos abstrayendo muchos detalles. ¿Sabes cómo funciona la pantalla del televisor? ¿Sabes cómo se representan los colores en la pantalla del televisor?.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No necesitas saber como funciona algo para usarlo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  El concepto de &lt;em&gt;Caja Negra&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Este término se usa como analogía para hacer referencia a componentes o sistemas de los cuales no se conocen los detalles interno de su funcionamiento.&lt;/p&gt;

&lt;p&gt;Básicamente, llamamos &lt;em&gt;caja negra&lt;/em&gt; a aquellas cosas que le hemos aplicado la abstracción, es decir, no queremos saber sus detalles internos, solamente como interactuar con ese algo. Para eso, debemos saber qué necesita para funcionar y cuál es el resultado que genera (entrada y salida).&lt;/p&gt;

&lt;p&gt;Así como en los ejemplos anteriores, vemos muchas cosas como “cajas negras”: un televisor, un auto, una máquina de helados, una calculadora, un restaurante, el cuerpo humano, y muchísimas cosas más.&lt;/p&gt;

&lt;p&gt;Este concepto es esencial para los programadores porque, basados en él, podemos reutilizar programas y códigos de otras personas simplemente conociendo su entrada y los resultados que produce.&lt;/p&gt;

&lt;h2&gt;
  
  
  La abstracción como técnica para analizar problemas
&lt;/h2&gt;

&lt;p&gt;Imaginemos a un pintor de paredes que debe cotizar cuanto cobrar por pintar una casa. Este seguramente abstrae los detalles de una casa cuando está analizando lo que debe hacer. Al pintor no le interesa el estado del suelo, ni el estado del techo, o de las puertas. Al pintor solo le interesa el estado de las paredes. En su mente, el objeto que está analizando deja de ser una casa completa y se convierte en puras paredes y se enfoca en analizar eso solamente.&lt;/p&gt;

&lt;p&gt;Lo mismo ocurre con el plomero. A él no le interesa nada más que las tuberías, el material del cual están hechas, su ubicación, etc. Entonces deja de pensar en las cosas irrelevantes para su problema inmediato y se enfoca únicamente en ese problema específico.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VXK_OeL3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/abstracciones_casas.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VXK_OeL3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/abstracciones_casas.webp" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En estos casos, ellos saben bien en qué deben enfocarse. Ellos llevan años en su negocio y saben bien qué ignorar y qué no. Su experiencia juega un papel importante.&lt;/p&gt;

&lt;p&gt;En la programación, muchas veces no es sencillo saber que es relevante y que no lo es.&lt;/p&gt;

&lt;h3&gt;
  
  
  La programación es multi-disciplinaria
&lt;/h3&gt;

&lt;p&gt;Como ya mencione en &lt;a href="https://esgabo.dev/blog/que-es-la-programacion-y-que-hace-un-programador"&gt;otra publicación&lt;/a&gt;. La programación es, básicamente, resolver problemas. Los programadores aprenden a (o aspiran) resolver problemas de la manera más eficiente. Sin embargo, no pueden pretender saber todo acerca de todas las carreras que existen y todas las áreas de conocimiento.&lt;/p&gt;

&lt;p&gt;Para llevar con éxito un proyecto complejo, que cumpla con la necesidad del cliente y su negocio, es necesario aprender un poco de ese negocio; de esa disciplina. Si trabajas en un sistema de contabilidad, pues el programador debe entender un poco de contabilidad. Si trabajas en un sistema de ventas, entonces el programar debe entender un poco de logística e inventario.&lt;/p&gt;

&lt;p&gt;Nuestra suposición es que, en principio, no vamos a saber más que nuestro cliente de su negocio. Después de todo, es posible que ellos hayan estudiado una carrera para eso, o tenga muchos años de experiencia en el área. Incluso si tú, como programador, también has tenido experiencia en esa área, puede que ese cliente maneje procesos particular de los cuales tú no conoces nada. Así que vamos a trabajar sobre esa suposición: &lt;em&gt;Nuestro cliente sabe más de su negocio que nosotros.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Para poder resolver un problema, primero debemos entenderlo. Si no lo entendemos, no vamos a hallar la solución. Si al área de conocimiento resulta totalmente ajena a nosotros (i.e. podemos no saber absolutamente nada del tema), aplicar la abstracción nos ayudara a entender mejor el problema, al enfocarnos únicamente en los detalles que son relevantes para ese problema o partes de ese problema.&lt;/p&gt;

&lt;p&gt;Un problema complejo puede ser dividido en varios problemas más simples. Estos, a su vez, pueden ser divididos en otros más pequeños, hasta que tengamos un conjunto de problemas relativamente triviales o cuya solución sea fácil de hallar.&lt;/p&gt;

&lt;p&gt;¿Quieres una tienda online? Bien, ¿Cómo está compuesta la tienda? ¿Qué productos tienes? ¿Qué categorías de productos? ¿Qué descuentos ofreces?. Todas estas preguntas rompen un problema más grande como el de una tienda online, en problemas más pequeños y manejables. Estos problemas más pequeños los podría romper aún más, abstrayéndome de los otros problemas, momentáneamente, para enfocarme en una sola cosa a la vez.&lt;/p&gt;

&lt;h2&gt;
  
  
  La abstracción como herramienta para el modelado
&lt;/h2&gt;

&lt;p&gt;El modelado en la programación es esencial para ayudar a resolver problemas, representando partes o componentes de ese problema. Lo que se trata de modelar o representar en el programa es el funcionamiento de estas partes. Siguiendo el ejemplo de la tienda online, un carrito de compras en un sitio web es una representación de un carrito de compras real, es decir, cumple una funciona similar al llevar los artículos que deseamos comprar. Sin embargo, no es un carro de compras real; no es físico; y realmente no estás llevando un carro de compras en tus manos. Es simplemente una representación o modelo.&lt;/p&gt;

&lt;p&gt;En este orden de ideas, podríamos decir que un modelo es la representación de un objeto real o un concepto abstracto (como una cuenta contable) del mundo real, perteneciente al dominio o área de conocimiento del cual queremos automatizar los procesos y que le hemos aplicado el proceso de abstracción, es decir, al modelar algo realmente estamos eliminando detalles que no son relevantes.&lt;/p&gt;

&lt;p&gt;Una auto de juguete es básicamente un modelo. Se ignoraron detalles del auto real para hacer ese juguete. Detalles como, por ejemplo, un motor funcional, o tanque de combustible, entre muchos otros. Entonces no podemos decir que ese juguete es auto real, y simplemente es una representación “abstracta” del auto.&lt;/p&gt;

&lt;p&gt;¿Abstracta? “Gabo, no es abstracta porque el juguete tiene &lt;em&gt;forma&lt;/em&gt; de el auto real”. Pues hay diferentes niveles de abstracción. Podemos decir que en el momento en que ignoramos detalles de un objeto, ya estamos creando una representación abstracta (sin algunos detalles) de ese objeto. El nivel de abstracción dependerá que tantos detalles removamos en nuestro modelo.&lt;/p&gt;

&lt;p&gt;Consideremos un traje y tratemos de aplicar distintos niveles de abstracción. Empezando, tenemos dos extremos: un extremo con el nivel mínimo de abstracción (ninguna abstracción) donde encontramos al objeto real con absolutamente todos los detalles. Mientras, en el otro extremo tenemos el nivel máximo de abstracción donde removemos todos los detalles y nos queda absolutamente nada, solo un vacío. (Si yo ofrezco un &lt;a href="https://es.wikipedia.org/wiki/El_traje_nuevo_del_emperador"&gt;traje transparente y lo vendo&lt;/a&gt;, pues efectivamente, es un traje para quien lo quiera ver de esa forma).&lt;/p&gt;

&lt;p&gt;Dentro de estos dos extremos hay muchísimos niveles. Yo podría ignorar el color, ignorar el material, ignorar la forma, entre muchas otros detalles. Mi nivel de abstracción puede ser totalmente diferente al de alguien más. De hecho, es extremadamente común que dos personas hallen soluciones diferentes al mismo problemas porque, entre otras cosas, aplicaron un nivel diferente de abstracción y es aquí donde la buena comunicación juega un papel importante para que todos se puedan entender.&lt;/p&gt;

&lt;p&gt;¿Qué sucede si omito demasiados detalles al resolver un problema? Si esto sucede, tu solución puede tener huecos y no funcionar para situaciones específicas.&lt;/p&gt;

&lt;p&gt;¿Qué sucede si omito pocos detalles? Entonces tu solución puede resultar mucho más compleja de lo que debería ser, aumentando costos en tiempo, dinero, mantenimiento, etc.&lt;/p&gt;

&lt;p&gt;Encontrar el nivel de abstracción adecuado no es trivial. En mi opinión, es algo que viene teniendo una buena preparación y conocimientos sólidos como bases, y la experiencia de trabajar en diferentes proyectos con diferentes personas, evaluando sus puntos de vista y objetivamente evaluando cada uno de los enfoques.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;La abstracción más que una palabra elegante de programación, es un concepto que aplicamos en nuestra vida diaria.&lt;/p&gt;

&lt;p&gt;Especialmente útil y necesaria en la programación aunque un poco complejo de entender al principio y aplicarlo adecuadamente.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://esgabo.dev/blog/la-abstraccion-en-la-programacion"&gt;esgabo.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programacion</category>
      <category>fundamentos</category>
      <category>principiante</category>
    </item>
    <item>
      <title>¿Qué es la programación? y ¿Qué hace un programador?</title>
      <dc:creator>Gabriel Espinel</dc:creator>
      <pubDate>Fri, 19 Jun 2020 22:44:00 +0000</pubDate>
      <link>https://dev.to/esgabo/que-es-la-programacion-y-que-hace-un-programador-482n</link>
      <guid>https://dev.to/esgabo/que-es-la-programacion-y-que-hace-un-programador-482n</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---sx8gOy5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/programadores.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---sx8gOy5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/programadores.webp" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de definir siquiera que es la programación, primero debemos subir un poco el nivel de conocimiento y entender un poco como funcionan las computadoras desde el punto de vista de la programación.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué son las computadoras?
&lt;/h2&gt;

&lt;p&gt;La computadora no es más que un conjunto de &lt;em&gt;Software&lt;/em&gt; y &lt;em&gt;Hardware&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardware
&lt;/h3&gt;

&lt;p&gt;El hardware es lo que puedes tocar del computador. Son las partes físicas: la pantalla, el teclado, el ratón; todos los componentes internos como la tarjeta madre, tarjetas de memoria RAM, disco duro, procesador (Intel 13, 15, i7), entre otros.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software
&lt;/h3&gt;

&lt;p&gt;El software es lo impalpable del computador. Podríamos llamarle la mente o el alma del computador.&lt;/p&gt;

&lt;p&gt;Como ejemplos de software, tenemos el sistema operativo Windows, Android, iOS (iPhones y Macs). También las aplicaciones que usan diariamente como Word, Excel, Instagram, Facebook, y un sin fin más de aplicaciones.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si puedes golpearlo, entonces es hardware. Si solo puedes insultarlo, entonces es software.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ya habiendo diferenciado el software y el hardware. Vamos a definir, por encima, qué es el software. Ya sabemos que es lo impalpable, pero ¿de qué está hecho? o ¿Cómo se hace el software?.&lt;/p&gt;

&lt;p&gt;Pues el software no es más que un &lt;strong&gt;conjunto de instrucciones para hacer algo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por ejemplo, El navegador web que estás usando para leer esta publicación (Internet Explorer, Chrome, Firefox, Safari, etc) es, en el fondo, instrucciones que le dicen al hardware que debe mostrar por pantalla; Mostrarte el texto, algunas palabras en negrita, con cierto tamaño, etc.&lt;/p&gt;

&lt;p&gt;Si pensamos en plato de comida, entonces el software sería análogo a la receta de esa comida. Esta receta indican los ingredientes y el modo de preparación para que el cocinero "ejecute" las instrucciones y obtener el resultado desea, en este caso, la comida.&lt;/p&gt;

&lt;p&gt;El cocinero, quien ejecuta las instrucciones, sería el Hardware. Absolutamente todas las instrucciones van hacia el hardware y te generan un resultado.&lt;/p&gt;

&lt;p&gt;Para que el hardware pueda ejecutar las instrucciones, lo primero que de ocurrir, es que el software y el hardware se puedan entender. De la misma forma que un cocinero que solo hable español, debe tener su receta en español, o de otra manera no podrá entender las instrucciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué idioma entiende el Hardware?
&lt;/h3&gt;

&lt;p&gt;Pues el único idioma que entiende son los &lt;strong&gt;números binarios&lt;/strong&gt;. Así que las instrucciones deben estar expresadas en este &lt;em&gt;idioma&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Les voy a explicar muy brevemente qué significa esto, pero no se asusten que a este nivel no tienen que aprenderse esto y ciertamente (aunque depende del ramo de tecnología que elijan) un programador no lidia con números binarios normalmente.&lt;/p&gt;

&lt;p&gt;Los números binarios son números en base 2, así que solo tienen 2 posibles valores: el 0 y el 1.&lt;/p&gt;

&lt;p&gt;Los humanos estamos acostumbrados a contar que son números en base 10, es decir, cada dígito tiene 10 símbolos diferentes, del 0 al 9. Por lo tanto, si el hardware solo entiende de números binarios, quiere decir que se le debe "hablar" en ceros y unos.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo se le dan instrucciones al Hardware en Binario?
&lt;/h3&gt;

&lt;p&gt;Excelente pregunta. Hasta donde yo sé, los humanos no hablan en números y mucho menos números binarios.&lt;/p&gt;

&lt;p&gt;La (afortunada) verdad es que desde hace muchos años las instrucciones no se hacen usando números binarios directamente. Se inventaron traductores que traducen un idioma más cercano al que hablamos los humanos a números binarios para que el hardware pueda entenderlas.&lt;/p&gt;

&lt;p&gt;Sin embargo, no vas a usar el español o el inglés para crear las instrucciones sino otros idiomas basados en la lógica que se conocen como &lt;strong&gt;Lenguajes de programación&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Existen muchos lenguajes con diferencias y semejanzas entre ellos. Hay lenguajes más famosos que otros, pero al final, todos cumplen el mismo propósito: ayudar a los humanos a expresar instrucciones más fácilmente, que luego puedan ser traducidas a ceros y unos.&lt;/p&gt;

&lt;p&gt;Esto es una explicación muy muy por encima del proceso, pero suficiente para que aprendan que hoy en día no se programa con ceros y unos (¡qué alivio!).&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es la programación?
&lt;/h3&gt;

&lt;p&gt;Ya habiendo visto un poco de como funcionan las computadoras, vamos a responder la pregunta por la cual llegaron hasta aquí.&lt;/p&gt;

&lt;p&gt;La programación es el proceso de &lt;em&gt;diseñar&lt;/em&gt; y &lt;em&gt;construir&lt;/em&gt; el software. Este software o programa resuelve una necesidad y problema particular.&lt;/p&gt;

&lt;p&gt;Todo programa tiene un propósito y normalmente es en beneficio de los humanos; Realizar algún cálculo, distraernos, divertirnos, etc.&lt;/p&gt;

&lt;p&gt;Como ya les mencioné, el software no son más que instrucciones. Así que podríamos decir que la programación es el proceso de crear instrucciones para resolver un problema o necesidad.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es un programador?
&lt;/h3&gt;

&lt;p&gt;Pues, obviamente, alguien que programa o ejerce la programación.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué hace un programador?
&lt;/h3&gt;

&lt;p&gt;Los programadores tratan, con sus mejores habilidades para resolver problemas, crear las instrucciones para resolver el problema y comunicárselas al computador usando algún lenguaje de programación que eventualmente son traducidas a ceros y unos de manera automática.&lt;/p&gt;

&lt;p&gt;Un punto importante aquí es que hay que tener claro: Resolver problemas y saber lenguajes de programación son cosas diferentes y no deben ser confundidas.&lt;/p&gt;

&lt;p&gt;Una persona puede saber todos los lenguajes que haya, y aun así no poder resolver problemas. Los lenguajes son los &lt;strong&gt;instrumentos&lt;/strong&gt; para &lt;strong&gt;comunicarse&lt;/strong&gt; con el &lt;strong&gt;computador&lt;/strong&gt;, pero el mensaje que le quieras dar al computador no tiene que ver con un lenguaje en específico.&lt;/p&gt;

&lt;p&gt;Esta habilidad para resolver problemas es totalmente aparte de la de los lenguajes y debe ser desarrollada y practicada constantemente.&lt;/p&gt;

&lt;p&gt;Entonces un programador tiene que saber resolver problemas &lt;strong&gt;y&lt;/strong&gt; saber lenguajes de programación.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;Ya para finalizar y como consejo: para poder entrar en el mundo de la programación, es necesario saber hasta con cierto grado de detalle cómo funcionan las tecnologías que permiten programar.&lt;/p&gt;

&lt;p&gt;Si quedaron con la curiosidad de algún punto, es bueno que lo investiguen porque mucho de esta carrera es ser autodidacta y la habilidad para investigar es &lt;strong&gt;super importante&lt;/strong&gt;. Los mejores programadores aún buscan en Google cualquier problema y cualquier ayuda. Así que anímense y no sean pasivos.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Esta publicación está basada en el &lt;a href="https://www.youtube.com/embed/eH3ZXPcFr38"&gt;video&lt;/a&gt; de mi canal en YouTube&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/eH3ZXPcFr38"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://esgabo.dev/blog/que-es-la-programacion-y-que-hace-un-programador"&gt;esgabo.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programacion</category>
      <category>principiante</category>
    </item>
    <item>
      <title>9 Razones para aprender a programar</title>
      <dc:creator>Gabriel Espinel</dc:creator>
      <pubDate>Fri, 19 Jun 2020 04:00:00 +0000</pubDate>
      <link>https://dev.to/esgabo/9-razones-para-aprender-a-programar-3nk1</link>
      <guid>https://dev.to/esgabo/9-razones-para-aprender-a-programar-3nk1</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Pi_OJ0Bp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/aprender-a-programar.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pi_OJ0Bp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://esgabo.dev/media/aprender-a-programar.webp" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de empezar la cuenta, quiero hacer la aclaratoria acerca de estas razones. Estas son razones &lt;strong&gt;objetivas&lt;/strong&gt; que no dependen de mi opinión, sino de hechos.&lt;/p&gt;

&lt;p&gt;¿Por qué les hago esta aclaratoria? porque he visto videos donde empiezan a escupir motivos basadas en sus opiniones personales y/o anecdóticas. Aunque respeto mucho su opinión en varios de esos motivos, no los comparto y ciertamente no los incluyo en mi lista, porque siento que le estaría mintiendo a aquellos que de verdad están buscando buenas razones para aprender.&lt;/p&gt;

&lt;p&gt;Estos personajes dicen cosas como:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;¡Programar te da superpoderes!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ehhh...nop. No vas a poder hacerte invisible ni volar por los aires.&lt;/p&gt;

&lt;p&gt;O también:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;¡Es divertido! ¡Es gratificante!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A ver, para el que no sepa: La diversión es &lt;strong&gt;subjetiva&lt;/strong&gt;. Lo que es divertido para mí, puede que no lo sea para otra persona.&lt;/p&gt;

&lt;p&gt;Lo mismo ocurre con el sentimiento de gratificación. Este es un sentimiento muy personal, y no voy a ser yo quien les mienta diciendo qué van a sentir (o no) si se hacen programadores.&lt;/p&gt;

&lt;p&gt;Así que, &lt;strong&gt;podría&lt;/strong&gt; ser divertido y gratificante (como es mi caso o de muchos otros) pero también conozco gente que no hacen de la programación el centro de su vida. Es simplemente es su trabajo y su sustento...y eso está bien.&lt;/p&gt;

&lt;p&gt;Ahora sí, a lo que venimos.&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Los Altos Salarios
&lt;/h2&gt;

&lt;p&gt;La carrera del desarrollo de software y la programación es una de las mejores remuneradas globalmente. Los salarios en este ramo son significativamente más altos que otros.&lt;/p&gt;

&lt;p&gt;En América Latina, el rango de sueldo promedio es de 1000$ a 3000$ (a la fecha de esta publicación). Por supuesto que es un estimado basado en encuestas encontradas en las redes, y en mi red de contactos en muchos de los países de Latinoamérica.&lt;/p&gt;

&lt;p&gt;El valor final puede ser menor o puede ser &lt;em&gt;mucho mayor&lt;/em&gt;. Depende de muchas cosas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;El nivel de preparación: aquí tus habilidades y experiencia juega un papel importante.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;El país: porque no en todos los países los programadores se cotizan igual. Es decir, hay países donde el sueldo es superior al de otros países (pero el costo de vida puede ser mayor en esos países).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La ciudad: porque hay ciudades dentro del mismo país donde los sueldo son mayores que en otras.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La compañía: Hay compañías que ofrecen mejores salarios y mejores prestaciones que otras.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;El proyecto asignado: dentro de una misma compañía pueden haber diferentes proyectos que tiene mayor impacto para la empresa, pudiendo pagar mejor a sus desarrolladores. Por ejemplo, proyectos para compañías extranjeras.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un dato curioso es que aquellos que saben inglés, pueden ganar hasta un 30% más en el mercado local, ya que te abre las puertas a proyectos en el extranjero que normalmente pagan mucho más. ¡Interesante!.&lt;/p&gt;

&lt;p&gt;Entonces, si eres programador &lt;strong&gt;y&lt;/strong&gt; sabes inglés &lt;strong&gt;y&lt;/strong&gt; trabajas para alguna compañía transnacional (o algún proyecto en un país extranjero como Estados Unidos, Canadá, o algunos países de Europa), el salario podría estar, fácilmente, muy por encima de ese rango, yendo de los 3000$ a los 10000$ mensual. Esto no quiere decir que todos van a ganar esos montos, pero es enteramente posible (Esto es un hecho).&lt;/p&gt;

&lt;p&gt;A comentario personal, me parece que el salario es una razón sumamente importante, ya que si bien el dinero no compra la felicidad…es mejor llorar cuando todas tus cuentas están pagas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ser programador para mejorar tu calidad de vida es algo que esta bien.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2) Alta demanda
&lt;/h2&gt;

&lt;p&gt;Es de las carreras con mayor crecimiento en los últimos años y tiene gran proyección a futuro.&lt;/p&gt;

&lt;p&gt;Actualmente, tiene una demanda ridículamente alta pues muchas compañías empiezan a dar el salto al mundo digital donde necesitan un página web o algún sistema para automatizar algún proceso interno. Incluso algunas compañías o personas que tienen la "gran idea de negocio" pero necesitan a alguien que se las desarrolle porque muy probablemente tiene que ver con tecnología y desarrollo tecnológico.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hay y habrá mucha automatización y alguien tiene que hacerlo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Por otro lado, durante esta pandemia del COVID-19, se han visto muchos despidos y menos contrataciones, pero la industria de la tecnología es de las menos afectadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Alta movilidad laboral
&lt;/h2&gt;

&lt;p&gt;Esta razón es consecuencia directa de la anterior. Debido a la alta demanda, siempre se encuentran ofertas de empleos.&lt;/p&gt;

&lt;p&gt;Es posible que personas que no estén conformes con sus empleos actuales, pueden buscar en el mercado, y las probabilidades de que consigan otro empleo son relativamente altas.&lt;/p&gt;

&lt;p&gt;Personalmente conozco personas que se cambian de trabajo casi que anualmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  4) No requiere estudios universitarios
&lt;/h2&gt;

&lt;p&gt;Un punto que me parece fascinante. No se necesita una carrera larga o universitarias.&lt;/p&gt;

&lt;p&gt;Habiendo dicho eso, programar requiere de un esfuerzo, como cualquier otro oficio, y solo porque no soliciten un título, quiere decir que no haya que esforzarse. No les voy a mentir como en algunos videos de YouTube donde te dicen "aprender a programar en 20 mins". En 20 minutos no se aprende ni a barrer una casa.&lt;/p&gt;

&lt;p&gt;Por otro lado, muchas de las grandes compañías como Google y Apple dejaron de exigir títulos universitarios desde hace un par de años y poco a poco las empresas latinoamericanas se van sumando a esta tendencia.&lt;/p&gt;

&lt;h2&gt;
  
  
  5) Variedad en las especialidades
&lt;/h2&gt;

&lt;p&gt;En la programación existen diferentes ramas a las cuales te puedes dedicar y especializar. Algunos ejemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;El Desarrollo Web: este es muy demandado y es relativamente "fácil" de aprender si se compara con otras ramas. Además, tiene sub ramas como el Front-End y el Back-End. Hay personas que solo les gusta desarrollar para Front-End y otras solo les gusta el Back-End. También hay personas que les gusta ambos y aprenden de ambas ramas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desarrollo de aplicaciones móviles donde pueden desarrollar para iPhones, Androids, Windows Phone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desarrollador de videojuegos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inteligencia Artificial.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Y muchos más.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Así que hay ramas y especialidades para todos los gustos.&lt;/p&gt;

&lt;h2&gt;
  
  
  6) Explota tu Creatividad
&lt;/h2&gt;

&lt;p&gt;La programación es, a final de cuentas, aprender a resolver problemas.&lt;/p&gt;

&lt;p&gt;Este es un oficio que te obliga a pensar en soluciones creativas y a ser ingenioso. Este es un pensamiento que puedes exportar a otras áreas de la vida: el pensamiento lógico y abstracto.&lt;/p&gt;

&lt;p&gt;Saber de programación permite mejorar la capacidad para estructurar información, analizar un problema e implementar soluciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  7) Facilita la innovación y el emprendimiento
&lt;/h2&gt;

&lt;p&gt;Saber programar es una potente herramienta para crear cosas nuevas, innovar y conceptualizar ideas.&lt;/p&gt;

&lt;p&gt;Puedes tener una idea original (o repetida), y puedes crearla tu mismo sin necesidad de otras personas, si tienes los conocimientos (luego la vendes por mil millones de dólares, los pones en algunos fondos financieros y vives de la renta).&lt;/p&gt;

&lt;p&gt;Esto no es fácil, hay que ser sincero, pero es enteramente posible. Solo requiere mucha determinación, empeño y tiempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  8) Es Universal
&lt;/h2&gt;

&lt;p&gt;Programar se hace de la misma forma en Latinoamérica, Europa, Norte América, y Asia.&lt;/p&gt;

&lt;p&gt;Saber programar y tener un trabajo como programador te abre las puertas para poder trabajar en cualquier parte del mundo donde necesiten programadores.&lt;/p&gt;

&lt;p&gt;Ya solo tendrías que preocuparte por la comunicación con otras personas.&lt;/p&gt;

&lt;h2&gt;
  
  
  9) Puedes Trabajar de manera remota
&lt;/h2&gt;

&lt;p&gt;¿No te quieres ir del país donde te encuentras? ¡No se digas más!.&lt;/p&gt;

&lt;p&gt;Lo más importante para programar es una computadora e Internet. Con eso puedes trabajar 100% remoto, desde la comodidad de tu hogar, para proyectos fuera del país donde vives (Esto es un hecho).&lt;/p&gt;

&lt;p&gt;Adiós a los viajes a la oficina, al transporte público y al tráfico. También es especialmente útil durante cuarentenas.&lt;/p&gt;

&lt;h2&gt;
  
  
  10) Bono
&lt;/h2&gt;

&lt;p&gt;Esto no es una razón para aprender a programar sino para aprender alguna carrera en tecnología.&lt;/p&gt;

&lt;p&gt;La realidad es que no a todos les gusta programar, pero eso no quiere decir que no pueden dedicarse a algo relacionado.&lt;/p&gt;

&lt;p&gt;Por ejemplo, si no te gusta programar, con entender solo algunos fundamentos de programación y como funcionan las computadoras, existen otras ramas en tecnología a la que te puedes dedicar como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;La administración de sistemas y de operaciones: dando apoyo al equipo de desarrollo, manejando toda la infraestructura (Esto también es muy demandado).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Administrador de redes y/o ciber-seguridad.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Administrador de bases de datos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Calidad de Software (quienes prueban el software).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inteligencia de negocio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dirección de proyectos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Entre muchos más.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusiones
&lt;/h2&gt;

&lt;p&gt;No es fácil tomar la decisión de empezar desde cero a aprender algo, pero no pienses que habrás desperdiciado lo que sabes hasta ahora. La programación es multi-disciplinario, y seguramente puede que le des buen uso a tus conocimientos actuales.&lt;/p&gt;

&lt;p&gt;Hay muchísimo de donde elegir para empezar en el mundo de la tecnología, siendo la programación una de las mejores pagadas, pero no la única.&lt;/p&gt;

&lt;p&gt;Si estás indeciso o tienes dudas, con gusto te ayudaré a resolverlas.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Este es una publicación basada en el &lt;a href="https://www.youtube.com/embed/g7WAHORhOrs"&gt;video&lt;/a&gt; publicado en mi canal de YouTube.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/g7WAHORhOrs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://esgabo.dev/blog/9-razones-para-aprender-a-programar"&gt;esgabo.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opinion</category>
      <category>programacion</category>
    </item>
  </channel>
</rss>
