Wade Wegner11:55
Do you mind if I start a little bit before 2016? Because we can get a little geeky insider here, because a lot happened. I may have joined in 2015 or early, I can't even remember. But one of the things I alluded to earlier is that some work had already been underway for a little while. At Salesforce, there was a principal architect named Jim Wonderlick. Folks who joined keynotes and so forth at different times may have had an opportunity to hear from Jim. Brilliant guy, had been with Salesforce for a long time, really understood both how it was used and the thing that I always found fascinating is there are engineers building internally and writing Java code creating everything else that we interact with. Jim knew both sides of the equation extremely well. He was very well versed with how Salesforce worked internally. Jim had been assigned to work with FinancialForce basically after these outages or these incidents around CI/CD, and been tasked to figure out what is a better way for them to be successful. How do we make our largest ISVs successful building on our platform where they need to have the tools they need to control the outcomes that they care about without negatively impacting the underlying infrastructure? Jim ended up writing a brief, and that brief was called Project Janice. That was the name of his analysis. In Project Janice, a lot of the things that people think about and relate to Salesforce DX were conceived originally. Scratch orgs, the scratch org concept, was born out of Project Janice. It was born out of this recognition that teams needed pristine environments that you could just throw away when you're done, disposable, one-time use type of environments. Originally, scratch orgs were really envisioned to work hand in hand with packaging, and this is where second-generation packaging as a concept came into play, which also brought in this idea of source-driven development as well. All of your source can be expressed external from an org, committed into a repo, and then have a set of tools that you could use to generate packages to deploy into orgs. Project Janice really codified a lot of the fundamental principles that ended up eventually becoming Salesforce DX. But I'll note that because Jim was working with FinancialForce, there was a very heavy ISV dimension to it. A lot of the early work around Salesforce DX was not meant to initially replace the entire developer experience, but it was really focused on how do we get ISVs with packaging more successful. When I joined, that's the world that existed. By the time I joined, Jim had already identified a bunch of the teams that needed to work on this, along with a gentleman named Doug Scott, who was the head of platform engineering at the time. Jim worked with Doug Scott, and Doug Scott and my boss, who was eventually or who became my boss was Adrien. Doug Scott and Adrien had gotten the buy-in from basically whoever they needed to at Salesforce to make sure all the teams that needed to work together to make this vision a reality all got organized into one engineering and product organization. Scott Musen was my counterpart on the engineering side. Jim Wonderlick was our architect, Scott Musen ran engineering, and I ran product. By the time I came in, it was really pretty amazing. We basically had all the teams and everything we needed to own our own destiny, which was just incredible. We were able to move pretty fast. One of the things that I really appreciated about Scott Musen is building at Salesforce, not only are you building net new things, but you're responsible for maintaining existing things. Almost every team at Salesforce is responsible for fixing bugs or dealing with whatever normal workloads, maybe requests from customers that you need to work on, and they bump the queue. One of the things Scott Musen ended up doing which was great is he organized his teams so that some of the teams carried maybe the lion's share of the burden for doing a lot of the management of different things like maintaining the Metadata API, and he created these new teams that were not encumbered by anything that existed and were purely focused on innovation. That really enabled us to move pretty fast. Some of those early teams, the scratch org team was pretty much a net new team. They pretty much only worked on building scratch orgs. There was a team that eventually built the CLI, and all they were doing was building the CLI. And we had a team working on source-driven development. We ended up creating a bunch of those teams, and we were able to move pretty fast on a number of dimensions. Eventually, we got to the point where after we did a review with Benioff, which is a fun story, we got through a bunch of those internal reviews and found ourselves before Dreamforce with the opportunity to showcase this. It was still pretty early, but we did open it up as maybe a preview or a pilot. We had scratch orgs, we had CLI, we had the basics for moving metadata in and out. It was a great starting point for us at that Dreamforce.