Quiero cambiar a Web3 pero no tengo experiencia | CourseIt Blog
logo courseit

Quiero cambiar a Web3 pero no tengo experiencia

25

Web3 viene en auge hace bastante tiempo y cada vez mas profesionales de Web2 buscan migrar. Pero el principal problema con el que se encuentran es que al no tener experiencia en este nuevo mundo, conseguir trabajo es mucho mas difícil en comparación con la zona de confort en donde están. Por eso, en este articulo quiero dejarles algunas recomendaciones para hacer esa transición algo mas fácil.

Verticales dentro de web3

Primero que nada, si queres migrar a este mundo hay que entender que verticales existen como para saber a donde estamos yendo. En web2 leemos una y otra y otra y otra vez el concepto de Frontend y Backend. Bueno, aca vas a leer el concepto de dApps y Smart Contracts.

Dapp

dApp significa Decentralized Application y es el equivalente al Frontend de Web2. En estas dApps lo que vamos a hacer es consumir información de la blockchain para mostrar la data en nuestro Frontend.

Las tecnologías que utilizamos siguen siendo bastante parecidas a las de Web2 con la diferencia que vamos a tener que sumar algunas librerías para hacer nuestra vida un poco mas fácil. La mas utilizada en este momento es Ethers aunque te vas a encontrar otras como por ejemplo Web3 aunque personalmente te recomiendo que ni les inviertas tiempo.

La blockchain, por definición es algo continuo e inmutable, lo que quiere decir que todo el tiempo vamos emitiendo nuevos bloques que almacenan información y esa información siempre va a estar ahí. Esto si bien tiene muchos beneficios, es un gran problema a la hora de buscar información porque la blockchain no esta pensada para ser tratada como una base de datos en donde vamos a estar constantemente pidiendo información y obteniéndola en un lapso de tiempo extremadamente corto. Sumado a esto, a medida que va pasando el tiempo, nuestras queries van a volverse cada vez mas lentas por el simple hecho que hay una mayor cantidad de bloques a escanear y obtener la información. Por suerte un producto llamado TheGraph ya esta solucionando este problema. Por lo que si bien no es requisito indispensable saber usar TheGraph para aplicar a un puesto de web3, vas a sumar algunos puntos.

Si te gusta como escribo o explico, acá hay un punto de partida como para empezar a aprender a usarlo

Smart Contracts

Los smart contracts son el backend de Web3. El nombre suele meter bastante miedo pero realmente no es rocket science aunque hay que sacarnos bastante mañas para poder escribir buen código, especialmente si venimos del mundo de web2 donde el procesamiento y storage es prácticamente gratuito.

Bien, para entender un poco mejor esta vertical, vamos a partirla en varios conceptos: Lenguajes de programación, EVM y malas practicas.

Lenguajes de programación

Para poder escribir smart contracts vamos a tener que aprender un nuevo lenguaje de programación. El mas conocido y mi recomendación personal si quieren trabajar en esta industria es Solidity, sin embargo existen otras opciones como por ejemplo: Vyper.

Si, efectivamente podes programar smart contracts en distintos lenguajes de programación, esto es porque al fin de cuenta no importa el código que nosotros escribimos, sino el resultado compilado de ese código (bytecode) que se va a terminar ejecutando en la EVM, que ahora vamos a ver lo que es.

Antes de pasar al siguiente punto, si queres aprender solidity, acá tenes un curso básico como para arrancar

EVM

Significa Ethereum Virtual Machina y esta es la posta de las postas, lo que comunmente llamamos blockchain.

Lo que se busca con esta EVM es mantener una maquina de estado que sea continua, ininterrumpida e inmutable y para hacer eso hay miles de nodos que se encargan de guardar y validar todas las transacciones que se hacen. No quiero que nos desviemos mucho hablando de nodos, pero si te interesa (acá ) podes ver los distintos tipos que existen y como hacer para levantar el tuyo.

Malas practicas

Si ya tienen experiencia programando, solidity como lenguaje no es algo super difícil de aprender. Tiene una sintaxis dentro de todo parecida a Javascript aunque es fuertemente tipado.

El problema con solidity viene al momento de deployar nuestros smart contracts porque una vez que están dentro de la ethereum virtual machine, NO LOS PODEMOS CAMBIAR lo que implica que si tuvimos un error o queremos mejorar algo no tenemos otra opción mas que deployar nuevamente todos nuestros contratos con los cambios aplicados. Esto es algo particularmente grave porque los smart contracts (especialmente en DeFI) suelen tener liquidez asociada por lo que un error de seguridad en un smart contract puede hacer que alguien se lleve toda la liquidez del contrato siendo prácticamente imposible pararlo.

Algunos ejemplos de esto:

https://es.cointelegraph.com/news/50m-reportedly-stolen-from-bsc-based-uranium-finance

https://www.coindesk.com/business/2021/10/03/66m-in-tokens-added-to-recently-hacked-still-vulnerable-compound-contract/

Otra de las grandes diferencias que hay entre escribir código para un backend centralizado y uno descentralizado es que como mencionamos antes, en algo centralizado el storage y el procesamiento es prácticamente gratuito, guardar un dato mas o un dato menos en una base de datos es algo que realmente no nos importa, de hecho muchas veces se guarda información “por las dudas” que en un futuro la necesitemos para analizar o nutrir alguna nueva funcionalidad. En web3 cada transacción sale plata y cuanto mas storage y procesamiento necesite esa transacción, sale mas plata. Por ejemplo, si revisamos el gas tracker de etherscan (https://etherscan.io/gastracker), al momento de escribir esto una venta en Opensea nos sale alrededor de 20 dólares mientras que un transfer de USDT está 5.5 dólares

Teniendo en cuenta lo anteriormente nombrado, podemos darnos cuenta que algunas practicas que son super comunes en web2 como por ejemplo iterar sobre arrays, crear estructuras de datos donde a veces se duplica información o bien guardar información “por las dudas” son cosas que definitivamente no queremos aplicar mientras estemos desarrollando smart contracts. De paso si quieren ver una experiencia con este tipo de cosas, pueden leer este hilo que escribió @patriciomolina y de paso hacer el challenge de Exactly Finance para practicar

¿Cómo soluciono la falta de experiencia?

El ecosistema completo de Web3 es Open Source lo que hace que sea extremadamente fácil contribuir a proyectos que ya existan y estén funcionando como para ganar experiencia. Lamentablemente creo que al ecosistema open source le falta evolucionar un poco para que personas externas a los core contributors de los proyectos puedan sumar grandes funcionalidades pero sigue siendo un buen lugar para armar tu marca personal y conseguir oportunidades laborales. Puede ser escribiendo código, actualizando/sumando documentación o levantando nuevos issues, todo suma.

Fuera de eso, si aportar a proyectos que ya existen no es lo tuyo, al ser todo open source y descentralizado, es super fácil poder crear proyectos que usen información o funcionalidades sin tener la necesidad de que te den una API o un SDK. Por ejemplo podes crear un mercado paralelo para el marketplace de Decentraland, una nueva UI para usar Aave o una wallet que te permita ver tus NFTs aparte de tus tokens.

El punto es que tenes al alcance de tu mano una absurda cantidad de información que podes usar para poder ayudar a productos que te gusten o crear los tuyos propios. Fuera de eso, es extremadamente importante que te tomes el trabajo de hacerlo bien sino el tiempo que invertís va a quedar perdido en una nebulosa en lugar de sacar algo bueno.

  • Termina tus proyectos
  • Arma una buena explicación para que la gente los entienda. Nadie esta en tu cabeza por lo que si no lo explicas de una forma clara y concisa el resto de la gente no los va a poder aprovechar
  • Asegurate que estén bien testeados, especialmente si estas escribiendo código en solidity.
  • Valida tus contratos en etherscan, si bien tu código probablemente sea público, suma algunos puntitos