We are new to Salesforce and only recently we started actually discussing using Salesforce to support some of our more complex business operations.
The use of Salesforce to support these business operations will require several new custom objects in additional to custom visualforce pages, triggers, API, etc.
So far, we have only created simple customizations to our Salesforce organization such as visualforce pages to meet simple objectives, triggers, new custom objects, etc. When we got these quick and small customizations done, we either used our Developer Sandbox or a Developer Organization.
In case of the Sandbox use, depending on the complexity of the customization, we either created a changeset to deploy to production or manually created the customization in our production organization. Now, when we used a developer organization, we pushed the customizations to the Sandbox either via a unmanaged package or by manually creating them again in the Sandbox; and once installed and tested in the Sandbox, we followed the Sandbox approach mentioned above to push them to production.
So, now that we are discussing creating complex customizations to support our business operations, which will involve creating a lot more custom objects, relationships, triggers, API calls, etc, we are curious to know what most Salesforce developers in similar situation as ours are doing.
What approach would you use?
Develop the app in the Sandbox and push to production via changesets.
Develop the app in a developer org and push to Sandbox and production via a UNMANAGED package. (I think this approach does not allow for future upgrades)
Develop the app in a developer or and install into Sandbox and Production via a MANAGED package (We had a hard time with this approach in the past as we were not able to easily troubleshoot errors due to the managed package's debug logs not being visible to Admins).
Any feedback is greatly appreciated.