One of the earliest frustrations I encountered in programming was that I had to re-do stuff I had already done before, maybe 6-12 months after first starting. Often writing similar code that was just about different enough to make copy/paste or reuse tricky is not fun, especially when the novelty factor is gone. Not to mention all the Java boilerplate…