El diseño de software flexible supera los modelos de dominio rígidos

2025-09-08

Este artículo cuestiona el principio popular de diseño de software de vincular estrechamente el código al modelo de dominio. El autor argumenta que enfatizar demasiado la evitación de estados inválidos, como mediante esquemas de bases de datos estrictos y restricciones de tipo, limita la flexibilidad del software y dificulta el manejo de excepciones inevitables del mundo real. Utilizando máquinas de estado y restricciones de clave externa como ejemplos, el autor demuestra cómo permitir transiciones de estado arbitrarias manteniendo el diseño central simple, mejorando así la adaptabilidad y la mantenibilidad del software. En última instancia, el autor aboga por permitir la representación de algunos estados inválidos en el software orientado al usuario para hacer frente a los requisitos en evolución y las circunstancias imprevistas.

Leer más
Desarrollo modelo de dominio

Lo más simple que pueda funcionar: Una filosofía de diseño de software

2025-08-30

Este artículo aboga por el principio de 'hacer lo más simple que pueda funcionar' en el diseño de software. En lugar de aspirar a un sistema idealizado y sobrediseñado, el autor defiende una comprensión profunda del sistema actual y la elección de la solución más simple. Este enfoque, aunque aparentemente poco impresionante, produce resultados sorprendentemente efectivos, ejemplificados por los diseños de Unix y Rails. Si bien existen desafíos como la inflexibilidad del sistema y la definición de 'simplicidad', el autor argumenta que centrarse en las necesidades actuales y la mejora iterativa es superior al sobrediseño para requisitos futuros lejanos. En última instancia, un sistema simple y estable a menudo supera a un sistema sobrediseñado y difícil de mantener.

Leer más
Desarrollo simplicidad

Consejos profesionales peligrosos: una herramienta poderosa para ingenieros fuertes

2025-08-26

Este artículo argumenta que los consejos profesionales efectivos, al igual que las herramientas afiladas, pueden ser inmensamente útiles o increíblemente dañinos, dependiendo de su uso. Muchos consejos profesionales son superficiales y carecen de aplicación práctica. El autor anima a los ingenieros a adoptar 'consejos peligrosos', rompiendo las convenciones para lograr una alta eficiencia. Aunque arriesgado, las recompensas superan los riesgos para los ingenieros fuertes. El autor advierte que este consejo no es adecuado para ingenieros más débiles.

Leer más
Desarrollo

El Arte del Diseño de APIs: Equilibrio entre Simplicidad y Flexibilidad

2025-08-25

Este artículo profundiza en los principios cruciales del diseño de APIs, enfatizando la importancia de evitar cambios que rompan el código existente de los usuarios. El autor argumenta que las buenas APIs deben ser simples y fáciles de usar, pero también deben mantener flexibilidad a largo plazo. El artículo detalla aspectos técnicos como el control de versiones de APIs, la idempotencia, la limitación de velocidad y la paginación, y recomienda el uso de claves de API para la autenticación, para facilitar el uso por parte de usuarios que no son ingenieros. Concluye que un gran producto supera a una API perfecta, pero un producto mal diseñado inevitablemente resultará en una API deficiente.

Leer más
Desarrollo

Buen Diseño de Sistemas: No se trata de trucos inteligentes

2025-08-16

Este artículo critica los diseños de sistemas centrados en técnicas llamativas, argumentando que un buen diseño de sistemas prioriza la simplicidad y la fiabilidad en lugar de mecanismos complejos de consenso distribuido o CQRS. El autor enfatiza la importancia de la gestión del estado, abogando por minimizar los componentes con estado. Aspectos clave como el diseño de bases de datos (esquemas, índices), el almacenamiento en caché, los trabajos en segundo plano, las arquitecturas orientadas a eventos y el manejo de cuellos de botella se discuten con detalle. El artículo destaca la importancia de aprovechar las capacidades de la base de datos, evitando el procesamiento innecesario en memoria. Destaca la importancia de las rutas críticas, el registro de logs y la monitorización, junto con estrategias de tolerancia a fallos como disyuntores, reintentos y degradación elegante. En última instancia, el autor defiende un diseño discreto y eficaz construido sobre componentes bien probados, rechazando las técnicas llamativas en favor de una funcionalidad robusta.

Leer más
Desarrollo

Entrenando el Modelo Más Potente en un MacBook Pro en 5 Minutos: Un Desafío

2025-08-14

El autor se retó a entrenar el modelo de lenguaje más potente posible en un MacBook Pro en solo cinco minutos. Los experimentos culminaron en un Transformer de estilo GPT con aproximadamente 1,8 millones de parámetros, entrenado con aproximadamente 20 millones de tokens de TinyStories, alcanzando una perplexidad de aproximadamente 9,6. Las optimizaciones se centraron en maximizar los tokens por segundo, favoreciendo MPS y evitando la acumulación de gradiente. La selección del conjunto de datos fue crucial, siendo el lenguaje simple y coherente de TinyStories superior. Los Transformers superaron a las LSTMs y a los modelos de difusión. El tamaño de modelo óptimo para una ventana de entrenamiento de cinco minutos resultó ser de alrededor de 2 millones de parámetros, lo que coincide con las leyes de escalado de Chinchilla.

Leer más
IA

Agentes de codificación de IA: El secreto no existe

2025-07-05

En 2024, se pensaba que construir agentes de codificación autónomos requería trucos internos inteligentes. Resulta que todo lo que necesitas es un modelo base ligeramente mejor. Claude Sonnet 3.7 es uno de los líderes, destacándose no por su potencia bruta, sino por su capacidad de persistir y tomar buenas decisiones. La barrera de entrada para construir agentes de codificación de IA ha caído drásticamente; las soluciones de código abierto son excelentes, e incluso puedes ejecutar un agente Codex gratis en GitHub Actions. La competencia es feroz; los proveedores deben centrarse en la distribución y el entrenamiento de mejores modelos para tener éxito.

Leer más

¿Agentes de IA: El próximo gran desastre de IA?

2025-06-11

Este artículo explora posibles desastres futuros de IA. Trazando paralelismos con los primeros accidentes ferroviarios y aéreos, el autor argumenta que las catástrofes de IA a gran escala son una posibilidad real. En lugar de centrarse en la simple desinformación de la IA, el autor enfatiza los riesgos que plantean los agentes de IA: IAs capaces de realizar tareas de forma autónoma, como búsquedas en la web y el envío de correos electrónicos. El autor predice que el primer gran desastre de IA probablemente se deba a un mal funcionamiento de un agente de IA en sistemas gubernamentales o corporativos, como la ejecución errónea de procesos de cobro de deudas, atención médica o arrendamiento. Además, el autor destaca los posibles peligros de los modelos de IA que se utilizan indebidamente para crear robots 'compañeros ideales'. En resumen, el autor advierte contra el rápido avance de la IA y sus riesgos potenciales, instando a que se implementen medidas de seguridad de IA más sólidas.

Leer más
IA

Artículo de Apple desafía el razonamiento de la IA: ¿No es razonamiento 'real'?

2025-06-09

Un artículo reciente de Apple, "La ilusión del pensamiento", prueba la capacidad de razonamiento de los grandes modelos de lenguaje en rompecabezas de la Torre de Hanói. Los resultados muestran que los modelos funcionan peor que los modelos no racionales en problemas simples; mejor en problemas de dificultad media; pero en problemas complejos, los modelos se rinden, incluso cuando se proporciona el algoritmo. Los autores cuestionan las capacidades de razonamiento generalizables de los modelos. Sin embargo, este artículo argumenta que el uso del rompecabezas de la Torre de Hanói en el artículo es defectuoso como prueba. La 'renuncia' de los modelos puede provenir de la evasión de numerosas etapas, no de una capacidad de razonamiento limitada. Renunciar después de un cierto número de etapas no significa que los modelos carezcan de razonamiento; esto refleja el comportamiento humano en problemas complejos.

Leer más
IA

¿Por qué algunos LLMs son rápidos en la nube, pero lentos localmente?

2025-06-01

Este artículo explora por qué los modelos de lenguaje grandes (LLMs), especialmente los modelos Mixture-of-Experts (MoE) como DeepSeek-V3, son rápidos y baratos de servir a escala en la nube, pero lentos y caros de ejecutar localmente. La clave está en la inferencia por lotes: las GPUs sobresalen en las multiplicaciones de matrices grandes, y procesar por lotes varias solicitudes de usuario mejora significativamente el rendimiento, pero aumenta la latencia. Los modelos MoE y los modelos con muchas capas dependen particularmente del procesamiento por lotes para evitar cuellos de botella en el pipeline y la subutilización de expertos. Los proveedores de nube equilibran el rendimiento y la latencia ajustando el tamaño del lote (ventana de recolección), mientras que las ejecuciones locales suelen tener una sola solicitud, lo que lleva a una utilización muy baja de la GPU. La eficiencia de los servicios de OpenAI puede deberse a una arquitectura de modelo superior, trucos inteligentes de inferencia o GPUs mucho más potentes.

Leer más

Comprensión superficial de la tecnología: suficientemente bueno es suficientemente bueno

2025-05-27

El autor argumenta que una comprensión superficial de las tecnologías que los ingenieros usan es suficiente. Profundizar en índices de bases de datos, modelos de lenguaje grandes, etc., permite una mejor toma de decisiones; por ejemplo, elegir modelos apropiados para la salida JSON y evitar errores causados por limitaciones en modelos más pequeños. En lugar de profundizar en un área, el autor aboga por un amplio conocimiento en muchas áreas para adaptarse mejor a las nuevas tendencias. Aprender nuevas tecnologías debe centrarse en comprender los principios fundamentales y explicarlos de forma sencilla a otras personas, mientras se utilizan LLMs para la verificación de hechos para garantizar la precisión.

Leer más
Desarrollo

Gemini Diffusion: ¿El Velocista de la Generación de Texto?

2025-05-22

El recién lanzado Gemini Diffusion de Google está impresionando a todos con su velocidad; incluso ralentizaron la demostración para que fuera visible. Este artículo profundiza en por qué los modelos de difusión son tan rápidos, contrastándolos con los modelos autoregresivos tradicionales (como GPT-4, Claude). Los modelos de difusión generan toda la salida a la vez, en lugar de token por token, permitiendo la generación paralela de partes correctas y velocidades más rápidas mediante iteraciones reducidas. Sin embargo, son menos eficientes con contextos largos y sus capacidades de razonamiento siguen siendo cuestionables. Si bien los modelos de difusión pueden usar transformadores internamente, su arquitectura los hace fundamentalmente diferentes de los modelos autoregresivos.

Leer más

El Superpoder de la IA: Paciencia, No Inteligencia

2025-05-20

Sam Altman imaginó que la inteligencia se volvería 'demasiado barata para medir', y con el capital de riesgo impulsando el auge de la IA, estamos viviendo en ese mundo. Sin embargo, la demanda de los usuarios de modelos significativamente más inteligentes no está explotando. Este artículo argumenta que el aspecto más transformador de los LLM no es su inteligencia, sino su paciencia sobrehumana: siempre disponible, sin juicios e infinitamente dispuesta a escuchar. Si bien esta paciencia puede amplificar los defectos existentes de los LLM (como la adulación) y los LLM no deben reemplazar a los terapeutas, esta capacidad ha impactado profundamente la forma en que las personas buscan apoyo emocional y consejos.

Leer más

Modelos de Difusión: Los Héroes No Reconocidos de la Generación de Imágenes con IA

2025-05-19

A diferencia de los modelos de lenguaje basados en transformadores, los modelos de difusión generan imágenes eliminando ruido progresivamente de una imagen ruidosa. El entrenamiento implica enseñar al modelo a identificar el ruido añadido, permitiéndole generar imágenes a partir de ruido puro. Esto es similar a la escultura, refinando gradualmente un bloque áspero de piedra en una obra maestra. Aunque todavía está en fase inicial para texto, los modelos de difusion muestran una gran promesa en la generación de imágenes y videos, como se ve en Sora de OpenAI y VEO de Google. El núcleo reside en cómo modela la relación entre ruido y datos, un contraste marcado con el enfoque de los transformadores en la estructura del lenguaje.

Leer más
IA

Terminar tareas en grandes empresas tecnológicas: No es lo que piensas

2025-05-06

En las grandes empresas tecnológicas, los ingenieros competentes pueden caer fácilmente en la trampa de mejorar continuamente los sistemas existentes, descuidando la entrega real de valor. Este artículo argumenta que "terminar" el trabajo no significa un refinamiento interminable, sino llegar a un punto en el que los tomadores de decisiones de la empresa estén satisfechos. ¡Declara la victoria y sigue adelante! Esto requiere hacer que tu trabajo sea visible y comprensible para esos tomadores de decisiones, quizás demostrando un impacto financiero. En última instancia, "terminar las tareas" es una construcción social, pero poderosa, que impacta en tu carrera.

Leer más
Desarrollo

Deja de ser indeciso en las discusiones técnicas: asume tus decisiones

2025-04-14

Los ingenieros sénior a menudo evitan comprometerse con las decisiones en las discusiones técnicas, un enfoque aparentemente cauteloso que el autor argumenta que en realidad es cobardía. El artículo enfatiza que, cuando un equipo necesita tomar una decisión, incluso con solo un 55% de confianza, el ingeniero más experimentado debe asumir la responsabilidad y ofrecer un juicio. Esto evita que los ingenieros menos experimentados propongan soluciones deficientes y permite que la gerencia trabaje de manera más eficiente. El autor destaca que la gerencia suele ser tolerante con los errores técnicos, ya que la toma de decisiones implica incertidumbre de forma inherente. Sin embargo, los juicios consistentemente incorrectos erosionan la credibilidad. El artículo concluye que, si bien evitar el compromiso es justificable en entornos sin confianza, en la mayoría de las situaciones, asumir la responsabilidad y tomar decisiones audaces es una característica de un buen ingeniero.

Leer más

¡Deja de perder el tiempo en trabajo improductivo!

2025-04-07

Muchos ingenieros se centran en trabajos no lucrativos, como mejoras de rendimiento y accesibilidad, solo para ser despedidos por no ser valorados. El artículo argumenta que las empresas de tecnología están impulsadas por el beneficio, y el valor de un ingeniero está directamente relacionado con la contribución de su trabajo a ese beneficio. El autor aconseja a los ingenieros que comprendan el modelo de negocio de sus empresas, conecten su trabajo con la rentabilidad y, así, aseguren su puesto. Incluso los trabajos aparentemente improductivos pueden generar valor a escala en grandes empresas.

Leer más

Ruby: ¿El lenguaje inesperado de la revolución de la IA?

2025-03-22

Los grandes modelos de lenguaje (LLM) son excelentes en la generación de código, pero sus ventanas de contexto limitadas dificultan el trabajo con grandes bases de código. Este artículo explora el 'poder' de la programación asistida por LLM: ¿cuántos tokens se necesitan para expresar un programa? El autor argumenta que Python supera a Go para LLM debido a su concisión, permitiendo más funciones dentro de los límites de tokens. Además, Ruby, conocida por su elegancia y brevedad, se presenta como un lenguaje ideal para LLM debido a su uso eficiente de tokens. Si bien persisten desafíos como la verificación de tipos, el diseño centrado en el humano de Ruby, irónicamente, lo convierte en un posible líder para LLM.

Leer más
Desarrollo

El Fin de la Edad de Oro: Ingeniería de Software en un Mundo Tecnológico Post-Boom

2025-03-16

Durante una década, la ingeniería de software fue un trabajo soñado: altos salarios, excelentes beneficios y seguridad laboral sólida. Pero los últimos dos años han visto despidos masivos en toda la industria tecnológica, cambiando el panorama drásticamente. Este artículo argumenta que el cambio se debe a un cambio en las condiciones económicas. Las tasas de interés bajas alimentaron gastos extravagantes y una compensación generosa para los ingenieros, pero las tasas crecientes han priorizado la rentabilidad, lo que ha llevado a recortes generalizados. Si bien a menudo se culpa a la IA, el autor sostiene que no es la causa principal. La nueva realidad exige un enfoque en contribuir directamente a los objetivos de la empresa; la incapacidad de adaptarse arriesga la seguridad laboral. Si bien los días de mimos han terminado, centrarse en brindar valor ofrece un camino más claro, aunque menos glamoroso, hacia el éxito.

Leer más

La simplicidad gana: La esencia de un buen diseño de software

2025-03-07

Este artículo argumenta que un buen diseño de software no se trata de características de lenguaje complejas o arquitecturas sofisticadas, sino de eliminar posibles modos de falla. El autor utiliza anécdotas personales para ilustrar cómo eliminar componentes redundantes, centralizar la gestión del estado y utilizar sistemas robustos minimiza los riesgos y aumenta la fiabilidad. El mensaje principal es que un buen diseño es simple y fiable, evitando funciones llamativas y centrándose en la resolución de problemas. El autor cita el servidor web Unicorn como un excelente ejemplo de este enfoque.

Leer más
Desarrollo Modos de Falla

Dominando el foco: Priorización en tecnología

2025-03-07

En el mundo acelerado de la tecnología, no todo el trabajo es igual. Este artículo destaca que la mayoría de las tareas de alta prioridad son, en realidad, de bajo impacto. El éxito depende de reconocer los momentos de 'foco' - proyectos que reciben una atención intensa de la gerencia. Los ingenieros deben desarrollar la capacidad de identificar y aprovechar rápidamente estas oportunidades, dedicándose a proyectos de alto impacto. Por el contrario, cuando el foco no está sobre ellos, aprovechar el tiempo personal para proyectos valiosos mejora las habilidades y las contribuiciones a la empresa. Esto requiere no solo juicio, sino una habilidad perfeccionada con la práctica.

Leer más
Desarrollo

La Revolución de la IA en la Ingeniería de Software

2025-02-15

Los modelos de lenguaje grandes (LLMs) están mejorando rápidamente su capacidad para escribir código, lo que lleva a la exploración de ingenieros de software puramente de IA. A corto plazo, los ingenieros de software deben aprender IA, mejorar su estatus y aprovechar las herramientas de IA. A medio plazo, la experiencia en mantener y mejorar grandes bases de código heredadas se volverá cada vez más valiosa, ya que los LLMs todavía tienen dificultades con proyectos complejos, difíciles de verificar y que implican cantidades masivas de código. A largo plazo, la competencia central de los ingenieros de software cambiará hacia la responsabilidad y la confiabilidad, cualidades que los LLMs encuentran difíciles de replicar. En última instancia, los ingenieros que puedan supervisar los sistemas de IA y garantizar la fiabilidad de sus resultados serán los últimos en irse.

Leer más
Desarrollo

Cómo uso los LLMs para impulsar mi flujo de trabajo de ingeniería

2025-02-04

Un ingeniero de software senior comparte sus aplicaciones prácticas de los modelos de lenguaje grandes (LLMs) en su flujo de trabajo diario. Utiliza los LLMs para el autocompletado de código, la escritura de código desechable, el aprendizaje de nuevos dominios, la depuración de último recurso y la corrección de documentos. Destaca que los LLMs no sustituyen a la lógica central o la escritura formal, sino que son una ayuda poderosa, particularmente eficaz para abordar bases de código desconocidas o aprender nuevas tecnologías. La clave está en utilizarlos estratégicamente, sin esperar milagros.

Leer más

Deja de ser un zombi de JIRA: prioriza el impacto sobre los tickets

2025-01-25

Esta publicación perspicaz comparte una valiosa lección aprendida por un ingeniero: no te quedes atascado completando tickets de JIRA; concéntrate en proyectos estratégicamente importantes. La verdadera productividad no se trata de cerrar más tickets, sino de priorizar lo que la gerencia considera crucial. El autor describe métodos para identificar tareas de alto impacto, como centrarse en incidentes de alta visibilidad, preguntas sin respuesta y plazos de proyectos. Una anécdota personal ilustra la frustración de centrarse en tareas menos importantes, abogando por una priorización implacable y la concentración en proyectos que aportan valor real. ¿El resultado? Mayor impacto en menos tiempo.

Leer más
Desarrollo

Experiencia de un ingeniero australiano trabajando para empresas tecnológicas estadounidenses: zonas horarias, cultura y estabilidad

2025-01-12

Un ingeniero australiano comparte su experiencia de una década trabajando para empresas de tecnología estadounidenses. Describe los desafíos de la colaboración entre zonas horarias: las mañanas se dedican a ponerse al día con el trabajo realizado durante la noche, pero las tardes ofrecen un tiempo valioso de concentración. Si bien la soledad puede ser un problema, el fuerte trabajo en equipo y la cultura de documentación lo mitigan. También observa la inestabilidad inherente de trabajar para una empresa estadounidense desde el extranjero, pero destaca la mayor escala, mejor compensación y mayor reconocimiento de marca como motivadores clave. Finalmente, analiza las diferencias culturales entre Australia y EE. UU., donde los estadounidenses son más entusiastas y los australianos más discretos, lo que requiere adaptación a la cultura laboral estadounidense.

Leer más

El Efecto Trinquete: Cómo los Ingenieros Construyen Reputación en las Grandes Empresas de Tecnología

2025-01-08

La reputación de los ingenieros en las grandes empresas de tecnología no se limita a la habilidad técnica; es un proceso gradual. Comenzando con tareas de bajo nivel, los ingenieros construyen confianza y obtienen acceso a proyectos de mayor perfil mediante el éxito consistente. Este "efecto trinquete" hace que la reputación cambie lentamente. Incluso los errores pueden superarse con la entrega continua. Sin embargo, los fracasos repetidos conducen a una espiral descendente. El autor aconseja a los recién contratados que se centren en proyectos más pequeños para construir una reputación sólida, evitando intentos arriesgados de saltar directamente al trabajo de alto perfil.

Leer más

Los errores más comunes de los ingenieros en grandes bases de código

2025-01-07

Trabajar con grandes bases de código establecidas es notoriamente difícil. Este artículo comparte una década de experiencia, destacando el error más común y fatal: ignorar los patrones existentes de la base de código y centrarse únicamente en código limpio para una nueva función. Mantener la consistencia es esencial; previene problemas inesperados, ralentiza la degradación de la base de código y permite mejoras futuras. El autor también enfatiza la importancia de comprender la huella de producción del código, ser cauteloso al introducir nuevas dependencias, eliminar código redundante, trabajar en pequeños PR y aprovechar la experiencia del equipo para detectar errores. Aunque desafiante, dominar grandes bases de código es crucial, ya que suelen ser la base de los productos más valiosos de una empresa.

Leer más
Desarrollo

El trabajo de pegamento se considera perjudicial: una guía de supervivencia para ingenieros eficaces

2025-01-02

Este artículo explora el concepto de "trabajo de pegamento" en la ingeniería de software. Si bien es crucial para la eficiencia del equipo (por ejemplo, actualizar la documentación, abordar la deuda técnica), este trabajo poco glamoroso a menudo no se recompensa, perjudicando a los ingenieros que lo priorizan. El autor argumenta que las empresas no recompensan el trabajo de pegamento porque quieren que los ingenieros se centren en la entrega de funciones, no en las mejoras de eficiencia generales. La estrategia eficiente consiste en aplicar el trabajo de pegamento de forma táctica a los proyectos de los que eres responsable, garantizando su éxito, en lugar de dispersar los esfuerzos de manera ineficaz. Esto no es una política de oficina cínica; se basa en la realidad de la baja eficiencia en las grandes empresas y en la priorización del crecimiento sobre las ganancias de eficiencia a corto plazo.

Leer más

Dos ascensos a ingeniero de personal: lecciones aprendidas

2025-01-01

El autor comparte su experiencia de ser ascendido a Ingeniero de Personal dos veces en dos años. La clave del ascenso no fue la destreza técnica, sino entregar valor a la empresa completando con éxito proyectos de alta prioridad alineados con los objetivos de la empresa. El autor enfatiza la importancia de comprender las prioridades de la empresa, trabajar en proyectos impactantes y construir fuertes relaciones con la gerencia y los miembros del equipo. Un gerente de apoyo es crucial. Los puntos clave incluyen enfocarse en proyectos de alto impacto que la empresa prioriza, no sobreestimar el mentoring y tener un gerente dispuesto y capaz de defender el proceso de ascenso.

Leer más

La Brecha Entre Ingenieros Fuertes y Débiles

2024-12-27

Este artículo explora las capacidades que diferencian a los ingenieros fuertes de los ingenieros promedio. Los ingenieros fuertes pueden realizar tareas que los ingenieros más débiles no pueden, como resolver errores complejos, mejorar los códigos heredados y realizar grandes rediseños arquitectónicos. Los ingenieros más débiles luchan con estas tareas incluso con tiempo suficiente. El artículo destaca que los ingenieros fuertes no son simplemente más eficientes, sino que poseen la capacidad de resolver problemas complejos, mientras que los ingenieros más débiles son prácticamente incapaces de completar la mayoría de las tareas de ingeniería. El artículo también ofrece consejos sobre cómo colaborar con ingenieros sénior más débiles, enfatizando la necesidad de ser amable pero proteger su tiempo, evitando demandas excesivas.

Leer más