Y al mismo tiempo, guiarlos para no enviar cosas incorrectas o inconsistentes y llevarlos a ese pozo de éxito por defecto. Y para llegar allí, una gran parte del trabajo de nuestro equipo es construir un sistema de diseño, que es una biblioteca de componentes consistentes con buenas APIs y documentación y seguridad de tipos y accesibilidad incorporada. Porque esos componentes necesitan ser fácilmente descubribles para que los desarrolladores de productos puedan componerlos y enviarlos rápidamente sin romper cosas.
Y para el segundo punto, estamos trabajando activamente en restricciones. Eso significa configurar TypeScript y linting, pero también la estructura del proyecto y la documentación y la enseñanza y también las habilidades de IA hoy en día juegan un gran papel en eso. Así que, en resumen, intentamos llevar la base de código general de Sentry que ha crecido orgánicamente durante los últimos 10 años a una buena forma para que tanto los humanos como sus agentes puedan enviar rápido. Y eso significa que tenemos que tocar muchas partes de la base de código regularmente.
Por ejemplo, mi primer PR en Sentry tocó más de 900 archivos porque habilité la configuración del compilador no implicit any, lo cual me sorprendió mucho que no estuviera activado, para ser honesto. Y mientras hacía esto y algunas otras mejoras, a veces me preguntaba si tal vez debería, ya sabes, verificar la cordura de las cosas que estaba tocando o al menos averiguar dónde se usan. Y a veces resulta que no se usaban en absoluto.
Así que cuando introduje el plugin ESLint query para verificar si los hooks de React query están funcionando eficientemente, obtuve un montón de violaciones, como en este hook, e intenté arreglarlas. Y después de luchar con esto por un tiempo, quise averiguar dónde se usaba. Y resulta que no se usaba en absoluto en la base de código. Así que pensé para mí mismo, OK, eso es todo. No más. Esto me está ralentizando. Estoy perdiendo mucho tiempo aquí. Tengo que limpiar la casa porque el código no utilizado tiene un costo real. Significa que los desarrolladores pasarán tiempo leyendo y tratando de entenderlo, tal vez incluso refactorizando código que no debería estar allí en primer lugar.
Y creo que esto se vuelve aún más importante en la era de la IA, donde generar código extra es fácil, pero mantenerlo a lo largo del tiempo es realmente difícil, y cada línea de código no utilizada podría aún consumir tokens o inflar la ventana de contexto de los agentes. Y las actualizaciones de bibliotecas o cambiar las reglas de lint se vuelven más dolorosas cuanto más usos tenemos, porque esas herramientas no se preocupan si el código se usa o no. Si existe, tiene que estar libre de errores. Y podría incluso aumentar nuestro tamaño de paquete si no se elimina correctamente con tree-shaking, por ejemplo, si tenemos módulos con efectos secundarios.
Así que, en general, creo que el código no utilizado es un dolor. Aumenta la carga cognitiva. Y por eso deberíamos preocuparnos por ello. Nos ralentizará. Entonces, ¿cómo terminamos aquí? Bueno, me gusta pensar que los ingenieros son generalmente seres responsables que les gusta limpiar después de sí mismos, pero en verdad, tenemos que ser constantemente recordados sobre las formas más básicas de limpieza. Y creo que con razón estamos impulsados por errores, porque TypeScript nos da mucha confianza. Toma todas esas dependencias que solían estar en nuestra cabeza, y las hace explícitas en el código.
Comments