Una idea errónea común es que aprender sobre blockchain se trata de aprender un nuevo lenguaje de programación. No es así. Aprender sobre blockchain se parece mucho más a aprender un framework que un lenguaje de programación.
Por ejemplo, el simple hecho de que sepas programar en Python o Go no te convierte automáticamente en un desarrollador frontend, del mismo modo que aprender JavaScript o TypeScript tampoco te convierte en un desarrollador frontend. Para ser un desarrollador backend, necesitas conocer frameworks como Express.js, React, Java Spring, etc.
Vayamos directo al grano.
Incluso si sabes que quieres desarrollar en una blockchain que utiliza Rust (NEAR, Solana, Elrond, y demás), de todos modos deberías aprender Solidity primero.
Me atrevería a decir que si ya conoces Rust y quieres desarrollar smart contracts en blockchains que no son EVM, de todos modos deberías aprender Solidity.
Solidity es muy fácil de aprender. Se ve similar a JavaScript. Hay solo una decena de palabras clave y tipos de uso frecuente que podrían parecer poco familiares. Un desarrollador con una experiencia razonable puede sentirse cómodo en Solidity durante un fin de semana con un buen tutorial de Solidity y largas sesiones de estudio sin distracciones. Cada estudiante en RareSkills alcanza la competencia en una semana. Aprender el lenguaje es la parte fácil.
Solidity tiene sus propias rarezas que desconciertan a los desarrolladores, pero muchas de las características sorprendentes provienen de la fuga de abstracciones inesperadas del entorno blockchain.
Aprender el entorno blockchain es donde está el verdadero aprendizaje, no en el lenguaje.
Aquí hay algunos obstáculos comunes para los desarrolladores que hacen la transición a blockchain:
-
Las llamadas a funciones que mueven dinero se sienten incómodas al principio.
-
Los hash maps no se comportan de la manera que esperas (esto es cierto tanto para Ethereum como para Solana).
-
Aunque una blockchain es una base de datos, interactuar con ella para almacenar datos de forma persistente es distinto a usar cualquier otra base de datos con la que hayas tenido experiencia.
-
Algunas funciones se comportan como remote procedure calls a pesar de que todas lucen idénticas a las funciones regulares.
-
No puedes dar por sentada la potencia de cálculo. Los costos computacionales se acumulan rápido, incluso en blockchains que se anuncian a sí mismas como computacionalmente potentes.
-
Los desarrolladores asumen (con razón) que las funciones están protegidas de forma predeterminada en las aplicaciones web2 porque solo se puede acceder a ellas a través de una capa de API si el middleware no está allí para conectarlas. Pero la distinción entre una función y una API es muy difusa en el entorno blockchain, por lo que los controles de acceso se comportan de manera diferente.
-
Pensar en términos de costos computacionales resulta poco natural para la mayoría de los desarrolladores. Puede parecer extraño cómo una reorganización de código aparentemente trivial puede llevar a cambios considerables en el costo de ejecución.
-
Los desarrolladores se sorprenden constantemente al descubrir que un NFT es solo un hash map de propietarios y token ids. Requiere un poco de adaptación aceptar que los tokens viven en un smart contract, no en una wallet (para la mayoría de las blockchains).
Lo anterior es una lista parcial. Si observas los cursos que ofrecemos, por lo general esperamos que los estudiantes aprendan las cadenas EVM (Ethereum, Avalanche, Polygon, etc.) antes de abordar Solana. Este orden de aprendizaje no se debe a que tome cuatro meses aprender Solidity; ni mucho menos.
Es porque aprender un nuevo paradigma toma su tiempo.
Si has tenido la experiencia como desarrollador backend intentando armar rápidamente una aplicación web frontend, entonces tienes una idea de lo que es programar en blockchain por primera vez. No es que hayas tenido dificultades para entender JavaScript, fue el framework lo que resultó difícil.
Transferencia de aprendizaje para desarrolladores
Blockchain es diferente a casi cualquier otro framework con el que la mayoría de los desarrolladores estén familiarizados. ¿Computación en la nube? Diferente. ¿Frameworks frontend? Nada en común. ¿Frameworks backend? Tampoco. ¿Desarrollo de aplicaciones móviles? ¡Ni hablar! ¿Programación de sistemas? Un poco, pero no exactamente.
Una vez que conoces un framework, es más fácil aprender otro de la misma categoría. Por ejemplo, si estás aprendiendo frontend por primera vez, Vue js no será fácil, pero si ya conoces React js, Vue será relativamente pan comido. Lo mismo podría decirse de Ruby on Rails y Django.
Por lo tanto, dado que aprender un framework completamente nuevo es un desafío, puede ser más fácil tomar un desvío para aprender un framework simple que tenga muchos tutoriales útiles en línea. Una vez que te acostumbres al nuevo paradigma y domines el framework, puedes pasar al que realmente te interesa aprender.
Si este fuera un artículo sobre “React Native vs. Flutter”, te diría: “lanza una moneda; no importa. Ambos tienen grandes recursos”. Pero actualmente existe una gran disparidad en los recursos de aprendizaje entre Ethereum y cualquier otra cadena de smart contracts. Aunque Ethereum tiene una amplia selección de tutoriales para principiantes, todavía carece de recursos educativos para temas más avanzados. ¡Esta escasez debería indicar que aprender temas avanzados en blockchains emergentes no será un camino de rosas!
Cuando estás intentando sentirte cómodo en este nuevo paradigma, tener una gran cantidad de recursos en Stack Overflow para copiar y tutoriales en línea para buscar en Google hace que el proceso de aprendizaje sea más rápido.
Pasar horas buscando respuestas simples a preguntas directas prolonga el proceso de aprendizaje de manera innecesaria.
Aprender Rust para Blockchain
Rust es un lenguaje famoso por ser complicado debido a conceptos extraños (pero útiles) como el ownership, el borrowing y el lifetime de las variables. Ahora añádele el enfoque de Rust sobre async y la concurrencia, y tienes una bestia de lenguaje por dominar.
Afortunadamente, el subconjunto de Rust que utilizan las blockchains es muy pequeño. Mi estimación aproximada es que solo alrededor del 25-30% de Rust se utiliza realmente en blockchain, y alrededor del 10-15% se usa de forma intensiva. Así que si dominas ese 10-15% que importa, Rust no será tu obstáculo en cuanto al desarrollo en web3.
Advertencia: esto aplica a los smart contracts (o programas, como los llama Solana). Si estás construyendo un cliente de blockchain o tooling para smart contracts en Rust, necesitarás tener aún más fluidez en el lenguaje.
¿Cuánto Rust necesitas saber? Si puedes resolver cómodamente los problemas fáciles de LeetCode en Rust, serás capaz de leer programas de Solana sin demasiada dificultad. Cuando te encuentres con una laguna de conocimiento, sabrás qué palabras clave poner en Google. Cómo abordes esto depende de ti, pero te recomiendo leer capítulos selectos del libro Programming Rust para darte un esquema general. Pero aplica la advertencia de siempre: no te quedes atrapado en el infierno de los tutoriales. Se aprende haciendo, no estudiando, leyendo o mirando videos.
En general, toma alrededor de un mes de estudio a tiempo parcial alcanzar el nivel de competencia mencionado anteriormente con Rust.
Pero incluso después de esos 30 días de estudio, sigues sin saber nada sobre el paradigma de blockchain. Ese tiempo se podría haber invertido en familiarizarse con blockchain en sí.
Hagas lo que hagas, no intentes aprender blockchain y Rust simultáneamente. Tendrás dos conceptos desconocidos con los que lidiar y tendrás dificultades para decidir qué buscar en Google.
Además, te sentirás como este perro icónico:

Advertencia
Ninguna ley del universo (ni siquiera una convención social) dice que debas aprender Solidity antes de aprender Rust. Si los obstáculos enumerados anteriormente no te disuaden, por todos los medios, no dejes que yo te diga cómo vivir tu vida. Por otro lado, no tiene nada de malo aprender Rust primero si así lo desea tu corazón. ¿Quién soy yo para juzgar? Saldrás siendo un mejor desarrollador, cualquiera que sea el camino que elijas.
Sin embargo, te irá mejor con consejos con opiniones bien fundamentadas en lugar de consejos tibios que intentan evitar ofender a nadie.
Si tienes que preguntar, aprende Solidity primero. Obtén más información sobre nuestro Bootcamp de Rust y Solana y nuestro Bootcamp de Solidity
Publicado originalmente el 24 de noviembre de 2022