The way we build SharePoint customizations is changing. Are self-contained solutions still the best practice or is there perhaps a better pattern?