@stephen.hoffer In my experience we actually started implementing ALM with the most complex models due to some compliance requirement. It does involve a huge effort in identifying all the prod lists, actions, formulas reference in the modules, etc. But, I feel that with a proper approach using agile methodology and working on it as a project would be helpful. This was my approach when implementing ALM globally. I also had to think of all the training and knowledge transfer to all the teams/admins globally.
However, based on your org requirement you can decide what would be a better approach.
The main points I keep in mind when utilizing ALM:
1. Ensure the appropriate lists have "production data" checked off.
2. Check your actions to make sure they work in a model that's in Deployed Mode." I've run into trouble where I created actions that add items to a number list and then had trouble getting the action to work in deployed mode.
3. Always keep a copy of the change log. It's also a good idea to review the change log before you complete the ALM process.
4. I generally will change the mode on my DEV model to "Deployed" to test if actions and other changes will work in PROD.
5. Have a release plan once your model is in production. Plan for maintenance windows.
6. Have a communications plan to0 let the appropriate users or model builders when releasing a change.
I think the default building mode should be ALM. It's part of our job as model builder to provide the best possibilities to our users. ALM offers great possibilities for stability and testing, to create copies as various important points of the history of the model, segregate duties etc etc
Also because setting Up a model to be ALM ready is easy when you are building the model, less so once it's all done and running.
Yes ALM can feel cumbersome when you are doing a heavy development and you need to pass a quick update for the prod model (set a revision tag, roll back to prod version, do the change, revisition tag, sync, roll back to dev revisition tag, reproduce change). However what is the alternative ? Developing in the prod model in parallel modules to not disturb users and copy the changes once they are done ? Block them everytime a mistake is made ? or developping in a copy and having to manualyl bring over all the changes ?