惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
V
Visual Studio Blog
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
L
LangChain Blog
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
P
Proofpoint News Feed
博客园_首页
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Why I Stopped Designing Websites and Started Designing Flows
Drew Marshal · 2026-05-19 · via DEV Community

At one point, most of my thinking around software revolved around pages.

  • landing pages
  • dashboards
  • admin panels
  • APIs
  • components
  • layouts

And while those things still matter, over time I realized something important:

Most complexity in modern applications doesn’t come from screens.

It comes from flow.

Data flow.
Operational flow.
Deployment flow.
Communication flow.
Validation flow.
Infrastructure flow.

Eventually I stopped asking:

“What page are we building?”

And started asking:

“What system flow are we designing?”

That single shift completely changed how I approach architecture.


Applications Are Really Pipelines

Underneath almost every modern application is a series of transformations.

A request comes in.

Something validates it.

Something transforms it.

Something authorizes it.

Something enriches it.

Something stores it.

Something logs it.

Something renders it.

Something caches it.

Something distributes it.

Most systems are pipelines whether we intentionally design them that way or not.

The difference is whether the flow is explicit or hidden.


Hidden Flow Becomes Hidden Complexity

One of the biggest problems I kept running into in modern web development was invisible architecture.

Logic scattered everywhere:

  • hooks
  • middleware
  • event systems
  • decorators
  • global state
  • lifecycle callbacks
  • framework magic
  • plugin injections

At small scale, it feels convenient.

At larger scale, it becomes difficult to reason about.

You start asking questions like:

  • “Where is this actually happening?”
  • “What modified this request?”
  • “Why did this state change?”
  • “What order does this execute in?”
  • “Why is debugging this so painful?”

Eventually I realized the issue wasn’t necessarily the tooling itself.

It was that the system flow wasn’t obvious anymore.

And once flow becomes invisible, architecture becomes harder to trust.


Explicit Pipelines Changed How I Think

The more systems I worked on, the more I started preferring explicit pipelines over hidden execution patterns.

Instead of:

“Something somewhere modifies this.”

I wanted:

“This enters here, moves through these stages, and exits here.”

That sounds simple.

But it changes everything.

Because now:

  • debugging becomes easier
  • observability improves
  • onboarding improves
  • testing improves
  • scaling improves
  • reasoning about the system improves

The architecture becomes understandable.

And understandable systems scale better organizationally.

Not just technically.


A Request Is Rarely “Just a Request”

Think about a modern application request.

Even something simple like:

POST /api/orders

Enter fullscreen mode Exit fullscreen mode

Usually involves:

  • authentication
  • validation
  • rate limiting
  • business rules
  • inventory checks
  • database writes
  • event creation
  • notifications
  • analytics
  • caching
  • auditing
  • logging
  • response transformation

That’s not a route.

That’s an operational flow.

And once I started viewing applications this way, the idea of “pages first” architecture started feeling incomplete.


Why I Started Designing Around Pipelines

This thinking heavily influenced how I approach systems now.

Especially in projects like:

  • WebEngine
  • Seltzer
  • Nectarine
  • KiwiPress

I became less interested in:

  • massive controllers
  • hidden middleware chains
  • implicit execution
  • deeply coupled framework logic

And more interested in:

  • contracts
  • stages
  • transformations
  • pipelines
  • explicit runtime behavior

Because explicit systems are easier to maintain over time.

And maintainability becomes increasingly important as projects grow.


Flow Is Bigger Than Backend Architecture

This idea extends far beyond APIs.

Businesses themselves are pipelines.

Orders move through stages.

Content moves through stages.

Deployments move through stages.

Users move through stages.

Products move through stages.

Infrastructure moves through stages.

Even teams operate through pipelines:

  • planning
  • development
  • testing
  • deployment
  • monitoring
  • iteration

Once you start thinking in flows instead of isolated screens, you begin designing systems differently.

You stop building disconnected features.

You start building operational ecosystems.


The Industry Often Optimizes for Speed of Creation

A lot of modern tooling optimizes for:

  • fast setup
  • rapid prototyping
  • shipping quickly

And again:
that matters.

But eventually systems reach a size where operational clarity becomes more valuable than short-term convenience.

Because complexity compounds.

Especially when:

  • multiple developers touch the system
  • infrastructure grows
  • integrations increase
  • business logic expands
  • AI-generated code enters the stack
  • scaling requirements appear

At that point, architecture quality matters a lot more than whether setup was fast in the beginning.


AI Makes This More Important, Not Less

I actually think AI increases the importance of explicit flows.

Because generated code can introduce even more hidden complexity if the surrounding architecture isn’t disciplined.

If systems are pipeline-driven and contract-driven:

  • behavior becomes easier to validate
  • execution becomes easier to trace
  • generated logic has clearer boundaries
  • architecture remains understandable

Without clear flow design, systems eventually become difficult to reason about regardless of whether humans or AI wrote the code.


What I Think We Need More Of

I think the industry needs more emphasis on:

  • explicit runtime architecture
  • operational clarity
  • observable systems
  • predictable pipelines
  • modular transformations
  • maintainable flow design

Not because it sounds architecturally “pure.”

But because software eventually becomes operational infrastructure.

And infrastructure needs clarity.


Final Thoughts

I still care about good UI.

I still care about developer experience.

I still care about elegant frontend systems.

But nowadays, when I look at an application, I don’t primarily see pages anymore.

I see movement.

I see:

  • requests flowing
  • systems communicating
  • data transforming
  • operations scaling
  • workflows evolving

In other words:

I stopped designing websites.

And started designing flows.