¡Odio las ciencias de la computación!
Te ahorraré los argumentos tradicionales de por qué deberías estudiar y practicar lo que se consideran “los fundamentos”.
Lo sé, la relación entre invertir una lista enlazada y escribir un smart contract seguro y eficiente en gas parece inexistente.
Probablemente nunca hayas necesitado implementar un algoritmo que se ejecute en tiempo log(n) en producción.
Y si lo hiciste, simplemente importaste una biblioteca. Y casi con toda seguridad no has tenido que depurar un compilador ni añadir una llamada al sistema a un sistema operativo. ¿Escribir un búfer para paquetes UDP? ¡Dios nos libre!
Pero deberías estudiar estos temas de todos modos.
Déjame contarte una historia.
El niño de las artes marciales
Cuando era niño, recuerdo sentirme “frenado” al practicar artes marciales.
En Karate, no se nos permitía hacer combate de práctica (sparring) hasta que pudiéramos golpear el saco con una técnica impecable (y bloquear puñetazos instintivamente). En Jujitsu, no se nos permitía luchar en el suelo hasta que hubiéramos dominado las caídas y los lanzamientos básicos (técnicas de derribo).
La mitad de las sesiones de práctica eran ejercicios cardiovasculares y de juego de pies que no tenían ninguna relación aparente con pelear contra otras personas.
Era frustrante. Recuerdo sentirme aliviado cuando el instructor finalmente nos permitió golpear a nuestros compañeros en la cabeza. No creo que la violencia lo hiciera atractivo, sino más bien el hecho de no ser separado en el grupo de principiantes delante de todos. Hay algo en hacer públicamente ejercicios etiquetados para “principiantes” que resulta intrínsecamente desagradable.
En retrospectiva, la sabiduría detrás de esta restricción es evidente: si entras directamente a una pelea agitando los brazos, no aprenderás de manera tan eficiente como practicando los fundamentos directamente.
El sparring es mucho más efectivo si aprovecha los hábitos existentes que si se desarrollan técnicas desde cero. Tener que pensar en la técnica adecuada cuando otro compañero te está lanzando golpes hace que la habilidad se desarrolle más lentamente.
El combate real es simplemente la suma de los fundamentos: buen juego de pies, buenos golpes, buenos bloqueos y no quedarse sin aliento.
Practicar los conceptos básicos no es solo cosa de artes marciales. Los jugadores competitivos de ajedrez y go no pasan todo su tiempo jugando partidas. En su lugar, revisan libros de problemas con escenarios específicos diseñados para enseñar patrones recurrentes como el medio juego, gambitos, sacrificios, etc. — lo que en este artículo llamamos los fundamentos.
Las artes marciales y el arte de las ciencias de la computación
La ingeniería de software no es muy diferente.
Existe una enorme tentación de saltar directamente a las tecnologías que están a un paso de la aplicación final que intentas construir.
¿Machine learning? ¡Aprende TensorFlow! ¡Blockchain! ¡Aprende Solidity!
(Los educadores que prometen engañosamente a los ingenieros mejores salarios si aprenden estas tecnologías son una gran parte del problema).
Saltar directamente a TensorFlow o Solidity no te convertirá en un ingeniero efectivo de machine learning o blockchain. Estarás lidiando con demasiadas habilidades subyacentes a la vez. Serás como el nuevo estudiante de artes marciales agitando los brazos y quedándose sin aliento después de 45 segundos. Puede que conectes un golpe aquí y allá, pero siempre serás un practicante limitado.
Domina primero los fundamentos y repásalos con frecuencia.

Dar cera, pulir cera - Entran bits, salen bits
Cada problema en ciencias de la computación, independientemente del dominio, es una cadena de bits que entra, alguna operación que ocurre, y una cadena de bits que sale.
Todos. Y cada uno. De los problemas.
La interpretación de estos bits es específica del dominio, pero todas son transformaciones de secuencias de bits.
Existe una ciencia para razonar sobre estas transformaciones de cadenas de bits. Se llama ciencias de la computación.
Déjame ilustrar cómo esta abstracción se aplica a todo en el desarrollo.
El estado de una blockchain se modela como una cadena de bits (los balances de todos y el estado de los smart contracts). Combinas ese estado con otra cadena de bits (una transacción), pasas ambos por una transformación, y obtienes una nueva cadena de bits: el nuevo estado de la blockchain.
Machine learning es exactamente lo mismo. Datos + modelo (ambos cadenas de bits) dan como resultado una nueva cadena de bits (modelo entrenado). En ese campo, interpretamos semánticamente los datos como “jpegs”, el modelo como un “archivo de red” y la transformación como “entrenamiento”, pero siguen siendo solo cadenas de bits y transformaciones.
Renderizar un sitio web es una transformación de JSON de la API a HTML en la página web. Entra una cadena de bits, sale otra cadena de bits. Estos tienen un mayor nivel de abstracción que JSON y HTML, pero a nivel interno, está ocurriendo la misma transformación de cadenas de bits.
El número de formas significativas de aplicar significado semántico a esas cadenas de bits está bien documentado, y puedes estudiarlas rigurosamente.
Existen teoremas básicos sobre lo que se puede y no se puede hacer con esas transformaciones de cadenas de bits, independientemente del dominio:
- Si una cadena de bits se interpreta como instrucciones de computadora, ¿resultará en un bucle infinito o no? (Indecidible, ese es el problema de la parada).
- Si una cadena de bits se interpreta como instrucciones de computadora, ¿podemos demostrar que tiene alguna equivalencia con otra cadena de bits? Sí, pero esto es generalmente intratable. Sin embargo, si lo modelamos como resolución de restricciones, podemos resolver algunos casos de manera eficiente.
- Si una cadena de bits se modela para transmitir información, ¿se puede hacer más pequeña la cadena de bits sin pérdida de información? ¿Cómo sabes cuándo no puedes hacerla más pequeña? (¡Esto es importante para ahorrar ancho de banda!).
- Si una cadena de bits es extremadamente grande, ¿qué afirmaciones podemos hacer sobre la recuperación eficiente de fragmentos de información que nos interesan de subcadenas relevantes? (Teoría de bases de datos y sistemas distribuidos).
- Dada una cadena de bits y otra cadena de bits, generar otra cadena de bits que describa su similitud. (Algoritmos de búsqueda).
- ¿O qué tal si una cadena de bits representa el estado de un sistema? ¿Puede transicionar a configuraciones indeseables? (Hacking y máquinas de estado).
¿Entiendes el punto?
Razonar sobre la manipulación de cadenas de bits te hace bueno en cualquier especialización en ciencias de la computación. En realidad no estás moviendo unos y ceros; estás aplicando poderosas abstracciones sobre la interpretación de los unos y ceros. Y estas abstracciones son el resultado de décadas de investigación de algunos de los pensadores más brillantes de la historia. Verdaderamente logras subirte a hombros de gigantes.
Estas categorías de abstracción se agrupan en clústeres conocidos como “criptografía”, “teoría de la información”, “compiladores”, “redes”, “máquinas virtuales”, etc. Ya sabes, esos temas que no parecen valer la pena estudiar porque ya existe una herramienta establecida para ellos.
Volvamos a nuestra analogía de las artes marciales. Podrías ver a algunos cinturones negros exhibiendo un combate realmente impresionante, pero en el fondo, es solo juego de pies, golpes, bloqueos y no quedarse sin aliento. El mismo fenómeno impulsa las impresionantes hazañas que logran los ninjas de la programación. Son solo los conceptos básicos ejecutados con fluidez.
Todo lo que haces en ciencias de la computación es tomar una cadena de bits que representa algo y convertirla en otra que representa otra cosa. (O si eres un hacker, identificar entradas que den como resultado salidas indeseables).
Mejoras en ciencias de la computación perfeccionando tu capacidad general para modelar y transformar cadenas de bits, no escribiendo tu décimo sitio web de minteo de NFTs.
Cuantas más abstracciones y paradigmas tengas a tu disposición para la transformación de cadenas de bits, más capaz serás en cualquier campo de las ciencias de la computación y el desarrollo.
¿Es injusto Leetcode?
Esto puede sonar a que estoy defendiendo a las empresas tecnológicas por hacer sus entrevistas de pizarra de 45 minutos. Hay valor en hacer esto, y defiendo el principio, pero no la implementación típica.
Nosotros requerimos que los estudiantes aprueben una prueba de estructuras de datos y algoritmos de nivel fácil a medio antes de que puedan unirse al blockchain bootcamp de RareSkills. La diferencia es que tienen más de los tradicionales 45 minutos para hacerlo.
Admito de buena gana que es bastante cruel que alguien tenga que resolver preguntas de estructuras de datos en 45 minutos con un marcador de pizarra. Sin embargo, alguien que no puede resolverlas en absoluto, no es un programador competente y no se le debería confiar la creación de smart contracts que manejan millones de dólares. Te sorprenderías. El 30% de los solicitantes que realizan la prueba ni siquiera pueden resolver un solo problema (y una variante de fizz buzz es una de las preguntas).
Retomaré este punto más adelante, pero aunque las estructuras de datos y los algoritmos son un aspecto importante de los fundamentos de las ciencias de la computación, quizás incluso la pieza más importante, no son la única parte relevante de las ciencias de la computación.
¿Pero qué pasa con los requisitos de frameworks en las ofertas de trabajo?
Los empleadores generalmente saben de manera intuitiva que los fundamentos importan más que la aplicación, incluso si la mayoría no lo verbaliza explícitamente.
Alguien señalará: “pero Jeffrey, la mayoría de las descripciones de trabajo dicen que quieren dos años de experiencia con React, un año con Solidity, experiencia en producción con Kubernetes, etc. ¡Claramente eso es para lo que debería optimizarme!”
Si no te has dado cuenta ya, la mayoría de las descripciones de trabajo son bastante poco realistas.
Hagamos algunos cálculos matemáticos básicos. Digamos que hay 12 frameworks y lenguajes que realmente importan. Un desarrollador promedio puede dominar genuinamente 4 de ellos en una carrera de 5 años. La probabilidad de que el desarrollador haya aprendido los mismos 4 de los 12 que el empleador desea es de 1 entre 495.
(Eso es 4/12 * 3/11 * 2/10 * 1/9 o C(12, 4))
Las descripciones de trabajos de software a menudo suenan como un chico promedio que quiere salir con una supermodelo educada en una universidad de la Ivy League que además está en la lista Forbes 30 under 30. Buena suerte. Tus posibilidades son del 0,2%. Para ser justos, muchos ingenieros de software también tienen expectativas poco realistas. Emparejar ingenieros de software con trabajos es tan caótico como las citas tradicionales. En fin, me desvío del tema.
A pesar de las bajas probabilidades de que las personas cumplan con los requisitos del trabajo, las personas siguen siendo contratadas de todos modos. ¿Por qué el empleador contrata personas que no cumplen perfectamente con la descripción del trabajo? (O, ya que estamos, ¿por qué la gente sale con parejas que no cumplen todos los requisitos? Lo siento, me desvío de nuevo, pero es ilustrativo).
Es porque pueden ver que el desarrollador tiene habilidades generalizadas en ciencias de la computación y puede adaptarlas a lo que la empresa necesita. (Volviendo a las citas, las personas se emparejan porque ven que la otra persona tiene las características subyacentes que la convierten en un buen compañero, no porque tengan rasgos correlacionados con ser un buen compañero).
No estoy diciendo que una empresa contratará a alguien que nunca haya construido una aplicación frontend para un rol senior de frontend. Pero sí digo que dentro de las amplias categorías de lo que designamos, “frontend, backend, smart contract, infraestructura, etc.”, los empleadores inteligentes se preocupan más por la capacidad general que por la experiencia en frameworks.
Un vacío en el idioma inglés
No es que las ofertas de trabajo te estén engañando; es que el idioma inglés y la cultura estadounidense que domina el desarrollo de software tienen un vacío en la capacidad de expresar de manera concisa…
“Habilidad generalizada dentro de un dominio que es más específica que simplemente ser inteligente, pero más general que memorizar un montón de datos — alguien que ‘lo pilla’ (gets it), donde ‘lo’ es un conjunto de metahabilidades importantes que se aplican a la relación común entre lo que necesita resolverse esta semana y lo que probablemente necesite resolverse el próximo mes… Y cuando resuelven el problema, entienden los efectos secundarios dentro del dominio que acompañan a la solución, y cómo esos efectos secundarios podrían filtrarse a otros dominios.”
Vaya, eso fue muy prolijo.
(Si yo fuera muy culto y quisiera alardear de ello, diría la palabra equivalente en {japonés, francés, algún idioma de la India u otro que no sea el inglés}, pero por desgracia, no soy muy culto, e incluso si lo fuera, la existencia de esta palabra en otro idioma no resuelve el problema que nos ocupa).
Tenemos otra dificultad: palabras como “fundamentos”, “primeros principios” y “bases” connotan “material para principiantes”. En términos de álgebra lineal, no tenemos una palabra o coloquialismo que se refiera a los vectores base de un espacio de conocimiento sin implicar que la persona que lo estudia es un novato (noob). (¿Ves? No perdí la oportunidad de alardear de mis conocimientos de álgebra lineal frente a ti).
A pesar de la brecha terminológica, los instructores de artes marciales y los gerentes de contratación técnica entienden el concepto de manera intuitiva. Pero debido a que carecen del lenguaje adecuado para expresarlo, utilizan términos engañosos como “atlético”, “experimentado” o “aprendiz rápido”.
De acuerdo, tenemos palabras como “experto” y “maestría”, pero están muy diluidas y sobreutilizadas por educadores que afirman que pueden otorgarte “experiencia” enseñándote trucos de salón con el framework que esté de moda hoy en día.
Incluso si has estado usando los frameworks solicitados durante cinco años, eso no te ayudará si todo lo que haces es copiar ciegamente tutoriales en línea. Tu deficiencia generalmente será descubierta en la etapa de entrevistas. Así que eso de que los “años de experiencia” sean el factor clave no tiene mucho sentido, ¿verdad? Los empleadores esperan que entiendas cómo funcionan los frameworks, no solo cómo interactuar con sus APIs.
Todos los frameworks se reducen a los fundamentos. Toman una cadena de bits que proporcionas a través de la API y devuelven otra cadena de bits como un cambio de estado o el resultado de una consulta. Están haciendo el mismo tipo de transformaciones de datos fundamentales en los dominios fundacionales que enumeré antes.
¿Quieres dominar los frameworks? ¡Ya sabes cuál es mi siguiente frase!
Así que estudia los fundamentos, no los frameworks. Así es como te conviertes en alguien que puede aprender cualquier framework rápidamente — incluso crear los frameworks tú mismo. Y eso es lo que los empleadores realmente quieren, incluso si el idioma actual no les permite expresar ese deseo de manera concisa.
Conocimiento Perenne y de Alto Apalancamiento
Debido a que “fundamentos” suena a “principiante” (es decir, deberías ir a la esquina y golpear ese saco cien veces antes de poder practicar con personas que tienen un cinturón más oscuro que tú), voy a referirme a ciertos conceptos de ciencias de la computación como “Perennes” (Evergreen) y de “Alto Apalancamiento”: “Perennes” porque no caducan ni se quedan obsoletos, y de “Alto Apalancamiento” porque aceleran la adquisición de conocimientos relacionados.
Aprender otro lenguaje, digamos Rust, sin duda te hará algún bien.
Pero aprender cómo funcionan los compiladores te ayudará a aprender cualquier lenguaje más rápido.
Aprender cómo operan las arquitecturas de CPU y el código máquina te ayudará a optimizar cualquier smart contract en cualquier blockchain.
Ten en cuenta que esto no funciona a la inversa. Aprender otro lenguaje no te enseña mucho sobre compiladores. Pero aprender sobre compiladores te ayudará con la adquisición de lenguajes de programación. Es por eso que tradicionalmente se le llama “fundacional”, aunque prefiero llamarlo de “alto apalancamiento” en este contexto.
Aprender cómo operan las estructuras de datos y los algoritmos te ayudará a descifrar grandes bases de código, ya que puedes leer la arquitectura en fragmentos lógicos en lugar de variable por variable. Además, habiendo pasado por la práctica de modelar y transformar cadenas de bits de múltiples maneras, las buenas soluciones te llegarán más rápido cuando programes en el “mundo real”. Finalmente, también entenderás por qué los frameworks modelan los datos de la forma en que lo hacen, y esto te ayudará a aprender nuevos frameworks más rápido y a mantenerte por delante de la competencia.
“¡Pero Jeffrey! Me llevará un año aprender estas cosas, ¡y para entonces estaré muy desactualizado con blockchain!”
¡Ahí es donde entra la parte “Perenne”!
¿Adivina qué? Estarás desactualizado dentro de un año en blockchain, incluso si estudias el material actual hoy. Siempre estarás desactualizado. La clave es navegar por la información con fecha de caducidad mejor que tus competidores preparándote para aprender más rápido.
Las leyes del universo que rigen la codificación y transformación de la información no pasan de moda.
La búsqueda en profundidad (Depth-first search) tiene más de un siglo de antigüedad y sigue siendo relevante hoy en día. Radix sort (más rápido que quicksort en muchas aplicaciones) también tiene un siglo de antigüedad. La máquina de Turing, que subyace a todas las teorías de la computación, fue conceptualizada hace 80 años. Las suposiciones en las que se basa la criptografía tampoco han cambiado. Todo se reduce a si el texto cifrado (de nuevo, una cadena de bits) “parece aleatorio” según definiciones formales.
Las ciencias de la computación son simplemente la manipulación de secuencias de bits. Siempre lo han sido. Las reglas que las gobiernan son perennes.

El secreto detrás de mantenerse actualizado
Mantenerse actualizado significa comprender rápidamente cómo el último chico o chica inteligente recombinó el conocimiento existente.
Las principales innovaciones son muy incrementales a nivel interno. Es solo que las principales innovaciones incrementaron un par de variables críticas con resultados altamente desproporcionados:
Bitcoin simplemente combinó las firmas digitales con el proof of work (ambos conceptos de décadas de antigüedad en el momento de la invención de Bitcoin). Ethereum tomó el núcleo de ejecución de Bitcoin y lo hizo Turing completo. Chat GPT tomó el transformer de autoatención (que ya tenía 4 años en ese momento) y lo hizo más grande, añadiendo algunas reglas de negocio codificadas de forma rígida.
La “innovación” suele ser solo un incremento fortuito de una variable clave con un resultado asimétrico (en otras palabras, recombinar y mejorar algo meticulosamente hasta que sucede algo diferente y/o bueno). Si entiendes fundamentalmente qué se incrementa cuando se lanza una nueva innovación, dominarás la nueva tecnología a una velocidad que desconcertará a tus contemporáneos.
Cómo hacer que tu solicitud de empleo destaque
Aquí tienes un secreto. Haz algo loco como construir un compilador desde cero o implementar un algoritmo de criptografía no trivial a partir de las matemáticas. Este tipo de proyecto atraerá mucha más atención de posibles empleadores que mostrarles que has construido un clasificador de gatos o el centésimo marketplace de NFTs con una función de staking.
Un proyecto demuestra que sabes cómo seguir un tutorial. El otro demuestra que puedes abordar de frente temas difíciles y manejar el sinfín de problemas que puedan surgir pero que no aparecen en la descripción del trabajo.
Lo creas o no, el compilador de Solidity tiene errores. ¿A quién preferiría contratar un empleador, a un ingeniero que simplemente se rinde cuando surge el problema, o a un ingeniero que nota el problema, indaga en el código fuente del compilador, abre un issue en GitHub y rediseña el código Solidity para eludir el problema? El primer ingeniero puede tener una docena de aplicaciones de staking DeFi en su GitHub, pero eso palidece en comparación con el ingeniero que puede explorar la madriguera del conejo hasta su conclusión.
Ahora lo entiendo: en una etapa temprana es muy difícil ver la relación entre invertir árboles binarios recursivamente y escribir smart contracts eficientes.
La sensación puede ser como cuando estaba aprendiendo artes marciales: “¿Por qué estamos haciendo saltos de tijera cuando deberíamos estar pateando a la gente en la cara? ¡La conexión parece tan distante!”
Puedo decirte que machacar absolutamente los fundamentos me permitió liderar un departamento de machine learning en una empresa importante menos de dos años después de haber sido introducido al concepto y crear los únicos cursos de Solidity de nivel experto en Udemy menos de un año después de dedicarme a tiempo completo a blockchain. Y sea cual sea el próximo campo que genere revuelo, lo aprenderé más rápido que el 98% de los ingenieros.
¿Por qué? Porque cada tecnología se construye desde cero a partir de los mismos primeros principios, solo que combinados de manera diferente.
Cuantos más primeros principios domines, más rápido podrás aprender en un nuevo subcampo de las ciencias de la computación, ya que no estarás aprendiendo desde cero. En su lugar, simplemente estarás combinando la información que ya conoces.
¡Pero mi staff engineer es genial y no sabe hacer Leetcode!
Los fundamentos son mucho más amplios que solo Leetcode. No estoy diciendo que por el hecho de poder mover dos punteros por un array, puedas dominar rápidamente cualquier dominio del desarrollo de software. Estudiar estructuras de datos y algoritmos tiene rendimientos decrecientes después de cierto punto (aunque yo argumentaría que la mayoría de los ingenieros no llegan a ese punto de inflexión).
Leetcode no te evalúa sobre redes, teoría de lenguajes, fugas de información, máquinas virtuales, sistemas operativos, compiladores, y así sucesivamente.
Queda fuera del alcance de esta discusión, pero en los niveles altos, las habilidades blandas importan mucho. No quiero ignorar eso. Pero podemos estar de acuerdo en que, a igualdad aproximada de habilidades blandas, el ingeniero con mayor madurez técnica saldrá ganando.
Todavía puedes adquirir una intuición sobre los fundamentos si tienes una gran exposición a problemas que te obligan a lidiar con ellos y puedes reconocer patrones rápidamente. Sin embargo, siempre será más eficiente estudiar las bases directamente en lugar de aprender por azar. Puede que no tengas tanta suerte como tu staff engineer.
Cómo practicar los fundamentos — no solo Leetcode
- Aprende un lenguaje de programación funcional inútil. Te obligará a ver las cadenas de bits de una forma diferente.
- Avanza hasta alcanzar el nivel medio de Leetcode en ese lenguaje
- Escribe un compilador desde cero
- Crea un sistema operativo simple o una máquina virtual desde cero, o modifica uno existente
- Aprende teoría de la complejidad (pista: no se trata solo del análisis O(f(n)))
- Toma un curso de criptografía y reimplementa tú mismo los algoritmos
- Si te dedicas al machine learning, toma una clase adecuada de álgebra lineal y estadística
Todo en ciencias de la computación es una cadena de bits que entra en una caja y sale como otra cadena de bits. Eso lo aprendes en la teoría de la complejidad. Todos estos campos son solo formas de aplicar abstracciones e interpretaciones útiles a las cadenas de bits. Cuantas más abstracciones conozcas, más poderoso serás como desarrollador.
¿Deberías aprender los fundamentos primero?
Si eres completamente nuevo en la programación (lo más probable es que no lo seas si estás leyendo este artículo, pero incluiré esta sección), no creo que aprender los fundamentos primero sea estrictamente necesario. Veo a muchos estudiantes universitarios de informática pasar por las mismas experiencias por las que pasé yo como joven artista marcial. Estudiar material sin entender por qué es importante no es lo óptimo. Es genial si tienes un profesor que te inspira a tener confianza para dominar los primeros principios, pero no todo el mundo tiene ese lujo.
Creo que un viaje de aprendizaje razonable podría ser como el siguiente. Así es como se ve el viaje de aprendizaje de ingenieros autodidactas muy exitosos o graduados de bootcamps de Web2.
Acabar de empezar → el infierno de los tutoriales → aprender haciendo → dominar los fundamentos.
El viaje de aprendizaje de un estudiante exitoso de una carrera de informática de cuatro años podría verse así:
Dominar los fundamentos → aprender haciendo → repasar los fundamentos.
Está bien retrasar el aprendizaje de los temas fundamentales si todavía estás luchando para hacer cosas básicas en la construcción de aplicaciones funcionales. Pero no te acomodes construyendo aplicaciones funcionales porque te quedarás atascado ahí si no dominas los fundamentos.
Sí, existe el infierno de los tutoriales, y la solución es dar el paso y construir.
Pero una vez que has salido del infierno de los tutoriales, el siguiente paso no es desarrollar más aplicaciones, sino programar cosas que desarrollen habilidades informáticas generalizables.
Si no puedes construir aplicaciones, no te van a pagar. Pero si no tienes las bases, no te van a contratar para un trabajo deseable, y mucho menos conseguirás un ascenso atractivo, a menos que tengas el conjunto de habilidades fundamentales necesario.
Como entrevistador
No estoy abogando por que cada empleador deba hacer una prueba de estilo Leetcode o algo que evalúe los fundamentos que describí anteriormente. Si solo estás construyendo aplicaciones relativamente sencillas, entonces es razonable solo evaluar a los ingenieros en esa capacidad. Sin embargo, el público objetivo de este artículo son los ingenieros que buscan avanzar en sus carreras (eso es lo que ofrece RareSkills). El avance profesional no vendrá de construir una variación tras otra de la misma aplicación una y otra vez.
Conclusión
Todo lo que hacemos en el desarrollo de software es una interpretación y transformación glorificada de bits. La transformación de datos es una habilidad que se puede desarrollar directamente con entrenamiento deliberado. Cuantos más campos de las ciencias de la computación estudies, mayor será el vocabulario que podrás aportar al problema que tengas entre manos. Los mejores ingenieros desarrollan estas habilidades intencionalmente. Los desarrolladores promedio van directamente a usar los frameworks. Los frameworks se quedan obsoletos. Los teoremas fundamentales de la codificación y manipulación de la información no lo hacen.
La diferencia entre tú y el ingeniero que gana $100,000 más que tú no es el conocimiento de un lenguaje o framework. Es el conocimiento de los componentes del framework. Y esos componentes dependen directamente de los fundamentos de las ciencias de la computación.
Sal del camino trillado.
Estudia y practica los temas intimidantes que parecen inútiles.
No es solo un atajo a largo plazo.
Es el único camino.
RareSkills
Gracias por leer este artículo. Como puedes ver, me apasiona la educación para desarrolladores. Es por eso que creé RareSkills. Es para enseñar el desarrollo de código en blockchain de la manera correcta. Así que, por favor, echa un vistazo a nuestro blockchain bootcamp. Ofrecemos de todo, desde cursos para aquellos totalmente nuevos en la programación Web3 hasta cursos dirigidos a desarrolladores profesionales de Solidity.
La mitad de nuestros estudiantes ya tienen trabajo como desarrolladores de smart contracts, por lo que estamos mucho más avanzados que cualquier bootcamp típico. Y debido a que enfatizamos fuertemente los fundamentos, lo que aprendas será relevante en campos incluso fuera de blockchain.
Publicado originalmente el 8 de febrero de 2023