🌿
budding

Developing thought, partially formed

Developer Productivity Systems

Thoughts on building effective developer workflows and environments that actually work

#productivity #developer-experience #tools

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.

ApproachProsCons
Digital Garden (this site)Public, linked thoughtsTakes time to maintain
ObsidianFast, local, graph viewCan become a rabbit hole
Plain text + gitSimple, durableNo nice UI
NotionPretty, collaborativeSlow, 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 — g for git, k for kubectl, 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