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 |
Group | Yes | Yes | No |
Professional | Yes | Yes | No |
Enterprise | Yes | Yes | Yes |
Unlimited | Yes | Yes | Yes |
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 |
Managed Packages | Yes | Yes | No |
Unmanaged Packages | Yes | Yes | Yes |
Metadata API (Force.com IDE, Force.com Migration Tool, etc.) | Yes | Yes | Yes |
Change Sets | No | No | 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?
PaaS: Don’t Forget about Developer Tools
Prior to Platform as a Service (PaaS) technologies (e.g force.com), a developer was required to have at least a basic understanding of operating systems on which their software would run. They would need to know how to configure, set up, optimize and tweak the underlying operating systems, databases, middleware and sometimes even the underlying servers and network infrastructure. Using PaaS, vendors take over the management of everything but the application and the data structures.
For business people who are working to increase sales, decrease expenses and increase profitability, PaaS vendors have crafted a very seductive message. No need for investing in capital equipment. Faster application development. A utility model that you pay only what you use and grows with your business. What business person wouldn’t want that?
While business people are responsible for making the investment, PaaS vendors also need to take care of developers. Without developers, PaaS vendors cannot deliver on their promises. This means that vendors have a duty to understand the current marketplace standards as well as the tools that developers have been using for quite some time.
These tools and standards have matured to a point where developers rely on them daily to be more effective and productive. And while not every tool developers would use in a Java or .NET project would necessarily apply in a PaaS project, writing and deploying software is still fundamentally the same regardless of the chosen platform.
What tools to you rely on to be more effective and productive? Do you think they are applicable for PaaS based solutions? What PaaS tools would you like to see?