Programming Discipline: How to Read

annie-spratt-303940.jpg

Years ago, before boom of online academies, the simplest way to get a dip into a programming language was to get a book titled Some Language in 24 Hours.

Regardless of the language, 24 Hours or Dummies-style books followed a simple pattern: how to do loops, conditionals, functions, maybe classes, and finally some advanced application using what was learned earlier.

When I was young, I foolishly thought that reading one book from each language would make me a master programmer. But no, fortunately things are not that simple, and more advanced books were necessary.

I don’t mean books with just the word “advanced” in the title. There are textbooks, topic specific books, language agnostic books, and even more experimental pedagogical books, which The Little Schemer stands out as perhaps the most unique.

But unlike those introductory titles, before enjoying these books there’s a mental leap that needed to take place - one must accept that they may not read the same way anymore.

Take Design Patterns, which has a format that’s meant to be dipped into overtime as project challenges require. Sedgewick’s Algorithms for the non-student is more enjoyable to take multiple passes through, each time diving deeper into the proofs and chapter questions as understanding grows richer. Ericson’s Real-Time Collision Detection or Millington’s Artificial Intelligence for Games are fun to walk through slowly, consuming new topics as confidence grows and projects gain complexity. Regardless of the format, reading straight through in a timed manner, just doesn’t make sense or is even counterproductive.

The read-as-you-need approach is practical, but there’s one more thing necessary advanced programming titles -  acknowledge that some books may go right over your head or just not connect immediately. This is basic humility, but also a step up when transitioning from books / courses that want you to succeed to books that demand you meet them on their terms, not your study schedule.

Both of these ideas are antithetical to the genius hacker hero model that pervades the programming mindset. Of course, every programmer should be able to read any book at any time and get it the first time and never need to go back. Anything less and you must be a non-Rockstar!

One of the most common adages in programming is that “you spend more time reading code than coding.” It’s a shame that with so many titles out there for professionals and amateurs, that we spend so little time discussing how to do our most time consuming activity.