Developer productivity isn't about typing faster—it's about reducing friction, maintaining focus, and building sustainable practices. Here are practical tips that make real differences.
Environment Setup#
Terminal Efficiency#
1# Aliases for common commands
2alias gs='git status'
3alias gc='git commit'
4alias gp='git push'
5alias gco='git checkout'
6alias ll='ls -la'
7alias ..='cd ..'
8alias ...='cd ../..'
9
10# Functions for complex operations
11function mkcd() {
12 mkdir -p "$1" && cd "$1"
13}
14
15function killport() {
16 lsof -ti:$1 | xargs kill -9
17}Shell Improvements#
1# Use a modern shell (zsh with oh-my-zsh, or fish)
2# Add syntax highlighting
3# Enable autosuggestions
4# Use fuzzy finder (fzf)
5
6# fzf for everything
7export FZF_DEFAULT_COMMAND='fd --type f'
8alias preview="fzf --preview 'bat --color=always {}'"
9
10# Quick directory navigation with zoxide
11eval "$(zoxide init zsh)"
12# Now: z project # jumps to /path/to/my/projectIDE Configuration#
1// settings.json (VS Code)
2{
3 // Remove distractions
4 "editor.minimap.enabled": false,
5 "workbench.statusBar.visible": true,
6 "workbench.activityBar.location": "top",
7
8 // Speed
9 "editor.formatOnSave": true,
10 "editor.defaultFormatter": "esbenp.prettier-vscode",
11 "editor.codeActionsOnSave": {
12 "source.fixAll.eslint": true
13 },
14
15 // Better editing
16 "editor.bracketPairColorization.enabled": true,
17 "editor.guides.bracketPairs": "active",
18 "editor.stickyScroll.enabled": true
19}Keyboard-First Workflow#
Essential Shortcuts#
Navigation:
Ctrl+P / Cmd+P → Quick file open
Ctrl+Shift+P → Command palette
Ctrl+G → Go to line
Ctrl+Shift+O → Go to symbol
F12 → Go to definition
Shift+F12 → Find references
Editing:
Ctrl+D → Select next occurrence
Ctrl+Shift+L → Select all occurrences
Alt+Up/Down → Move line
Ctrl+Shift+K → Delete line
Ctrl+/ → Toggle comment
Multi-cursor:
Alt+Click → Add cursor
Ctrl+Alt+Up/Down → Add cursor above/below
Vim Motions#
Even in VS Code, vim motions boost speed:
Movement:
w, b → Word forward/backward
0, $ → Start/end of line
gg, G → Start/end of file
{, } → Paragraph up/down
f{char} → Jump to character
Editing:
ciw → Change inner word
ci" → Change inside quotes
dt{char} → Delete until character
yy, dd → Copy/delete line
p, P → Paste after/before
Focus and Flow#
Time Blocking#
Morning (High energy):
- Complex coding tasks
- Architecture decisions
- Debugging difficult issues
After lunch (Medium energy):
- Code reviews
- Meetings
- Documentation
Late afternoon (Lower energy):
- Administrative tasks
- Email/Slack
- Planning tomorrow
Minimize Context Switching#
Batching strategies:
- Check Slack/email 2-3 times daily, not constantly
- Group meetings together
- Complete one task before starting another
- Use "office hours" for interruptions
Technical strategies:
- Close unnecessary tabs
- Use separate browser profiles (work/personal)
- Silence notifications during focus time
- Use "Do Not Disturb" modes
The Two-Minute Rule#
If a task takes < 2 minutes:
→ Do it immediately
If a task takes > 2 minutes:
→ Schedule it or add to task list
Code Faster#
Snippets and Templates#
1// Custom snippets (VS Code)
2{
3 "React Functional Component": {
4 "prefix": "rfc",
5 "body": [
6 "interface ${1:Component}Props {",
7 " $2",
8 "}",
9 "",
10 "export function ${1:Component}({ $3 }: ${1:Component}Props) {",
11 " return (",
12 " <div>",
13 " $0",
14 " </div>",
15 " );",
16 "}"
17 ]
18 }
19}Code Generation#
1# Use scaffolding tools
2npx create-next-app
3npx prisma generate
4npx plop component Header
5
6# AI code generation
7# Use GitHub Copilot, Claude, etc. for boilerplateLearn Your Framework Deeply#
Depth over breadth:
Rather than:
- Knowing 5 frameworks superficially
Prefer:
- Knowing 1-2 frameworks deeply
- Understanding their patterns
- Knowing common pitfalls
- Having battle-tested solutions
Debugging Efficiently#
Systematic Approach#
1. Reproduce consistently
2. Isolate the problem
3. Form hypothesis
4. Test hypothesis
5. Fix and verify
6. Add regression test
Don't:
- Change random things hoping it works
- Debug for hours without taking breaks
- Forget to test the fix
Rubber Duck Debugging#
Explain the problem out loud:
- What are you trying to do?
- What's happening instead?
- What have you tried?
Often, the act of explaining reveals the solution.
(Works with AI too)
Strategic Logging#
1// Not this
2console.log('here');
3console.log(data);
4
5// This
6console.log('[UserService.create] Starting with:', {
7 email: user.email,
8 timestamp: Date.now(),
9});
10
11console.log('[UserService.create] Database result:', {
12 success: !!result,
13 userId: result?.id,
14});Learning Effectively#
Just-in-Time Learning#
Don't:
- Read entire documentation upfront
- Take courses "just in case"
- Learn frameworks you might use someday
Do:
- Learn what you need for current work
- Dig deeper when you hit problems
- Build projects to reinforce learning
Building Mental Models#
When learning something new:
1. Understand the "why"
- What problem does it solve?
- What's the mental model?
2. Learn the basics
- Core concepts
- Happy path usage
3. Build something
- Apply immediately
- Make mistakes
4. Go deeper as needed
- Edge cases
- Advanced features
Documentation as Learning#
Teaching reinforces learning:
- Write blog posts about what you learn
- Document solutions for your team
- Create internal wikis
- Answer questions on Stack Overflow
Sustainable Practices#
Avoid Burnout#
Warning signs:
- Dreading work
- Constant exhaustion
- Declining quality
- Lost interest in programming
Prevention:
- Take real breaks (not just social media)
- Exercise and sleep
- Have non-coding hobbies
- Set boundaries on work hours
Invest in Health#
Physical health affects productivity:
- Ergonomic setup (chair, desk, monitor)
- Regular movement (standing desk, walks)
- Eye breaks (20-20-20 rule)
- Adequate sleep (non-negotiable)
Say No#
Protecting your time:
- Not every meeting needs you
- Not every Slack message is urgent
- Not every feature is critical
- Not every request deserves immediate response
Saying no to the unimportant
enables yes to the important.
Measuring Progress#
Personal Retrospectives#
Weekly:
- What went well?
- What could improve?
- What will I try next week?
Quarterly:
- What skills did I develop?
- What impact did I have?
- What do I want to learn next?
Track Your Wins#
Keep a "brag document":
- Features shipped
- Bugs fixed
- Improvements made
- Knowledge shared
Useful for:
- Performance reviews
- Resume updates
- Maintaining motivation
Conclusion#
Productivity isn't about working more—it's about working effectively. Small improvements compound over time. A 10% efficiency gain each month transforms your capability within a year.
Start with one or two changes. Make them habits. Then add more. The goal isn't perfection; it's continuous improvement.
Remember: the most productive developers also take breaks, have lives outside code, and maintain their enthusiasm for years. Sustainable productivity beats burnout every time.