RE: Managed and unmanaged Solutions
Hello Dima.
Several conditions apply here. But the most important is to have clear the "managed" vs "unmanaged": An "unmanaged" solution allows you to continue making changes, while a "managed" means that no more changes are released on that version. For example, you have a form with some changes that switches field distribution as well as adding new fields. The developer is going to make the changes on their environment, but you will need to pass this through 2 tests:
- How does this change works with the rest of stuff & Data you have?
- Are the users OK with these changes?
In order to check the first test, you should have an "intermediate" environment (namely UAT, PreProd, testing or something like that), where you'll see how that form behaves with datasets and volume closer to real. In order to solve the second test, you should ask a few key users to test on the same environment (UAT, PreProd, Testing, etc) and validate usability.
If an of those tests has issues, a new iteration with the customizations will take place, and here lies the question: Would you upload something to production that is not the same that you've uploaded to the previous environment? IF you upload to UAT an Unmanaged solution to UAT and a Managed to Production, you might be missing some changes. The idea is to aim for consistency (what goes to Testing is the same that will go to Production, to avoid changes on the process).
This is why sometimes, companies that have several developers might have another environment "Integration", that will contain Unmanaged solutions, and once all code/customizations are deployed into that INtegration environment, will use to generate the Managed solution that will move to UAT (so the same "Managed solution" approach used to move between INT and UAT is the same process between UAT and Prod)
Regards,