2 Comments
User's avatar
Pedro's avatar

El problema de la mayor incompetencia percibida de los "nativos digitales" lo he escuchado en otro foro: un amigo, profesor universitario en una escuela de ingeniería industrial prestigiosa, me comentaba que en su asignatura de Fundamentos de SW / Programación tenía constantes interrupciones porque la gente no era capaz de localizar los corchetes o las llaves en el teclado (!!!); no entendían que el lo que escribes en el IDE tiene que ir guardado en "algún sitio", que no se queda ahí sin más; les parecía extraterrestre el hecho de que el código fuente de un programa requiriera una cierta estructura de carpetas, y que no funcionaran las cosas tirando archivos donde sea; y esto sólo para comenzar.

Como indicabas, una causa probable son las interfaces tan pulidas y sencillas con las que interaccionamos todos a diario - para "ellos" son las únicas.

Con respecto a la solución, efectivamente deben irse a los Principios, como en cualquier oficio o materia. Pero creo que la mejor forma de entenderlos (sobre todo en el ámbito del SW) es mediante Project Based Learning: que el objetivo primario sea construir una aplicación (en su acepción más general) e ir despejando las carencias de conocimiento sobre la marcha, e ir pelando la cebolla a medida que lo vayas necesitando: especialmente hoy día, el signal-to-noise es muy bajo, y acercarse al SW con una estrategia top-down en lugar de bottom-up... me parece un error - imagina que tu primera toma de contacto con sistemas distribuidos es Designing Data-Intensive Applications, de Kleppmann (un libro 10/10, por cierto) en lugar del Quickstart de BigQuery + Cloud Run de Google Cloud Platform (cierto, estoy mezclando conocimiento de materia con un producto concreto, pero con esto refuerzo el enfoque finalista).

Fíjate, que al final todo esto es culpa de una buena ejecución de los conceptos de encapsulación y abstracción. Y que es un fractal: el usuario final que solo sabe usar una touchscreen; el ingeniero que sólo usa servicios serverless y nunca ha levantado una VM; el ingeniero que sólo usa Python y nunca ha programado en C.

Ahora bien, la clave aquí es saber dónde está uno mismo, en qué nivel. Y tener la humildad y capacidad de introspección de decir que si te has parado aquí, es o porque no has tenido tiempo, o porque no lo has necesitado aún.

Fin de la brasa.

Expand full comment
guillem's avatar

Muy de acuerdo contigo en que al final cada uno trabajamos en nuestra parcela de abstracción. En mi caso particular, al dedicarme full negocio, con muchas herramientas low code, no necesito "bajar al barro" porque tengo un BPM que se conecta a dicha API, no tengo que picarme la implementación de la API. Ni siquiera tengo que conocer el protocolo, dame un endpoint y moveré el mundo. Pero está claro que muchos no empezamos por los fundamentos físicos de la informática, puertas lógicas, arquitectura de Von Neumann, que son la base de todo. No obstante, en muchos casos puedes abstraerte de ellas, pero conforme vas bajando en nivel, la complejidad se hace cada vez más alta. En mi caso, dado que mi aproximación fue autodidacta, tengo lagunas en ciertas cosas, como por ejemplo en redes, protocolos de redes... pero sí que me he peleado mucho con los sistemas. Todos los días me peleo con aplicaciones legacy, y prácticamente mi forma de automatizar procesos end-to-end pasa por el down-top. Pero por lo general, el ingeniero que trabaja serverless, salvo que haya nacido de un huevo, sí sabe que al final trabaja sobre una virtualización, y sí conoce los conceptos de la virtualización, aunque no sepa exactamente cómo funciona. Al igual que el programador Python no tiene por qué saber cómo está codificada la librería Pandas, porque ya tiene esa "navaja suiza" en forma de métodos y propiedades. Es evidente que el programador Python no necesita un recolector de basura como en C, y el que escribe en C no necesita conocer ensamblador x86-64. Pero Pero estoy seguro de que lo que todos ellos tienen en común son sólidos conocimientos de informática más allá de su conocimiento del lenguaje. Y saben que Linux y Windows emplean diferentes sistemas de ficheros, que Linux es case sensitive y Windows no... pero lo que comentas de no saber qué es una llave o un corchete, o no conocer una jerarquía de ficheros, carpetas y enlaces simbólicos es precisamente de lo que hablo. Es informática del día a día, no cálculo orbital. Fin de la chapa de vuelta.

Expand full comment