Many of our data definitions and function definitions look alike. Similarly, a function that looks for a specific symbol in a list of symbols is nearly indistinguishable from one that looks for a specific number in a list of numbers.
Repetitions are the source of many programming mistakes.
Therefore good programmers try to avoid repetitions as much as possible. As we develop a set of functions, especially functions derived from the same template, we soon learn to spot similarities. It is then time to revise the functions so as to eliminate the repetitions as much as possible. Unless we edit the essay several times, it does not express our ideas clearly and concisely. It is a pain for others to read it.