tl;dr:Mark wrote a memo to his daughter, who’s studying data structures, to memorialize the important process issues surrounding writing software: (1) It's important to remove as much friction as possible from your basic process. (2) It's tempting to cut corners when writing code e.g. "you need to optimize for quick and easy reading, at the cost of slower and more careful writing." (3) Debugging is methodical: always have clear in your mind what question you are trying to answer, and what your plan is for investigating that question. (4) After you fix something significant, or add significant new functionality, make a checkpoint copy of the entire source code.