Superlearning for programmers: code maintenance

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….

  1. 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.
  2. Follow code flow.  With speedreading it is very easy to but breakpoint in the right place, and follow the execution loops properly.
  3. 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.
  4. 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.
  5. 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.
  6. Function and variable names . Remembering the proper name so that finding it is easy – this is a pretty basic skill. Again, Major System helps…
  7. 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.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.