When to Generalize and When to Call YAGNI
In Japanese there's an expression, "大は小を兼ねる” "The Greater Embraces the Lesser." I find that it's a pattern that shows up repeatedly in software. The general modeling of a problem will contain a particular instance of that problem. A solution that solves the general problem will solve a particular instance of that that problem. Like in Mathematics, solving the generalized form of a problem may be more complex. Physics, the observable specific field of study helped inform the derivation of Calculus a generally useful concept across sciences. Like the Russian Matryoshka doll, several layers of complexity may lie within a larger problem domain. It's often tech's responsibility to suss out this relationship and pinpoint the layer that our business sponsors really want addressed. For an engineer, it's frequently the case that addressing a particular instance will be faster and less complex to devise than the general purpose solution. YAGNI (your ...