Choose Boring Technology (Even When It’s Bash)
Why the most boring solution is often the most powerful
The Excitement Trap
We’re drawn to exciting technology. New frameworks, cutting-edge languages, innovative architectures. The latest thing that promises to solve all our problems.
But here’s what I’ve learned: The most boring solution is often the most powerful.
What Makes Technology “Boring”?
Boring technology is:
- Old and stable
- Well-understood
- Predictable
- Has fewer moving parts
- Solves problems directly
Exciting technology is:
- New and shiny
- Complex and feature-rich
- Promises to solve future problems
- Has many moving parts
- Solves problems abstractly
The Bash Example
Consider building a simple API that:
- Takes HTTP requests
- Calls another API
- Transforms the response
- Returns JSON
Exciting approach:
// Express.js + TypeScript + Zod + Axios + Jest + Docker
import express from 'express';
import { z } from 'zod';
import axios from 'axios';
const app = express();
const schema = z.object({...});
app.get('/api', async (req, res) => {
const validated = schema.parse(req.query);
const response = await axios.get(externalApi, { params: validated });
res.json(transform(response.data));
});
Boring approach:
#!/bin/bash
api_handler() {
local params="$1"
curl -s "https://external-api.com/data" -G -d "$params" \
| jq '.data | map({id, name, status})'
}
The Results
Development time:
- Exciting: 2 days (setup, dependencies, types, tests)
- Boring: 20 minutes (write function, test with curl)
Runtime performance:
- Exciting: 200ms cold start + 50ms execution
- Boring: 50ms cold start + 20ms execution
Memory usage:
- Exciting: 128MB baseline + dependencies
- Boring: 15MB total
Maintenance burden:
- Exciting: Security updates, dependency management, version conflicts
- Boring: Stable for years, no dependencies to manage
Why We Avoid Boring
Psychological reasons:
- Boring doesn’t feel like “real programming”
- We want to use our skills
- Boring doesn’t look good on resumes
- We assume boring can’t scale
Professional reasons:
- Team expects modern tech stack
- Hiring assumes certain technologies
- Industry best practices favor complexity
- Fear of being seen as outdated
When Boring Wins
Boring technology wins when:
- The problem is simple
- Performance matters
- Reliability is critical
- Maintenance cost matters
- You need to ship fast
Most business problems are boring problems.
The Infrastructure Angle
This is why I built infrastructure that makes boring technology first-class:
lambda-shell-runtime - Run bash functions as Lambda APIs http-cli - Simple HTTP client for shell scripts lambda-shell-layers - Common CLI tools as Lambda layers
The goal: Make it as easy to deploy a bash function as a Node.js function.
Real-World Boring Wins
Web scraping:
- Exciting: Puppeteer + complex orchestration
- Boring: curl + htmlq + basic parsing
Data transformation:
- Exciting: Pandas + Jupyter + complex pipeline
- Boring: jq + awk + shell pipes
API integration:
- Exciting: SDK + error handling + retry logic
- Boring: curl + basic error checking
File processing:
- Exciting: Custom application + framework
- Boring: Standard Unix tools + shell glue
The Boring Technology Checklist
Before choosing exciting technology, ask:
- Can I solve this with standard tools?
- Am I adding complexity to solve future problems?
- Will this be easier to debug in 6 months?
- Can someone else understand this quickly?
- What’s the simplest thing that could work?
Embracing Boring
Start boring, upgrade when necessary.
- Begin with the simplest solution
- Add complexity only when you hit real limits
- Measure before optimizing
- Choose boring for the foundation, exciting for the edges
The Paradox
The most boring choice is often the most innovative.
Using bash for APIs isn’t traditional, but it’s boring technology applied in a new context. The innovation is in the application, not the technology.
Conclusion
Boring technology is a competitive advantage.
While others are debugging framework issues, you’re shipping features. While others are managing dependencies, you’re solving business problems. While others are learning new abstractions, you’re using tools that work.
Choose boring technology. Your future self will thank you.
Part of the cloudless philosophy - infrastructure that gets out of your way.