In the programming world, refactoring is the essential process of cleaning up, reorganizing, and restructuring your program’s code. When any program is built, the idea is to be clean, organized and structured right from the start. So no refactoring needed!? But then:
- You become pressed for deadlines, where speed overrides form
- Your program evolves, so your program’s structure needs to as well
- The structure you thought was good at the time turned out to not be that good
- You can’t always be on your A-game
- Multiple people work on the same program, introducing slight variations
- Not all programmers are equal in skill (that’s why junior and senior programmers exist)
- Methods and techniques change over time
- And many many more reasons
Over months and years, a program’s code starts to look super messy.
Enter refactoring – stopping everything to spend weeks and months to make code pristine and beautiful again. Finish that, and you can get back to the normal business of making that program even better.
Except that would be insanity.
The real way to refactor is to spot refactor. This is the process of refactoring piece by piece, while you are still in motion. There isn’t one grand moment of change. You clean things up as you progress, not all at once. If you are working on a new feature that touches on an old block of code (which is almost always the case), you make the time to polish up that old block a little bit while you are working on something new.
How this applies to learning Japanese
However you study Japanese, whatever tools you use, whatever materials you are engaging in, things are going to change. If things aren’t changing, it means you aren’t adjusting learning Japanese to you.
The biggest failures come from those who try to change everything at once.
Ex. 1: You finished Kanji Kingdom but have trouble with recall, and decide you want to add mnemonics to help. You set out to add 2,000 stories to all your cards, now.
If you spot-refactor instead: Add stories to only your failed cards, only when you review them.
Ex. 2: You decide to get a speaking tutor. You tell your tutor that you want your Japanese corrected every single time you make a mistake.
If you spot-refactor instead: Tell your tutor to only correct you when what you said confuses them. Or only when your pronunciation sounds really unnatural. Or only when your lack of understanding halts a conversation.
Ex. 3: You decide you are going to read every single sentence card out loud and write it down.
If you spot-refactor instead: Only say out loud or write cards that you got significantly wrong.
You get the idea.
Evolve on the go
Spot refactoring, whether in programming or in Japanese, is about changing as you move forward. A complete stop and refresh sounds great in principle. But reality isn’t as kind.