The Linux Workflow That Doubled My Productivity: It's Not About Typing Faster
Doubling Efficiency Isn’t About Doubling Speed
I used to think “productivity hacks” were pretty mystical. It’s just work, right? How much faster can you really get?
Then I realized: doubling efficiency isn’t about typing twice as fast. It’s about cutting in half those moments when you stop to think “where did I put that thing?” or “how do I write that command again?”
It’s like cooking. A novice heats up the pan, then realizes the garlic isn’t chopped, scrambles to find the knife, finishes chopping, then discovers the soy sauce is in another cabinet. By the time they find it, the pan’s gone cold. An experienced cook? Ingredients prepped, seasonings ready, smooth sailing from start to finish.
The efficiency gap isn’t about hand speed. It’s about reducing the “stop and think” moments.
Three Core Principles
Distilling the habits I’ve built over the years, it really comes down to three things:
First, make your environment predictable. Keep your terminal always open, split into fixed tabs: main workspace, log monitoring, Git operations, scratch experiments. Use consistent directory structures across all projects: src/ for code, tests/ for tests, scripts/ for scripts. Like supermarket shelves—ketchup is always in the condiments aisle, you could find it with your eyes closed.
Second, memorize workflows, not commands. Daily development is just a few steps: branch, code, commit, rebase, push. Debugging is just a few steps: check logs, narrow scope, minimal reproduction, locate and fix. You can look up specific commands, but the workflow needs to be hardwired. Like driving—you remember “I want to turn left,” not “rotate steering wheel 15 degrees.”
Third, eliminate context switching. If the terminal can do it, don’t open a GUI. If the keyboard can do it, don’t touch the mouse. Turn off all notifications while working. GUIs interrupt thinking: eyes move away, find the button, click, wait for animation, eyes move back, re-enter the zone. By then, you’ve forgotten half of what you were holding in your head.
A Few Practical Tips
Logs before debugger. When something breaks, don’t rush to set breakpoints. Check the logs first:
tail -n 100 app.log # see recent entries
grep -i "error\|exception" app.log # filter errors
grep "request-id-xxx" app.log # trace specific request
Logs tell stories, debuggers answer questions. You need to know roughly where the problem is before you can ask the right questions.
Small scripts beat big tools. Counting keyword occurrences, finding recently modified files, batch replacing strings—a few lines of script will do:
grep -R "$1" src/ | wc -l # count keyword
ls -lt src/ | head -6 # recently modified files
grep -rl "$1" src/ | xargs sed -i "s/$1/$2/g" # batch replace
Ugly? Sure. Works? Yep. Use it and toss it.
Automate after doing it twice. Pulling code, starting the server, opening logs every morning—put it in a script:
cd ~/projects/main && git pull origin main
npm run dev &
tail -f logs/app.log
Automation isn’t about being lazy. Okay, it’s mostly about being lazy. But more importantly, it eliminates the possibility of “forgetting a step.”
Common Pitfalls
Tool hoarding. I used to love installing tools. Before I knew it, I had a pile of them, and when I actually needed one, I couldn’t remember what it was called. Lesson learned: if a few lines of script can solve it, skip the tool.
Over-optimizing the terminal. Changing themes, installing plugins, configuring aliases—hours of tinkering with minimal productivity gains, plus a bunch of configs to maintain. Good enough is good enough. Don’t mistake the tool for the goal.
OCD uniformity. Some projects just have messy directory structures. Taking them over and insisting on refactoring everything to match your preferences? Just adapt for a few days. The time spent refactoring could’ve been spent finishing the actual work.
Summary
Three takeaways:
- Make your environment predictable to reduce “finding stuff” time
- Memorize workflows so your hands move faster than your brain
- Reduce context switching to stay focused
Next steps to try: set up fixed tabs in your terminal, script the repetitive stuff, turn off notifications while working.
The fastest developers aren’t the ones who know the most commands—they’re the ones who’ve eliminated the most friction.
Found this useful?
- Give it a like so more people can see it
- Share with friends still wrestling with their tools
- Follow Rex Programming for more “nobody teaches this but it matters” dev insights