function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
john braun 28john braun 28 

Need help understanding Salesforce DX concepts

I'm not a developer & am just trying to understand the concept/process. I somewhat understand the 60,000 foot concept behind Salesforce DX and version control but would like to know more detail around how it actually works in practice.

I understand that with DX, developers  manage version/snapshots of the production config in the VCS (would developer teams manage their own independent VCS, or would they all work from a single VCS like Git/Github?). Then, whenver they are making changes or builidng new functionality (code/config), they generate a scratch org using a version from their VCS.

But what prevents another developer from building something else in another scratch org based on the same metadata version? It still seems that each new change still has to be linear, what am I missing?

Example: 
You have two different developers, who are working on separate DX projects and separate version control systems. Developer A is working on a trigger with test class. Developer B is working on a validation rule.
Developer A creates a scratch org from the CI by loading the most current source version from production.
Developer B creates his own scratch org the same way from his source version from production.
How does the Salesforce DX process ensure that Developer B's validation rule does not break a test method in Developer A's unit test? Assuming they start with the same version and are working in different scratch orgs?
Also what ensures that they are even each working with the same version?

Finally, how does an admin participate in this process? SFDC treats declarative config the same as programmatic. Does an admin also have the ability to create scratch org or is that process only for developers?

It seems that you still have to coordinate to make changes in a linear fashion as it defeats the purpose if you have 3 people coding/configuringin different scratch orgs, even if the version they are working off of is identical.