1 INTRODUCTION 1
Why a Book on Programmer Productivity? 2
What This Book Is About 3
Where to Go Now? 5
Part One MECHANICS 9
2 ACCELERATION 9
Launching Pad 10
Accelerators 18
Macros 33
Summary 35
3 FOCUS 37
Kill Distractions 38
Search Trumps Navigation 40
Find Hard Targets 42
Use Rooted Views 44
Use Sticky Attributes 46
Use Project-Based Shortcuts 47
Multiply Your Monitors 48
Segregate Your Workspace with Virtual Desktops 48
Summary 50
4 AUTOMATION 51
Don't Reinvent Wheels 53
Cache Stuff Locally 53
Automate Your Interaction with Web Sites 54
Interact with RSS Feeds 54
Subvert Ant for Non-Build Tasks 56
Subvert Rake for Common Tasks 57
Subvert Selenium to Walk Web Pages 58
Use Bash to Harvest Exception Counts 60
Replace Batch Files with Windows Power Shell 61
Use Mac OS X Automator to Delete Old Downloads 62
Tame Command-Line Subversion 62
Build a SQL Splitter in Ruby 64
Justifying Automation 65
Don't Shave Yaks 67
Summary 68
5 CANONICALITY 69
DRY Version Control 70
Use a Canonical Build Machine 72
Indirection 73
Use Virtualization 80
DRY Impedance Mismatches 80
DRY Documentation 88
Summary 93
Part Two PRACTICE 97
6 TEST-DRIVEN DESIGN 97
Evolving Tests 99
Code Coverage 105
7 STATIC ANALYSIS 109
Byte Code Analysis 110
Source Analysis 112
Generate Metrics with Panopticode 113
Analysis for Dynamic Languages 116
8 GOOD CITIZENSHIP 119
Breaking Encapsulation 120
Constructors 121
Static Methods 121
Criminal Behavior 126
9 YAGNI 129
10 ANCIENT PHILOSOPHERS 135
Aristotle's Essential and Accidental Properties 136
Occam's Razor 137
The Law of Demeter 140
Software Lore 141
11 QUESTION AUTHORITY 143
Angry Monkeys 144
Fluent Interfaces 145
Anti-Objects 147
12 META-PROGRAMMING 149
Java and Reflection 150
Testing Java with Groovy 151
Writing Fluent Interfaces 152
Whither Meta-Programming? 154
13 COMPOSED METHOD AND SLAP 155
Composed Method in Action 156
SLAP 160
14 POLYGLOT PROGRAMMING 165
How Did We Get Here?And Where Exactly Is Here? 166
Where Are We Going?And How Do We Get There? 169
Ola's Pyramid 173
15 FIND THE PERFECT TOOLS 175
The Quest for the Perfect Editor 176
The Candidates 179
Choosing the Right Tool for the Job 180
Un-Choosing the Wrong Tools 186
16 CONCLUSION:CARRYING ON THE CONVERSATION 189
APPENDIX:BUILDING BLOCKS 191
INDEX 199