Skip to content

Latest commit

 

History

History
40 lines (23 loc) · 3.51 KB

background-info.md

File metadata and controls

40 lines (23 loc) · 3.51 KB

Top

What are kata?

Kata (型) are choreographed exercises comprising a fixed sequence of moves, designed to help the practitioner develop "muscle memory" to deal with common problems without having to stop and think about exactly what to do every time a similar problem comes up. The term is a Japanese word borrowed from martial arts that translates into English approximately as pattern. Martial arts schools often use the English word, form.

The software development community adopted the word kata to refer to a programming exercise to create a software routine. Routines are chosen for programming kata because they are simple representations of general types of programming problems commonly encountered in the field.

For example, the Fibonacci Series exercise is useful for kata because it is similar to general problems involving sequences or lists of values. Similarly, the FizzBuzz exercise is representative of collection processing such as filter, map, reduce, and flatten operations; the Trigrams exercise is representative of text-processing problems; the Prime Factors exercise is representative of algorithmic problems; Conway's Game of Life is representative of state machine problems; and other widely-used kata resemble additional common categories of programming problems.

What problem does this solve?

One of the reasons highly skilled software developers are able to work smoothly and quickly is that they learn the shortcuts that work with their favorite text editors, integrated development environments (IDEs), and other tools for designing, coding, testing, building, and deploying software. Most of them prefer using the keyboard over using the mouse for as many common activities as they can.

It takes time to get the keyboard shortcuts under your fingers if you learn about them one by one from colleagues or you look them up on a cheat sheet at the moment you need them. You can get the shortcuts under your fingers much quicker if you dedicate some time to practice them intentionally and mindfully.

When you switch projects or change jobs, you may have to come up to speed on a new set of tools, or a set of tools you haven't used in a few years. Kata can be useful to refresh your muscle memory of keyboard shortcuts.

Organization of the kata

This project provides a code base to work with and defines several kata focused on practicing sequences of actions via keyboard shortcuts. The kata as such define the sequences of actions. The specific keystrokes you practice will depend on the editor or IDE you need to work with.

You can practice the same kata using shortcuts that work with IntelliJ IDEA or other JetBrains IDEs, Eclipse, NetBeans, VisualStudio, or any other IDE or smart editor, including custom key mappings you may have defined for Vim or Emacs.

The project includes kata that focus on the following categories of activities:

  • Project, file, and directory manipulation
  • Searching and replacing
  • Editing source code
  • IDE navigation
  • Building and running projects
  • Refactoring
  • Interacting with version control systems

Refactoring kata

There's a natural overlap between practicing keyboard shortcuts and practicing refactorings supported by an IDE. We want to perform multi-step refactorings smoothly and without getting side-tracked by trying to remember forgotten key mappings.

Practicing the refactoring kata in this project serves the dual purpose of practicing the refactorings themselves and reinforcing muscle memory of the corresponding keyboard shortcuts.