I recently restarted writing real programs after several years of suspension. By “real” programs, I mean:
- The implementation involves at least a few hundred lines of code.
- The program needs debugging whenever I add a new feature.
- Most bugs and frustrations come from my own fault in designing or implementing the program behavior, rather than from external imperfection such as my unfamiliarity of the language syntax or the lack of quality documentation for a library.
Here is how I feel:
- Wow, I can still write recursive programs!
- It is enjoyable to build real programs. I enjoy the freedom to design the core data structures and method interfaces. I enjoy the accomplishment that the program works because I contributed the core, not because I deciphered a library. I enjoy the predictability that the program either works or misbehaves from a solvable issue. I enjoy the satisfaction from making solid progress every few hours.
- I am nostalgic about undergraduate years when I was obsessive in programming. I now feel unsafe to enjoy programming when I am supposed to do research — writing programs looks irrelevant to research, unless the programs verify research ideas. Without a clear research idea, what can I program for? Even if I fixed a bug, does it mean that I made any progress in research? Well, I almost forgot that not all efforts immediately achieve the goals. Programming may help research indirectly as well. At least at this stage, certain programming experience can help me build knowledge and see farther away.
写程序有感 — deeper thoughts, a month later. Try using Google Translate and reading backwards.