There are many ways speedreading can help a programmer. The first time I wished I could speedread was back in he year 2000, when I had to maintain a code of 1mil lines. Back then I could not speedread, and eventually could not fix all the problems I made in time. The product did not graduate from the prototype stage. The next time I went to a very similar code was ten years later in 2010. But this time I could read very fast, and the code became the basic infrastructure of the company’s product. Since than I needed to write and maintain complex code more than a couple of times, and I was continuously successful. Below are some ideas of how I use speedreading to maintain code.
For code maintenance I typically use the fastest mode of speedreading I can master (~5000wpm), with focus on recognizing patterns. The patterns are created by code highlighter and keyword highlighter. I consider languages with explicit initialization and brackets in syntax more readable, polymorphism reduces readability….
- Get familiar with the code. Complex code has complex structure: many files, many functions. With 5000wpm speed, I can go file by file and try to register the size of each file/class, find the most common objects and functions etc.
- Follow code flow. With speedreading it is very easy to but breakpoint in the right place, and follow the execution loops properly.
- Find the proper code line. If a search string appears 50 or 250 times, with speedreading I can visit all of these occurances within 5 min until I find the line I am looking for.
- Interfaces and design patterns. Some interfaces and design patterns and interfaces appear in a similar way throughout the code. For an interface per file I occasionally remember an approximate number of line, so I can get there effortlessly. I use a variation of Major System for this purpose. Also, when you know what to look for, it is very simple to find a singleton, a factory and some other classes.
- Watch values. This is pretty straightforward, very much like spot the differences exercise. I can easily see which values changed, why they changed, and attribute the change to the proper algorithms. Very handy when debugging.
- Function and variable names . Remembering the proper name so that finding it is easy – this is a pretty basic skill. Again, Major System helps…
- Folder structure. Occasionally folder structure gets complex. Memory palace (loci) is probably the best method to navigate complex folder structure and find the right files.
In this article I focused on more mundane and simple aspects associated with programming skills. I will write articles addressing superlearning deeper aspects of programming.