The goal: reach a state of “human and machine as one” — optimize the tools and the process to the limit so that coding speed is no longer held back by physical operations.
1. Mindset and prerequisites#
Before chasing speed, you need the right rhythm and a sense of quality:
- Coding dojo and deliberate practice: sharpen your coding through repeated practice (e.g. the Tennis Kata).
- TDD (Test-Driven Development): follow the “test first, small steps, continuous refactoring” cycle to keep functionality correct and maintain code quality.
- Clean Code principles: code should be easy to understand, concise, maintainable, and clear in intent — the foundation for sustaining speed.
2. Getting the most out of your tools#
“To do a good job, first sharpen your tools.” A modern IDE’s features and custom shortcuts are key to efficiency:
- Use the IDE well: lean on code completion and automated refactoring (rename, extract method, etc.) to reduce manual mistakes.
- Vim and IdeaVim: use Vim commands to reduce reliance on the mouse and keep your hands on the keyboard.
- Customize
.ideavimrc: bind common IDE actions to comfortable keys — rename, extract variable/method, reformat, and so on — so each is a single keystroke.
3. Practice: the Tennis Kata and a timed challenge#
The workshop used the classic Tennis Kata for practice, implementing a tennis scoring system (Love, 15, 30, 40, Deuce, Advantage).
- Show Me The Code: a timed 5-minute speed-coding challenge, testing how much test and feature code you can produce in a very short window.
4. Closing: toward flow#
Real speed-coding isn’t about blindly rushing — it’s about reaching a state where “your hands keep up with your eyes.” By being fluent with your tools and in command of the TDD rhythm, you save physical effort, avoid trivial manual mistakes, and free yourself to focus on higher-level system design and reasoning.
Practice recordings#
The practice recordings from that time are collected in this YouTube playlist: