@mangeurdenuage Any solution to any problem can be viewed as a specific application of some more general principle, recursively. If you first write that more general program, and then write the program you were _going_ to write in terms of that general program, then it might be useful for a larger class of problems, and more interesting to write (...also recursively). And it may also take orders of magnitude longer to write, and require more research, and possibly never get written.
As a professional, one learns to identify and avoid this problem, unless generalization is warranted (perhaps through incremental development). Yet at home, I fail to control myself. Which leads to a whole lot of interesting research, and a whole lot of incomplete projects.