Hat jemand zu dem Thema ein paar Tipps zuviel? Dann bitte los!

Ich habe festgestellt das grössere Programme bei mir die Tendenz haben offensichtlich nicht all zu gut gedesignt zu sein. Oft sind die Sachen für meinen Geschmack viel zu eng miteinander verflochten, es gibt keine klaren Schnittstellen.
Oft wäre auch eine strikte Trennung Funktionalität/Gui noch nett, fehlt bei mir auch meistens. Das Problem ist halt dass sich das am Anfang (programm ist klein) nicht so sehr lohnt.
Wie kriege ich das besser hin?

Es gibt ja diese Schlagwörter - MVC, Patterns, etc. Schön. Aber wie wende ich sowas an? z.B. MVC scheint mir für gewisse Sachen geeignet, für andere nicht. Nur was mach ich bei all den Sachen die unter "andere" Fallen?

MfG Peschmä