Optimización de código en un mundo que no quiere optimizar
Publicado: 2019-11-22La optimización prematura es la fuente de todos los males.
Es un dicho común entre los desarrolladores. Que tiene sentido. La optimización prematura puede significar rehacer el trabajo más adelante, y el tiempo es el recurso más finito del desarrollador. Puede significar gastar ese valioso tiempo optimizando escenarios que aún no existen para los usuarios de un producto. Puede significar escribir código que es más difícil de entender con ganancias de rendimiento poco claras.
Mientras participaba con el equipo de revisión de temas de WordPress hace aproximadamente un año, me encontré con ese consejo una vez más. La optimización prematura es la fuente de todos los males. La respuesta fue para un autor de tema que buscaba disminuir la cantidad y el peso de los scripts que su tema necesitaba cargar. Por un lado, el autor del tema podría cargar un script de 1,29 kb sin dependencias para realizar el trabajo. La otra opción era usar el script dependiente de jQuery incluido en el núcleo de WordPress para un total de 105 kb porque "la mayoría" de los sitios de WordPress están cargando jQuery de todos modos.
Para mí, la respuesta era simple. Use la secuencia de comandos más pequeña a menos que la secuencia de comandos central ya se haya cargado en la interfaz. No pensé en ello en términos de optimización prematura . Pensé en ello como una optimización normal y corriente de todos los días.
Los desarrolladores no deben confundir la optimización prematura con el concepto de tomar decisiones de diseño inteligentes al principio del proceso. Tampoco deben esperar hasta la etapa final de desarrollo para comenzar a optimizar, un momento en el que la atención se centra en llevar un producto a los usuarios finales. Esa es una señal de un proceso de diseño de producto deficiente.
Durante el año pasado, esa conversación se me quedó grabada. Me ayudó a ser más consciente de una tendencia aterradora, no solo en la comunidad de desarrolladores de WordPress, sino en el desarrollo web en general. Con demasiada frecuencia, los desarrolladores están tan alejados de los usuarios normales y la tecnología en la que confían esos usuarios para esa optimización es poco más que una ocurrencia tardía. En su lugar, siempre debe estar en la vanguardia de la mente de cualquier desarrollador.
La confianza excesiva en esta cita mal utilizada ha ayudado a impulsar la tendencia de medir el peso de la página en megabytes en lugar de kilobytes. Con demasiada frecuencia se utiliza como una justificación general para no realizar ninguna optimización en la fase de desarrollo mientras se compensa con la compresión de archivos y el almacenamiento en caché en producción.
Parte de escribir código de calidad es optimizar ese código durante cada etapa del proceso de desarrollo. Se trata de tomar decisiones difíciles para cortar cosas innecesarias a medida que se une el software. El almacenamiento en caché debe ser el último recurso después de que se haya limpiado todo lo demás.
La optimización prematura se trata más de intentar optimizar cuando no hay ganancias claras o de trabajar en microoptimizaciones que alteran el diseño del software para obtener un beneficio mínimo o nulo. No significa pasar por alto los aumentos de rendimiento obvios durante el desarrollo.
No todo el mundo está en Gigabit Internet
La mayoría de los desarrolladores que conozco tienen conexiones a Internet súper rápidas, a menudo con velocidades de descarga de 1 Gbps y datos ilimitados. En esa situación, es fácil olvidar que gran parte del mundo todavía tiene conexiones lentas con límites de datos.
Algunos incluso pueden asociar las conexiones lentas con países del tercer mundo donde millones de personas utilizan tecnología de telefonía celular 2G. Sin embargo, hay grandes franjas de los Estados Unidos y otros países desarrollados que no tienen líneas directas de cable o DSL, que comúnmente están disponibles en ciudades y suburbios.

Esta desconexión es directamente evidente cuando otros desarrolladores han iniciado conversaciones conmigo. En los últimos años, ha sido cada vez más común que soliciten un chat de video. Ni siquiera se cuestiona si tal cosa es posible (los chats de video no son confiables en el mejor de los casos para mí). La capacidad de chatear por video en cualquier momento se da por sentado.
Hay dos opciones de servicio de Internet en el área en la que vivo: satélite o acceso telefónico. Incluso la compañía telefónica local se niega a ofrecer DSL en esta área debido a los costos de infraestructura con líneas telefónicas de décadas de antigüedad. Debido a los costos prohibitivos del acceso a Internet satelital, que generalmente viene con límites de datos, muchos se quedan atrapados con el acceso telefónico. Las compañías de telefonía celular están cambiando el juego hasta cierto punto, suponiendo que el servicio sea confiable, pero hay inconvenientes al seguir esa ruta, que pueden incluir limitaciones de datos o puntos de acceso.
Para un país tan tecnológicamente avanzado, muchos de sus habitantes apenas se están poniendo al día donde otros estaban hace una década.
Si bien tengo la suerte de elegir dónde vivir y nada me impide mudarme, la mayoría no tiene esa opción. Están atrapados con lo mejor que pueden pagar. Incluso en las zonas rurales, Internet es una parte ineludible de la vida diaria, y los desarrolladores no se lo ponen fácil a estas personas.
Si bien esto es anecdótico, es la cruda realidad de la vida rural en los bolsillos de los EE. UU.
La ventaja de vivir en los bosques de Alabama es que ha cambiado mi perspectiva como desarrollador. Ha significado que necesitaba cuestionar cada decisión de código para cada complemento y tema que construí. Con los límites de datos, necesitaba asegurarme de que no estaba usando demasiados recursos.
Más que nada, tener un límite de datos cambió la forma en que usaba Internet. Ahora ejecuto un bloqueador de anuncios. Tengo una extensión para eliminar videos de la carga automática. Desactivo JavaScript en sitios pesados que necesito usar. Algunos sitios parecen interesantes, pero nunca vuelvo a ellos porque consumen muchos recursos.
Cuando vives en un lugar donde cada byte importa, tiendes a evitar desperdiciarlos.
Si bien no siempre tuve éxito, desde mi transición a la vida de un pueblo pequeño, he intentado crear aplicaciones de una manera que sirviera a las personas que no tienen el privilegio de tener un acceso a Internet ultrarrápido.
Señalar esto es asegurarse de que los desarrolladores sean conscientes de que la optimización es importante. Importa en cada etapa del proceso de desarrollo. Es importante porque estas personas con conexiones lentas y límites de datos también necesitan comprar productos, usar servicios, leer contenido y hacer todas las demás cosas que la gente hace en la web.
Si usted es un desarrollador que está pensando en agregar ese control deslizante, un mecanismo de deslizamiento para dispositivos móviles o algún otro dispositivo ingenioso, piense en aquellos que deben esperar a que se cargue esa función. Compruebe que sus dependencias no estén cargando demasiados recursos adicionales. Investigue un poco para ver si puede encontrar una implementación más liviana. Pero, primero, pregúntate si es necesario.
Los temas y complementos que crean los desarrolladores de WordPress nunca deben ser el cuello de botella de un sitio web. Podemos hacerlo mejor.
