Hanzi Design
Concept house

house · roof

Roof + Arrive

A house is built structure, differentiated from home by being object rather than relationship. It is shelter before it is territory. The house provides boundaries, utilities, compartments—physical infrastructure that enables dwelling. Every application is a house: a constructed system that users inhabit. The house-qualities are structural: rooms (features), walls (boundaries), plumbing (data flows), wiring (connections). Well-built houses function reliably; poorly-built houses fail under use. Structure precedes experience.

Compartmentalization

Houses divide space into rooms. Each room serves specific functions: bedroom for sleeping, kitchen for cooking, bathroom for hygiene. This compartmentalization enables specialized optimization—each space configured for its purpose.

Applications similarly compartmentalize into features, modules, screens. Each section serves specific user needs. Settings occupy one space, content another, social features a third. The compartments should be functionally distinct—blurring bedroom and kitchen creates problems—but accessible from common circulation spaces.

The error is either excessive compartmentalization (too many rooms, navigation burden) or insufficient compartmentalization (everything in one room, cannot optimize for specific needs). The house teaches that some separation is necessary for functional optimization, but too much separation creates inefficiency.

Load-Bearing Walls

Houses have structural walls (bear load, cannot be removed) and partition walls (divide space, can be relocated). Knowing which is which matters for renovation. Remove a load-bearing wall and the house collapses.

Software architecture has similar distinctions. Some components are load-bearing—core authentication, data persistence, API contracts. Others are partitions—UI styling, feature flags, configuration options. The load-bearing elements cannot change without major structural work. Partitions can adjust relatively easily.

The design challenge is minimizing load-bearing elements while ensuring sufficient structure. Too many load-bearing walls create inflexibility. Too few create instability. The well-designed house has clear, minimal load-bearing structure with flexible partitions for adaptation.

Utilities and Infrastructure

Houses contain hidden infrastructure: plumbing, wiring, HVAC. This infrastructure enables visible functions (faucets work, lights illuminate, air cools) but remains concealed. Good infrastructure is invisible; bad infrastructure intrudes.

Applications similarly hide infrastructure: databases, authentication systems, caching layers, API integrations. When working correctly, users don't know they exist. When failing, they create visible problems. The infrastructure is not the product but enables the product.

Insufficient infrastructure investment creates technical debt. The house with inadequate wiring cannot handle modern electrical demands. The application with inadequate data architecture cannot scale. Infrastructure must be sized for anticipated loads, not just current needs, because retrofitting is expensive.

Foundations and Ground Conditions

Houses require foundations matched to ground conditions. Stable bedrock needs minimal foundation. Unstable soil needs extensive foundation work. The same house-design succeeds or fails based on foundation appropriateness.

Applications similarly depend on platform foundations. The same design works on fast networks but fails on slow. Works with keyboard input but fails touch-only. Works at desktop scale but breaks at mobile. The application-house must be founded appropriately for platform-ground conditions.

Designing for weak foundations (slow networks, old devices, limited capabilities) creates robust applications that work everywhere. Designing for perfect foundations creates applications that only work under ideal conditions. The trade-off is between performance optimization and environmental robustness.

Weathering and Maintenance

Houses degrade over time. Paint fades, roofs leak, foundations settle. Maintenance preserves function; neglect accelerates decay. Well-maintained houses last centuries. Neglected houses become uninhabitable within years.

Software houses require similar maintenance. Dependencies update, security vulnerabilities emerge, user expectations evolve. Without continuous maintenance, the application degrades. The degradation isn't dramatic but cumulative. Small problems accumulate until the system requires major renovation.

Sustainable software development allocates ongoing maintenance time. The house-budget includes both construction and upkeep. Software budgets should similarly include both new development and system maintenance. Organizations that only fund new features while starving maintenance create decaying houses.

Extensions and Additions

Houses can be extended: room additions, second stories, attached garages. Extensions work when they integrate with existing structure. Poorly-integrated additions feel tacked-on, create circulation problems, and may compromise structural integrity.

Feature additions to applications face similar integration challenges. Does the new feature fit the existing architecture? Does it create navigation complexity? Does it overload current infrastructure? Well-integrated features feel native. Poorly-integrated features feel bolted-on.

The house metaphor suggests that some additions require structural work before they're viable. Adding a second story may require foundation reinforcement. Adding major features may require architectural refactoring. Skipping necessary structural work to speed feature delivery creates instability.

Floor Plans and Flow

House floor plans determine movement patterns. Open plans encourage interaction but sacrifice privacy. Compartmentalized plans provide privacy but create isolation. The floor plan structures daily life whether consciously or not.

Application information architecture serves as floor plan. How features connect, what paths exist between them, what requires traversing other spaces—all determined by architectural decisions. The architecture structures user behavior similarly to how floor plans structure household movement.

Good floor plans create natural flow. Frequently-accessed spaces are easily reachable. Related functions sit near each other. Movement doesn't require traversing unrelated spaces. The same principles apply to information architecture: common paths should be short, related features should be adjacent, unrelated features shouldn't force traversal.

Public and Private Spaces

Houses distinguish public areas (living room, kitchen) from private areas (bedrooms, bathrooms). Public spaces tolerate visitors; private spaces are restricted. This distinction enables both social interaction and personal privacy within one structure.

Applications need similar public-private distinctions. Public features (marketing site, product catalog, public profiles) are accessible to all. Private features (account settings, personal data, admin functions) are restricted. The boundaries should be clear—users should know what's public versus private.

Violating public-private boundaries creates security and privacy problems. Private data exposed in public spaces is a breach. Public features hidden behind authentication create unnecessary friction. The house-structure should clearly separate and appropriately protect each category.

Modularity and Standardization

Modern houses use standardized components: windows, doors, fixtures. This standardization reduces cost and simplifies replacement. Custom components are expensive and create maintenance challenges. The trade-off is between mass-produced efficiency and bespoke optimization.

Component libraries serve similar function in software. Standardized buttons, forms, layouts—all reduce development cost and ensure consistency. Custom components provide specific optimization but at cost of maintenance burden and inconsistency risk.

The decision is how much standardization versus customization the system needs. Mass-market houses use maximum standardization. Bespoke houses allow more customization. Software systems should similarly calibrate standardization level to their constraints and requirements.

The Lived-In Quality

Houses change through habitation. Doors get scuff marks. Floors develop wear patterns. The structure reveals how it's actually used versus how it was designed to be used. Lived-in houses show their history.

Applications similarly reveal actual usage through analytics, support requests, and user modifications. The design intention meets reality; the gap is visible. Some features are used heavily (high-traffic rooms), others rarely (storage spaces), others in unexpected ways (using bedroom as office).

The lived-in data should inform maintenance and evolution. Heavy-use areas need reinforcement. Unused areas might be repurposed or removed. Unexpected uses might suggest design changes. The house-application learns from habitation and adapts, or it remains static while inhabitants struggle with mismatch between design and need.