Typing lessons

 min.
25 WPM
 
top speed of 7 days
latest speed
speed ≥ goal
chart
 

Programming lessons

Every computer language has its own syntax. You can type code faster thanks to practicing touch typing. The lessons above have a bunch of different code fragments, which are mixed each time you run a given lesson.

Programming in the context of touch typing - let's talk.

Touch typing in programming

Programming is often described as solving logical problems, designing systems, or building applications. All of that is true. However, few remember that behind programming lies the physical skill of putting code into an editor. For that purpose, programmers use a keyboard, and nothing seems to change that in the near future. If you cannot type fluently, you lose your coding flow. If you have to think over where a bracket is, or you can't automatically type a for loop, your focus is gone. Touch typing in programming is what allows you to stay in focus on the problems you are solving, not on the act of typing. Fast typing in programming is not about hitting 120 words per minute - it's about accuracy and fluency with the symbols, keywords, and patterns that make up code.

Why touch typing matters for programmers

Unlike writing prose, code follows a strict structure and syntax. You cannot mistype a symbol and expect the compiler or interpreter to forgive you. Every misplaced character has an impact on your program. Fast typing in programming means you keep pace with your thoughts, you correct less, and you maintain focus on the real task: solving problems. Without touch typing, programming is often inefficient and disjointed. With it, coding becomes more fluid, intentional, and fulfilling.

AgileFingers focuses on this very challenge: giving programmers typing lessons that are based on real code, not random characters used in a programming language's syntax. It is not about teaching you a language from scratch but about making you comfortable with the mechanics of typing its syntax. That combination of language familiarity plus touch typing gives a developer confidence.

Languages by typing challenges

Different languages present different typing challenges. From a touch typing perspective, it makes sense to group them by the physical patterns they demand from your fingers, not by whether they are object-oriented or functional. AgileFingers offers practice in Java, JavaScript, C++, C#, Go, PHP, SQL, Bash, and Python. Here's how they differ:

Brace-heavy languages (Java, JavaScript, C++, C#, Go)
These languages rely heavily on braces {}, semicolons, and parentheses. They form the skeleton of the code. If you're slow at typing code in those languages, you might lose your train of thought. Consider Java:


public class Greeter {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("Hello " + i);
        }
    }
}

Or C# with its verbose but structured syntax:


for (int i = 0; i < 10; i++) {
    Console.WriteLine($"Value: {i}");
}

Typing loops like these quickly requires fluency with braces, parentheses, and operators. C++ adds pointer operators (*, ->), and Go simplifies syntax but still leans on braces. Practicing these patterns in AgileFingers helps you internalize them so you no longer break thought when writing them out.

Symbol-heavy scripting languages (Bash, PHP, SQL)
Scripting languages are different: they lean heavily on symbols. In Bash, you intensively use pipe signs (|), redirects, and dollar signs:


for file in *.txt; do
  echo "Processing $file"
done

In PHP, every variable starts with a $, and you constantly switch between HTML-like tags and C-like syntax. In SQL, you deal less with punctuation and more with structured keywords:


UPDATE users
SET active = 0
WHERE last_login < NOW() - INTERVAL '30 days';

In programming languages like these, touch typing involves developing familiarity with keywords and symbols. Even a brief pause over typing a pipe or a missing semicolon can interrupt your thought process.

Indentation-driven languages (Python)
Python is unique in that indentation is part of the syntax. Missing a space or a colon can break your program. The typing sequence is clear: if ...:, newline, indent. For example:


def factorial(n):
    if n == 0:
        return 1
    return n * factorial(n - 1)

Practicing touch typing in Python helps you internalize its visual structure and indentation-based syntax. In most editors, tabs or spaces are inserted automatically, but developing familiarity with how code blocks look and feel keeps you from second-guessing your input. Once you're no longer distracted by formatting, your attention can fully shift to problem-solving and logic. AgileFingers offers many Python fragments to help reinforce these patterns and build programming language syntax familiarity.

Other programming languages
Beyond those already supported, languages like Rust, Kotlin, Swift, or Haskell each come with their own unique syntax features. Rust emphasizes memory safety with features like borrowing (&) and lifetimes ('a). Kotlin embraces lambdas and arrow functions. Swift combines familiar C-style syntax with modern, expressive features. Haskell demands careful indentation and favors symbolic operators. No matter the language, touch typing helps you get used to and efficiently use the tricky parts of each programming language.

Programming in Flow

Programming feels best when you're fully immersed - when ideas and code flow seamlessly from your mind to your fingers without conscious effort. This state of focus, often called "flow," transforms coding from a mechanical task into an almost creative act where decisions and syntax appear instinctively. Touch typing is a critical skill for achieving this state because it removes the distraction of searching for keyboard keys or second-guessing syntax. Instead, you remain locked onto your logic, your design, and your problem-solving. With enough practice, typing becomes as invisible as breathing, allowing you to sustain long stretches of deep work and reach a level of productivity and clarity that autocomplete or copy-paste shortcuts alone can never deliver.

Code autocompletion

Autocomplete can be useful when filling in long variable names or class names. But when it suggests entire loops or blocks, you stop practicing syntax. You let the tool think for you. The danger is that you simply forget the syntax, and without advanced tools, you won't be able to code anymore.

It gets worse with AI copilots. They can suggest entire functions, sometimes even multiple blocks at once. At first, it feels efficient, but after a while, you notice you hesitate when you code without them. You forget small but important details. You lose ownership of your code. Instead of being a programmer, you become a reviewer of the AI statistical code. Touch typing keeps you engaged-it forces you to type out the constructs yourself, strengthening memory and skill. That's what AgileFingers is about: making sure you stay sharp, so you don't regress into dependency.

Working with IDEs and editors

An IDE (Integrated Development Environment) is more than just a text editor. It combines editing, debugging, refactoring, testing, and project management into one tool. Examples include IntelliJ IDEA, PyCharm, or Rider. They offer powerful autocompletion, error detection, and navigation features. But again, the value you get from them depends on how fluent you are at the keyboard. If you type slowly or rely too much on the mouse, you won't take full advantage of what they offer.

While autocomplete in IDEs is a valuable tool, it shouldn't replace foundational knowledge. Reserve it for long identifiers, not for core language constructs. If you let the IDE fill in every for loop, you gradually lose fluency. Touch typing in programming keeps you independent. You know how to write the constructs yourself, and you let the IDE support you rather than replace you.

At the edge between IDEs and editors sits Visual Studio Code. Some call it an IDE, but technically it's an advanced text editor. With the right plugins, it becomes incredibly powerful. One of the popular ones is Vim emulation, which brings the efficiency of Vim keybindings into VS Code. Others add Git integration, database browsing, or linting. The point is: no matter the tool, touch typing enhances it. If you don't master your keyboard, even the most advanced tool cannot make you productive.

Neovim - the power of a keyboard-first editor

Neovim is built for the keyboard - no buttons, no distractions. Unlike graphical IDEs, Neovim relies on precise commands: dd deletes a line, ciw changes a word, :%s/foo/bar/g replaces text across a file. Navigation is just as fast: 42G takes you to line 42 instantly. Touch typing here isn't optional-it's the price of entry. The faster and more accurately you type, the more Neovim rewards you.

Neovim's plugin ecosystem makes it versatile: telescope.nvim for searching, coc.nvim or nvim-cmp for completion, fugitive.vim for Git. It's not about flashy interfaces-it's about precision, speed, and staying in the zone. If you enjoy the feeling of being in complete control of your code, touch typing combined with Neovim can be one of the most satisfying experiences in programming.

Mechanical keyboards and programming comfort

After years of writing code, you start to realize the keyboard isn't just a tool - it's part of how you work. Mechanical keyboards bring a level of consistency and control that most laptop keyboards can't touch. For someone who spends hours typing computer code, that means less strain and more precision over the long haul. You can even choose from different switch types - often identified by colors like red, blue, or brown - that change how each key feels to press: some lighter and faster, others more distinct and tactile. This lets you tune the typing experience exactly to your liking. When touch typing on a good mechanical board, the motion of writing code becomes smooth and natural, and your fingers stay relaxed even during long sessions. Over time, these small choices make a big difference - not just in speed, but in how sustainable programming feels day after day.

The role of AI and keeping skills alive

AI tools are becoming more capable by the month. They can generate snippets, entire functions, even whole programs. They can suggest solutions faster than you could type them or even think of them. But there's a risk: if you let the AI do the heavy lifting, your own skills decline. You stop recalling syntax. You lose the habit of writing programs by yourself. Programming turns from an art of creation into oversight over an advanced, mindless tool.

This doesn't mean AI should be ignored. Used wisely, it helps with repetitive boilerplate or with debugging output. But if it writes every block of code for you, you are no longer the programmer-you're a code reviewer. That's not the kind of career most of us imagined when we got into programming. Touch typing keeps you actively concentrated on the task, and ensures programming is creative and pleasurable. Tools like AgileFingers exist precisely to reinforce these skills. They help you practice the fundamentals so you can stay sharp, independent, and effective in an industry that risks outsourcing the joy of creation to machines.

Final thoughts

Touch typing in programming is one of those foundational skills that quietly strengthens everything else. It keeps you in flow of creativity, reduces number of bugs, and frees you from leaning too heavily on autocomplete or AI suggestions. When you type without looking at the keyboard, without thinking that you are typing, you just enjoy the process of creating code. Most importantly, the keyboard stops being an obstacle and becomes a natural extension of how you think and create.

AgileFingers offers lessons that reflect the real-world experience of coding. Instead of random keyboard keys, you practice with actual syntax from languages like Java, Python, Go and many others - helping you build muscle memory for typing code you'll create every day as a programmer. The benefit of using AgileFingers is twofold: you type faster, and you reinforce your understanding of programming languages. In a world of ever-growing automation, mastering the simple act of typing your own code may be one of the smartest investments you can make as a programmer.