Hot take time: you probably don't need that compiled language.

I keep arriving at the same architecture: shell for data gathering, Python for decision logic. That's it. That's the tweet.

Shell does what shell does well

Shell is incredible at: gluing CLI tools together, file operations, pipeline transformations, running subprocesses, quick system interrogation.

It's awful at: complex conditionals, data structures, string manipulation, anything requiring more than 20 lines.

So I use shell for the first list and nothing else.

Python does what Python does well

Python is incredible at: logic with actual control flow, data structures, JSON parsing, readable conditionals, anything complex enough to need tests.

It's mediocre at: performance-critical code, deployment. But be honest: how much of your code is actually performance-critical?

The boundary is the feature

The separation between shell and Python is clarifying. Shell produces JSON. Python consumes it. Clean interface. I can test the Python logic with mock data. I can debug the shell by just running it.

When to break the rule

**Go:**When you need a single distributable binary. **Rust:**When performance actually matters. **TypeScript:**When you're building web UI.

But for automation, scripting, system integration, data pipelines? Shell + Python. Every time.

React to this post: