Reconocer restricciones
Hay una palabra con “C” en desarrollo web a la que no le prestamos suficiente atención. No, no me refiero a “integración continua”, ni siquiera a “CSS”. La palabra “C” a la que me refiero es “restricciones” . Comprender las restricciones es una parte vital de la creación de software que funcione lo mejor posible en su(s) entorno(s) objetivo. Sin embargo, la dificultad de esa tarea varía según los sistemas para los que desarrollamos.
Los juegos de Super Nintendo eran el sabor de la década cuando yo era más joven, y no hay mejor ejemplo de cómo construir cosas increíbles dentro de limitaciones comparativamente escasas. Los desarrolladores de títulos de SNES se limitaron, entre otras cosas, a:
- Color de 16 bits.
- Salida estéreo de 8 canales.
- Cartuchos con capacidades de almacenamiento medidas en mega bits, no en mega bytes.
- Capacidades limitadas de renderizado 3D en títulos seleccionados que incorporan un chip especial en el cartucho.
A pesar de estas limitaciones, los desarrolladores de juegos crearon títulos increíbles y memorables que perdurarán más allá de nuestras vidas. Sin embargo, las limitaciones que enfrentaron los desarrolladores de SNES fueron estáticas. Tenías una única plataforma con un único conjunto de capacidades. Si pudieras mantenerte dentro de esas capacidades y maximizar su potencial, cualquier persona con una consola SNES podría jugar tu juego (y adorarlo).
Los juegos de PC, por otra parte, tuvieron que desarrollarse dentro de un conjunto de limitaciones más flexibles. Recuerdo que uno de mis primeros juegos de PC tenía una variedad de requisitos del sistema mostrados en el costado de la caja:
- Tenga al menos un procesador 386, pero se prefiere Pentium.
- Compatible con altavoces Ad Lib o PC, pero lo mejor es Sound Blaster.
- Preséntese a la fiesta con al menos 4 megabytes de RAM, pero cuanto más, mejor.
Si no tuvieras un sistema de clase mundial en ese momento, aún podrías tener una experiencia agradable, incluso si se reduce de alguna manera.
El desarrollo de juegos para consolas y PC son excelentes ejemplos de restricciones estáticas y variables, respectivamente. Uno obliga a participar en una única configuración de hardware, mientras que el otro permite la participación en una variedad de configuraciones de hardware con un gradiente de resultados de rendimiento.
¿Te suena esto familiar?
Podría decirse que los desarrolladores web tienen el conjunto de limitaciones más difíciles con las que lidiar. Esto se debe a que tenemos que conciliar tres variables distintas para crear sitios web rápidos:
- La roja.
- El dispositivo.
- El navegador.
Cada año que pasa, comprende mejor lo difícil que es trabajar con esas limitaciones. Es una lección que aprendo repetidamente con cada proyecto, cada cliente y cada nueva tecnología que evalúa.
Hacer frente a las limitaciones que impone la web es un trabajo duro. La parte de mí que aborrece la cantidad de JavaScript que enviamos tiene dificultades para saber dónde trazar la línea cuando demasiado es demasiado. La experiencia del desarrollador tiene un papel en nuestro trabajo diario, y necesitamos lo suficiente para engrasar los patines, pero también sin arruinar la experiencia del usuario. Porque, como nos dicen nuestros documentos fundamentales, los usuarios son los primeros en ser considerados.
Entonces, ¿qué aprendí este año?
Lo mismo aprendo cada año, sólo que de una manera sutilmente diferente cada vez: existen costos y compensaciones asociadas con nuestras elecciones tecnológicas. Este año volvió a aprender, de manera clara y presente, cómo nuestras elecciones tecnológicas pueden encerrarnos en arquitecturas que pueden dañar la experiencia del usuario si no actuamos con cuidado y que cada vez es más difícil salir de ellas cuando es necesario.
Otra cosa que aprender es que usar la plataforma es un trabajo duro. Sin embargo, cuanto más lo uso, más fuerte se vuelve mi comprensión de sus abstracciones. El uso directo de la plataforma no siempre es la mejor manera o la más escalable de trabajar, pero úselo de forma regular en lugar de instalar cualquier paquete que elimine cualquier picazón que tenga en este segundo me ayuda a comprender cómo funciona la web en un nivel más profundo. . Se trata de un conocimiento valioso que se amortiza con el tiempo, y sin él la capacidad de crear abstracciones útiles se vuelve más difícil.
Finalmente, este año aprendí una vez más que nuestras limitaciones son variables. Es aceptable que algunas cosas no funcionen tan bien como deberían en todas partes, pero debemos ser muy conscientes de cuáles son esas cosas. Cuán aceptables esas lagunas en nuestra responsabilidad hacia el público dependen de la función que desempeñamos. Si se trata de una función remotamente crucial, debemos proceder con el máximo cuidado y consideración hacia los usuarios. Si este año de aumento del desempleo y aprendizaje remoto nos ha enseñado algo es que Internet sirve para algo más que el comercio.
Mi esperanza es que la Web se vuelva más adaptable en 2021 que en años anteriores. Espero que comencemos a tener las mismas expectativas sobre la experiencia del usuario que teníamos cuando éramos niños jugando juegos de PC (que una experiencia puede variar en su fidelidad para adaptarse a sistemas más lentos) y eso es algo perfectamente bueno para la web. Ciertamente, es más flexible que esperar que todos tengan exactamente la misma experiencia, ya sea que estén en un iPhone 12 o en un teléfono Android Go.
Deja un comentario