Filosofía Completa de la Programación: Principios, Prácticas y Crecimiento Profesional | Original, traducido por IA

Home 2025.01

Tabla de Contenidos

  1. Programación
    • La programación como actividad creativa
    • Desarrollo de proyectos personales
    • Tendencias tecnológicas y aprendizaje por curiosidad
    • Filosofía de depuración y resolución de problemas
    • Desarrollo centrado en el usuario
    • Calidad del código y simplicidad
    • Integración de IA y automatización
  2. Convertirse en un Ingeniero Ilimitado
    • Trabajar dentro de las limitaciones corporativas
    • Maximizar los recursos internos
    • Construcción de herramientas en la era de la IA
    • Transformación de mentalidad
    • Romper limitaciones percibidas
  3. Beneficios de Acumular Registros
    • Gestión de registros en entornos corporativos
    • Contexto histórico y resolución de problemas
    • Estrategias de organización de archivos de registro
    • Mantenimiento de proyectos a largo plazo
    • Preservación y compartición de conocimiento
    • Métodos automatizados de recolección de registros

Programación


Convertirse en un Ingeniero Ilimitado


Beneficios de Acumular Registros

Cuando trabajé como contratista para un banco antes, usamos una plataforma de aplicaciones multicloud para servir los microservicios. En ese momento, comencé a acumular registros mientras trabajaba en la empresa.

Varios años han pasado, y todavía pienso que es una de las mejores maneras de ayudarme a trabajar o hacer ingeniería de software. Con el tiempo, en mi directorio de registros, hay cientos de archivos de registro.

No tengo subdirectorios específicos o nombres formales de archivos de registro para esos. A veces, solo uso el nombre de esa tarea JIRA como prefijo del nombre de mi archivo de registro o esa característica. Y luego agrego un número como sufijo. Es como mutual-fund-1.log, mutual-fund-2.log, etc. Significa que en el microservicio de fondos mutuos, tengo ese registro al ejecutar ese microservicio.

A veces, cuando trabajo en proyectos que sirven a múltiples regiones, agregaré ese país como sufijo, como mutual-fund-cn-1.log, mutual-fund-sg-1.log. Los nombres de los archivos de registro son algo casuales. Porque en ese momento, necesitaba concentrarme en los rastreos de errores o las llamadas de funciones circundantes.

Los registros de los programas importan. Todos lo saben. Sin embargo, quiero recalcar la importancia de acumular registros en lugar de solo verlos en la consola y dejarlos ir. Sabrás más comodidad a medida que el proyecto avanza. Tienes más tiempo para encontrar registros anteriores. Puede que necesites saber si una llamada similar a un procedimiento almacenado de base de datos ocurrió antes. Puede que necesites saber si el mismo error ocurrió antes. Puede que necesites recordar cómo solucionaste este problema la última vez.

Hay toneladas de detalles en un gran proyecto o decenas de microservicios. Y los errores, excepciones o problemas ocurren una y otra vez. El registro es como el documento en ejecución de un programa. Y son generados por el programa automáticamente sin que los humanos escriban. Y para los desarrolladores, estos registros son legibles. Entonces, al comenzar una nueva tarea o corregir un nuevo error, tienes cientos de registros en tus manos para solucionar este nuevo error. No estás solo.

¿Por qué los acumulamos? Porque las cosas o el conocimiento se olvidan fácilmente.

Hubo progreso en la civilización humana cuando se inventó el papel. Y cuando se inventaron las computadoras, hubo otro nivel de civilización humana. Tomar notas en papel es como acumular registros en computadoras.

No solo para los humanos, sino para los chatbots de IA, las herramientas LLM, estos registros son cada vez más importantes. GreptimeDB, una base de datos para la recolección y análisis unificado de datos de observabilidad (métricas, registros y trazas) establecida en 2022 no es una coincidencia.

¿Por qué no lo hice antes? Después de trabajar como contratista para grandes bancos, necesitaba hacer más colaboración y trabajar en proyectos más grandes. Antes de eso, la mayor parte del tiempo en la startup o mi período de startup, trabajé solo. Cuando trabajé en LeanCloud antes, trabajé en la aplicación IM LeanChat como la mitad del tiempo.

Y cuando entré en el mundo corporativo más formal, el desarrollo de los proyectos era diferente de mi proyecto personal o proyecto de startup. Tienen entornos de prueba SIT, UAT. Y el entorno de producción a menudo solo está abierto a ciertos compañeros de equipo pequeños. Obtener los registros de ellos y solucionar problemas se vuelve largo y algo tedioso. Y ejecutar un proyecto lleva tiempo, y la tubería de Jenkins a menudo necesita media hora para ejecutarse.

Así que no puedo ejecutar o probar el programa como una mosca. No puedo hacer una implementación simplemente escribiendo un comando en mi computadora personal y cargando código al servidor para ejecutarlo.

Entonces, de alguna manera, me hace acumular registros para tener más contexto para manejar tareas. Es mejor solucionar problemas al primer intento. Es mejor verificar nuestra solución en solo unas pocas veces. No podemos obtener fácilmente los registros del programa que se ejecuta en una nube o el servidor de la empresa, así que es mejor copiarlo y guardarlo en la laptop local, para hacer análisis.

Y ahora, para mis proyectos personales, también acumularé los registros. Se convierte en un hábito. Después de trabajar en grandes empresas por algunos años, de alguna manera tengo más paciencia o estrategia para hacer que mis proyectos sean más grandes y largos. Así que sé que necesitaré estos registros con el tiempo.

Alguien podría decir que solo necesitas tener código elegante y un proyecto funcional. No necesitas acumular los registros o trazas de errores. Está bien. Cuando tenemos un error o una nueva característica, podemos ejecutar el programa para obtener los registros actuales. No necesitamos los registros del proceso de desarrollo. Son como los registros detallados de experimentos científicos. A primera vista, parece bien. Pero a largo plazo, si un día quieres trabajar en ello nuevamente, o quieres compartirlo, o dejar que otros lo tomen, puede que no sea bueno.

Creo que podría haber buenas oportunidades aquí. En las empresas, ¿por qué no animamos a cada desarrollador a compartir sus registros acumulados? En proyectos de código abierto, también deberíamos tener eso. No encontramos los registros de otros atractivos porque no los conocemos. Perdemos el contexto al guardar esos registros. Y dentro de ellos, parecen haber toneladas de mensajes no relacionados o triviales.

Pero el esfuerzo por acumular registros es trivial. Es solo copiar y pegar cada vez que vemos algunos registros, especialmente esos registros de error. ¿Y qué tal si lo hacemos de manera automatizada? Es una buena idea registrar los registros en un directorio cada vez que ejecutamos un proyecto, como esos proyectos Spring Boot.

El mundo se vuelve cada vez más digital, por lo que acumular registros de programas digitales es como acumular libros en un mundo físico.


Back Donate