Oficio y sistemas
01Capítulo · Oficio y sistemas
4 min de lectura
craftsystemsunixarchitecture

Herramientas pequeñas y afiladas que se componen

La idea más duradera del software es también la más simple: construye cosas pequeñas que hagan bien un solo trabajo, y haz que funcionen juntas. Cincuenta años después, sigue ganándole al monolito.

Última actualización ·

Principio Nº Uno

Construye una cosa que haga una sola cosa. Haz que se componga.

La idea más duradera del software es también la más simple, y vino de Unix hace cincuenta años: escribe programas que hagan bien una sola cosa, y escríbelos para que funcionen juntos. El curso de CLI mostró la mecánica — comandos pequeños unidos por tuberías, cada uno entregando su salida al siguiente. Este principio trata de por qué eso no es solo un truco ingenioso, sino la forma más fiable que conozco de construir algo que siga siendo manejable a medida que crece.

Pon una herramienta pequeña y afilada junto a un monolito — un programa grande que hace todo el trabajo dentro de sí mismo — y la herramienta pequeña gana en cada eje que importa más adelante. Es fácil de entender, porque solo hay un trabajo que seguir. Es fácil de probar, porque hay un único comportamiento que verificar. Es fácil de reemplazar, porque cambiar una pieza no perturba a las demás. Y es reutilizable: una herramienta que solo ordena puede ordenar cualquier cosa, para siempre, en trabajos que aún no has imaginado. El monolito no puede hacer nada de esto — su ordenamiento está soldado a su obtención de datos que está soldada a su formateo, así que se entiende, se prueba y se reutiliza solo todo o nada.

monolito — un bloque soldado obtener·filtrar·ordenar·formatear utilizable solo entera herramientas pequeñas — compuestas obtener filtrar ordenar formatear cada una reutilizable por sí sola — la flexibilidad vive en las uniones
Los mismos cuatro trabajos. Fundidos a la izquierda en una sola cosa que solo puedes usar entera; a la derecha, cuatro piezas que puedes entender, probar, cambiar y reutilizar en cualquier parte.

La composición es la verdadera recompensa

El poder no está en ninguna herramienta individual — está en lo que ocurre cuando se combinan. Cuatro herramientas pequeñas no te dan cuatro capacidades; te dan cada disposición útil de cuatro herramientas, un número muchísimo mayor, incluyendo combinaciones que descubrirás más tarde para problemas que aún no tienes. Por eso este enfoque sigue ganando: un monolito solo puede hacer aquello para lo que fue construido, mientras que un juego de herramientas afiladas hace cosas que su creador nunca imaginó. La razón profunda por la que funciona es una interfaz uniforme — en Unix, flujos de texto plano — una costura compartida que toda herramienta habla, de modo que cualquier salida puede convertirse en cualquier entrada. Construye para la composición y estarás construyendo para los problemas que no puedes ver venir.

Evita

Dejar que una herramienta adquiera un segundo trabajo — el ordenador que aprende a obtener datos “ya que está aquí.” Cada función que se añade a una herramienta afilada la desafila.

Haz

Recurre a una segunda herramienta, mantenida aparte, y únelas en una costura limpia. Un solo trabajo claro por herramienta; el ingenio va en las uniones.

Dónde se tuerce

El fallo común es dejar que una herramienta se trague lentamente a sus vecinas. Empieza honesta — un ordenador — y luego filtra un poco, obtiene datos un poco, y un año después lo hace todo mal y no puede reutilizarse para nada. El fallo opuesto es dividir en exceso: cincuenta herramientas triviales donde bastarían cinco, ahogándote en uniones. El objetivo no es la máxima pequeñez; es un solo trabajo claro por herramienta y costuras limpias entre ellas. Y la composición tiene límites honestos — a veces un todo ajustado e integrado le gana a una tubería de diez partes, y fingir lo contrario es su propio dogma. Lo pequeño y componible es lo predeterminado, no una religión.

Ponlo en práctica

Toma algo que hayas construido que haga varios trabajos e intenta nombrar cada trabajo con un solo verbo. Si encuentras tres o cuatro, has encontrado tres o cuatro herramientas escondidas en una. No tienes que dividirla hoy — pero ver las costuras es el primer paso, porque la próxima vez que uno de esos trabajos necesite cambiar, la costura es exactamente donde desearás haber cortado.

Basado en la filosofía Unix tal como la recogió el resumen de Doug McIlroy — “haz una sola cosa y hazla bien” — y en la lección sobre tuberías del curso CLI · MCP · API.

Los nuevos capítulos llegan aquí a medida que los aprendo. ¿Quieres el próximo?