Developing thought, partially formed
Developer Productivity Systems
Thoughts on building effective developer workflows and environments that actually work
Over the years I’ve developed various systems for staying productive as a developer. This note collects my current thinking on what actually works — and what doesn’t.
Environment as Code
A consistent, reproducible development environment saves countless hours. If you can’t set up a new machine in under an hour, you’re losing time.
My Dotfiles Strategy
Everything lives in git: shell configs, editor settings, aliases, and install scripts. New machine setup: git clone && ./install.sh
Key components:
- Dotfiles in git — Track configurations, not just code
- Dev containers — Same environment everywhere (especially for team projects)
- Makefile/scripts — Document common tasks so you don’t forget
- Sensible defaults — Good editor/terminal settings out of the box
Deep Work Blocks
Coding requires sustained focus. Context switching kills productivity.
My current approach:
- Morning blocks (2-3 hours) for hard problems
- Slack/email only at 11am, 2pm, 5pm
- Phone stays in another room during focus time
- Noise-cancelling headphones — non-negotiable
Warning
Multitasking is a lie. Studies show it takes 20+ minutes to regain deep focus after an interruption. Protect your attention.
Knowledge Management
As developers, we’re constantly learning. Without a system, knowledge leaks away.
| Approach | Pros | Cons |
|---|---|---|
| Digital Garden (this site) | Public, linked thoughts | Takes time to maintain |
| Obsidian | Fast, local, graph view | Can become a rabbit hole |
| Plain text + git | Simple, durable | No nice UI |
| Notion | Pretty, collaborative | Slow, proprietary |
I’m currently using a hybrid: this digital garden for public notes, Obsidian for private thoughts, and a notes repo for quick snippets.
Automation Rules
Automate anything you do more than twice:
- Shell aliases —
gforgit,kforkubectl, etc. - Scripts — Repetitive tasks become one command
- CI/CD — Never manually deploy or run tests
- Templates — Boilerplate for new projects
Info
Time spent improving your tools pays dividends. A 5-minute task done 10 times is almost an hour. Automate it.
Tooling Investment
Learn your tools deeply:
- Editor — Know the shortcuts, plugins, and workflows
- Shell — Master bash/zsh and scripting
- Git — Beyond commit/push: rebase, bisect, reflog
- Hardware — Good monitor, keyboard, chair pay for themselves
What I’m Still Figuring Out
- Time blocking vs flexible schedules — Rigidity helps focus but kills creativity
- Note-taking systems — Finding the right balance between structure and speed
- Learning vs doing — How much time to spend on tutorials vs building
- Context switching — Managing multiple projects without losing state
Last updated: February 2025