As someone who has been working with the force.com platform for over two years, it still isn’t obvious to me where a developer should start writing applications. Part of this confusion comes from multiple options to choose from and not understanding the consequences or constraints of what you choose. My purpose in this article is to provide a quick and easy reference to help us decide where to start.
One of your first stops as a developer may be to create your own Developer Edition organization and begin your work there. Or if you or your company is a Salesforce.com Partner, perhaps you would create a Partner Developer Edition through the Partner Portal. (Partner Developer Editions provide additional licenses and increased API limits. See this link for more information.). Alternatively, if your company is running an Enterprise or Unlimited Edition, you might decide to create a Developer Sandbox.
Right off the bat, there are multiple choices, which one makes sense for your situation?
From what I’ve been able to determine, for new development, your choices will depend on two things. First is what type of production organization do you have?
|Production Org. Edition||Developer Edition||Partner Developer Edition||Sandbox|
Notice that for Group and Professional editions your choice is limited to a developer edition. The Enterprise Edition provides you with one developer sandbox and additional sandboxes can be purchased as needed. With the Unlimited Edition, all options are available.
Another factor that limits your choices is your preferred method of promoting changes from one salesforce.com organization to another. The table below outlines these constraints:
|Promotion Method||Developer Edition||Partner Developer Edition||Sandbox|
|Metadata API (Force.com IDE, Force.com Migration Tool, etc.)||Yes||Yes||Yes|
Change Sets limit you to develop in Sandbox environments while creating managed packages requires the use of a developer edition.
What other factors are you aware of that would help you determine what environment to use to develop force.com applications? What is your preferred method for promoting changes between environments?