At 2.000+ lines of code, you need abstractions. Picking good abstractions is hard. Experience teaches you which are good or not.<p>Above that, you need architecture. Picking a good architecture is hard...