Salesforce for Developers Keynote | Salesforce

Keynote (Dreamforce, Oct 2016) demonstrating how to build modern apps on the Salesforce platform. Speakers show three pillars: build apps faster with Lightning (component framework, Lightning Data Service, app builder, mobile readiness), build apps smarter with Einstein services (event capture via Kafka/Heroku, PredictionIO, Einstein Vision—train/predict flow and push notifications), and build apps together with the new Salesforce Developer Experience (CLI, Scratch Orgs, source-driven workflow, test runner, Heroku review apps and CI/CD). Customer FinancialForce describes real-world adoption and expected productivity gains from the Developer Experience.
Questions this video answers
700 employees (FinancialForce).
1300 customers across 27 countries.
Chapters
Thank you everyone. Thank you. Welcome to Dreamforce. Welcome to the Salesforce for developer keynote. Now this is one of my best times at Dreamforce because we get to meet all of you and show you how to build on the Salesforce platform. So the next one hour or so we are going to open the hood, look at some code and generally geek out. So over the next one hour you're going to see some forward looking statements, some demos which are not generally available. So don't make purchasing decisions based on that. If you want to know what is exactly available for you to buy, go to our website. Now we want to show you a lot of things, but before I do everything, I want to do a very important thing. I want to thank all of you. I want to thank all the developers who bring such amazing innovation to the Salesforce platform. I want to thank all the members of technology and products team at Salesforce who built this platform. And I want to thank all of you who take the 1:1,1 model to heart and give back to your community. Thanks to your amazing passion for technology and innovation. I'm pleased to announce that Salesforce is the fastest growing enterprise software developer community. We just blew past the 3 million plus developers trademark and then all of you have created 175 developer groups across 45 plus countries. This is the place where all of you get together, share best practices, have fun and give back to the community. Now the cloud has changed lot of things, but one of the most important things that it has changed is the definition of success. Adoption is the new measure of success. If you are a developer, you need to remember and obsess about two metrics, DAU and MAU. DAU stands for daily active users. MAU stands for monthly active users. As developers, all of us, the only thing we hate more than sloppy code is this code we have painstakingly crafted. All of us remember where we spend nights and weekends, where we are trying to squeeze every millisecond out of performance, where we try to squeeze every network packet, where we try to squeeze every byte and then you're so proud of it and you release the code to production and you didn't have any usage. All of us remember that. So we don't want to be that, we don't want shelfware. This is too important for us. So you need to drive DAU and MAU. So you need to build engaging apps that your users can use everywhere. So what we are seeing is that these modern apps which are engaging, they are becoming experiences, they all have a common data model and a shared identity. They layer it with beautiful user experience. They have mobile, they have embedded analytics, they have notifications, they're smart, they have built in intelligence and most important of all, they're taking users on one on one personalized journeys. So that's what modern apps are becoming, they're becoming experiences. Now, if you are a developer, that's usually a tall order. To build this app. You need to string usually multiple tech stacks and hand string a lot of these together. And more importantly, once you do that, you need to worry about how it happens in the production, how you handle all the issues in production. So I, I'm pleased to say that the salesforce for developers, the customer Success platform, is a single integrated platform which gives you all the tools and services for you to build these modern apps. These tools range from no code to low code to a series of coding tools. And we try to provide an integrated experience and all the services required so you can focus on what's most important, that is creating business value for your end users and building amazing apps. Best of all, when you build on the platform, you can be rest assured that you're running on the most trusted enterprise cloud. You don't need to worry about trust or scale or performance. The bar for the platform team, the quality bar, is very high. Do you know, for example, we run more than 100 million tests every release before we release the platform. A lot of these tests are written by us, but all of you, which is why we insist that when you give us code, we have a huge code coverage ratio. I'm sure all of you appreciate this is a huge engineering task and requires millions of dollars of investment from our side, but we do it. We are your DevOps. We carry the pages so that you can focus on what's most important. Not only that, once it's on production, you don't need to worry about compliance. You don't need to worry about FedRamp or EU Safe harbor or socks compliance or any other PCI compliance. You don't need to worry about any of that. We take care. You don't need to worry about networks and firewalls and DDoS attacks and database backups and storage. You don't need to worry about things like identity and authentication and encryption. So all these services are built into the platform. The platform also allows you to be able to integrate with other third party services which most often than not, you need it. And that's all the services you get when you build on the platform. Now, as I talk to developers across the world, and customers across the world and see the trends that are impacting developers. What is that? We see, number one, we see that customers need apps faster. Mark Anderson said it right. He said software is eating the world. So we are in this period of huge technological disruption coupled with business model disruption. So Carrie knows that. Carrie is under pressure to not only develop apps faster, but her business. Users want to be able to change those apps. They want to run a lot of experiments because they want to try what impacts their business model. So this is the pressure on developers that you need to develop your apps faster now. Not only that, you need to build smarter apps. All of us remember the first time we tried to use Gmail, you generally sent an email with an attachment and you said, hey, Phil, I'm going to send you this attachment. And you forgot the attachment and Gmail threw an error. So saying that, did you forget the attachment? And a smile came to your face. You said, hey, this is smart. Not only that, the next time you use an app which was not smart, you were upset, you were angry. You said, what the heck? Why is this not smart? So your users, Sameer knows this. Sameer knows that if he builds an app which is no longer smart, his users refuse to use it. That's the bar that has changed. The other key thing we see is all of us as developers want to be individually productive, but we work on teams, most often globally distributed teams. We want to leverage a lot of what the community has done. That's what most of the open source movement is about. So you need to build apps together. Adam knows this. He knows he's most productive when he works with his team and leverages the community. So today, we are going to show you how to be a trailblazer. We are going to show you how to build modern apps that people love. We are going to help you build, show you how to build apps faster. We are going to show you how to build smarter apps, and we are going to show you how to build those apps together. So to show you how to build apps faster, I want to invite Leah McGovern here, director of technology and products, to the stage. Thank you, Leah.
All right, you guys ready to geek out? Okay. You guys ready to geek out? All right. You know, I've been teaching developers for over 7 years how to build apps faster on the platform. And I have to tell you, the platform continues to grow and expand and making the hard stuff easy. And lightning is our latest innovation that allows you to build modern apps fast. Now, lightning really is three things for developers. It is a beautiful and engaging experience that comes out of the box for all of our flagship apps like service and sales and custom apps. It is a framework that allows you to build modern apps fast. And it is a vibrant ecosystem of components and applications built by our partners and developers. So developers like you have these items to put into your application. It's the combination of these three things, experience, framework and ecosystem that allows you to build apps fast. Now I want to go a little bit more detailed into the Lightning Framework. See, the Lightning framework is really powerful because it has app and builder tools that are declarative, point and click, no code that allow you to build the baseline fabric of your application quickly. And then there's the application architecture which Srini spoke about, has all of those great things baked into it such as metrics and navigation, all of that out of the box. And then there's the component framework. The component framework is so powerful because it has everything you need for every piece of functionality, including configuration with simple markup, customizations and accessibility. Now in winter 17, there are some really cool features I'm jazzed about. Yes, I did use the word jazzed about that. I want to share with you that's going to help you build faster. Like Lightning Data Service, which takes care of all of your data binding needs. With simple markup, you combine data with your Lightning components. No longer needing to write Apex controllers. Hello. Okay. Lightning base components handle all of your HTML and CSS and Lightning based components allow you to develop quickly because one, they're based off the Salesforce Lightning design system. Two, they're accessible by design and three, they have client side formatting and validation. We also have available Lightning components as quick actions as well as Lightning components can be placed on the utility bar. Now, I know I'm jazzed about these and I know you are too. And we're going to show you all of these features. If you're like me, I need to see it to believe it. That's a lot of talk, but let's see the code. Leah, show me the code. So it really resonates with me when I see it in the the context of code. So we have that we're going to walk through in a moment. The Dream House app. The Dream House app is a completely connected experience. See, the Dreamhouse app has one employee experience for brokers that allows the brokers to maintain their listings and provide premier services to all of their clients. And then there's a really engaging customer experience that has this super cool native app. And we're going to See all of that. Now, the Dreamhouse app is built on the Salesforce platform using all of those awesome services that Srini spoke about earlier. So what I'd like to do, I'm going to introduce you to Greg Ruis. Greg and I are going to walk you through how the Dreamhouse app was built. Are you all ready? All right, Greg, bring up the demo.
All right, Leah.
All right, so whenever you're building an app, right, you always start with the foundation, which is the schema, right? That is, you're ultimately trying to get data in there or pull data out, right? So the schema, we have two custom objects. We have our property object and we have our broker. The property has a set of attributes on there. We've got price, which is currency, data type, which is taking care of all of the formatting for us. And we have all information around address, description. And it has a lookup, the broker has a lookup relationship to the property. Standard stuff. Now, once you build your schema, not only are you getting a schema, you also get out of the box this awesome lightning experience built for you with navigations, with screenshots, with search, with list views, with Salesforce REST APIs already built. I could go on and on, but I won't. But you get a whole lot out of the box, right? Lots of good stuff. Now, Greg, I like this interface. What do you think?
You know, Leah, I think it's pretty good right out of the box. But I have a feeling we could make it a lot better.
I think I'm with you on that. So let's go ahead and what we can do, bring up this, the app builder. So. So here we're inside of the app builder and on the left we had a set of standard components that come out of the box. Standard lightning components out of the box. Then you also see a set of custom components that you can build. Any developer can build these lightning components. Now get this. Winter 17, you can go directly into the app exchange from app builder and download components there directly right into your app builder. So you can also go into there. I think that deserves. That's pretty cool. That is pretty cool. And as you can see, Greg is dragging some of the custom components we built for the Dreamhouse app to meet some of the business needs. We have property map, we've got picture and a status bar. He's going to save it and bring us back to the ui and we're going to see what that simple drag and drop did, how quickly we were able to build with no code. Right. So he dragged that over, boom. We have a map, we have some pictures of the property that we can scroll through. These are all custom Lightning components, right? We also have a status bar at the top. Now if Greg comes in here and modifies the address, he's going to Change it from 18 Henry street to 20 Henry street and look at this. The property component automatically picked up that address. That was not an Apex controller. That was powered by the Lightning Data Service. It's like components talking to each other. He's saying, hey, I changed the address. He's like, yo, I got it. Okay, so that was all powered by Lightning Data Service, no Apex controller. What I'd like to do is add that same power to the status bar so that I can update the status bar directly from the bar and not have to go into the details. So Greg is going to bring us into Developer Console. And here we're looking at the property status component. You can see in here, if you look at lines 8 and 9, we have two attributes that are part of the component that get populated at instantiation time through the interface of force has record ID. Now line number 11 we use the force record tag, which is new. Winter 17 powered by lightning Data Service. In there we set the OR ID equal to Property service so that we can reference it in our JavaScript controller. Then our record ID equals curly bracket bang. We are binding it with our attribute back on line number eight that got populated and target record. We are making a reference to the attribute on line number nine. Then the fields that we are interested in are ID as well as status because we want to edit the status. Because we want to edit the status, we set the mode equal to edit. Now we're going to pop on over to the JavaScript controller and in here Greg is going to write component Find property service SaveRecord. Now find property Service is going to go reference that force record attribute that we placed in there. And then the saverecord is a method that comes with the Force record tag that that method takes the data, persists it to the database, handles your field level security, handles all CRUD transactions. No longer do you have to write an Apex controller code to do that. We are giving that to you as part of that. So now when we come back here, I'm saying, isn't that awesome? So now when he comes back here, I can actually modify the status directly from the status bar. This is all powered by Lightning Data Service. Now we have more stuff, right? We have the Lightning based components as well and Lightning components are no longer limited to just being on a page. You can make them quick actions so they can be anywhere we like to call them Lightning actions. Yep. Okay, well, here, when you click on it, it pops up. And here we have the smart home component that has several tabs there. The lights, locks, temperature. This is a connectivity component here. And later on, Greg is going to add another tab to that component. You're going to see how simple that is. And we also can place components on the utility bar so that no matter where I go in the application, that component is available to me. What does all of this mean to you as a developer? We are giving you more control over the experience. So here, Greg's going to walk us through adding another tab to the tab set for smart home component. Greg, walk us through that.
All right, Leah, here I am in that smart home component. And the first thing that you're going to notice is I'm using that very same forest record just like you talked about before. So this is actually tied to the same data. But the important thing that you want to look at here is our lightning tab set. Now, these lightning based components, as you've already mentioned, are really amazing because they are built directly on this Salesforce lightning design system, which as a developer means I no longer have to think about the HTML markup. I don't have to think about the CSS through some very declarative tags here. I can simply achieve things much, much faster. For example, I'm going to scroll down here and Leah, I want to share with all of these developers here the very first trick that, that I learned to building apps faster. Now this is a. It's very complicated here, so pay attention. It's called copy and paste. All right, so there I have my fourth tab. Of course, it's sort of silly to have two tabs sitting next to each other that say the same thing. So I'm actually gonna connect this one up to my alarm. And just so that I know it's my alarm, I'm gonna go ahead and change that icon because even all those beautiful icons in the Salesforce Lightning design system are, are part of these lightning based components. And so finally, I'll just tie this up with my alarm here. And now we're done. Let's refresh this page and we're going to see that fourth tab appearing for us here in our smart home component. And there it is.
Awesome. Look at that. So here, Greg, basically you see how quickly he was able to build an app where with very low code. So we have no Code, low code. It all helps you build apps faster. And as Srini said, the measure success for an app is how widely adopted it is. In order to be widely adopted, it must run on every device. Well, everything we did here is mobile ready. And you can see there's the Dream House icon and it's not the Salesforce One icon because new there's going to be white labeling. You can have your own custom icon. So you click on that and everything we saw in the browser on our desktop is available automatically on the mobile device, inclusive of the smart home component that Greg added another tab to. So that is how you build apps fast using Lightning. Thank you. Back to you, Shanil.
Thank you, Leah and Greg. So what have you seen so far? We have seen how you can build modern apps fast with the Lightning framework. We showed you some of the newer innovations we have done, like the data service, the base components. There are a lot more features which are in the platform and that's really our focus on the Lightning platform. Now what we now wanted to show you is how do you build smarter apps? How do you use Einstein Services programmatically and make your apps smarter? To do that, I'd like to invite Emily Rose, lead developer evangelist to the stage.
Thank you, Srini. It is an absolute honor to be here. Thank you. And thank you everyone. How are we all doing? Good. Awesome. So I want to talk to you all about building smarter apps with Einstein. But before I can do that, let's make sure we're all on the same page about what smart apps mean. What are smarter apps? Well, smart apps are event driven and they're always learning. So they're able to understand what's happening, they can anticipate what might happen next and they can even make recommendations as to what should happen. But how are we making that easier for you on our platform? Well, I'll tell you. You're able to capture and publish data using our high throughput event streams powered by Apache Kafka. We'll get into that a little bit more later. And then once you have that data, you're able to train and classify it and build models powered by machine learning with Apache Prediction IO as well as Einstein Predictive Vision Service. And then once you've trained your models and once you've built your classifiers, you can then begin to surface recommendations and make predictions and offer those to users doing anything from no code to any kind of code you want. JavaScript, Python, Scala, whatever. So how is something like that implemented? Well, Leah did a really good job of going through most of the employee experience. And we're going to try to focus mostly on the customer experience. So let's take a look at the customer Dreamhouse mobile app. Right, so here's a pretty standard application. People can interact with properties, view them, favorite them, so on. And as they're viewing properties, as they're favoriting properties, we're capturing all that data in real time. And then once we've captured that data with our event service, we're able to then train our algorithms, build up our intelligence, and once we've trained our models, once we have our classifiers built, we can then begin to offer predictions to our users that get better over time. So now that we've set the stage a little bit, so to speak.
Get it?
Set the stage. Okay, sorry. But now that we've set the stage a little bit, let's jump into a demo and show you how this works. So Greg is going to help me out again. He here we've got the Dreamhouse customer mobile app. Pretty standard interface, right? Nothing too out of the ordinary, but the key here is all of this data comes directly from Salesforce. Right? Because we're using the Salesforce mobile SDK, we can build this however we want. Our team chose to use react native, but you could just as easily use whatever technology makes sense for you and your team. But how do we start getting smart with this? Well, Greg is gonna start favoriting a couple properties. And again, as he does that, we're generating new events, getting insight into the kinds of properties that he likes and doesn't like. So now that you've favorited a couple properties, Greg, let's head over real quick over to the broker experience.
And what.
We'Ll do is change the price on one of the properties that he's favorited. So he's going to drop the price. And some of you are probably anticipating this, but he gets a push notification instantly. So he got that because he favorited that property. And we know he's going to be interested in a price change. But how did we build that? Well, we used Process Builder, so we took a look at the property object. We look for the price change events, and once we find a price change event, then we send a push notification. We invoke the Apex class push pricechange notification. Pretty simple. But how did we come up with that price? Well, obviously we've got Wave analytics, we've got a lot of options here, but because we're using Einstein, we now have the ability to kind of play with the price of a property. And see how that might affect its time on the market. But we could also just take it a step further and simply calculate the optimum price, just like that. And we can do that because we have such a large data set, right? We have all this data on properties in similar areas with similar amenities, right? Same number of bathrooms and garages and bedrooms and all that stuff. So we can make some really educated predictions, but I think we can do even better. So, Greg, if you could jump back over to the app, let's take a look at another interface. Here's something that might be familiar to some of us. Greg is now tapping, sorry, swiping left and right on properties. And every time he does this right, he's generating another data point. So over time, we're able to get better recommendations to him about what he likes. We're making better recommendations over time. But how do we build that? I will tell you. I remember I mentioned Kafka a little bit earlier, and Kafka can do a lot, but for us, we're using it primarily as the underlying publish and subscribe messaging infrastructure. So for us, it starts with line seven. We require the Kafka module. Then we instantiate the Kafka producer, and then from there we simply call producer send. We give it the topic that we're going to send to and the message. In this case, we're just stringifying some JSON, and then to flip that around when we want to consume that data again, require the module, instantiate a Kafka consumer, and then we simply subscribe to the interactions topic, and every time a message comes in, we just push it into the database where we can wait to learn from it. And then, you know, speaking of learning, how do we do that? This is where I think a lot of people start expecting complexity. But the beautiful thing here is you don't have to dig into the algorithms unless you really want to. The only thing you need to worry about are two methods. Train and predict. That's it. So, all right, so we've got some intelligence here, but where else can we use this intelligence? Greg, what do you think?
Well, you know, I'm sorry, Emily, I'm. I'm a little distracted right now. My mom just popped up on Facebook. I hope you don't mind if I help her out for just a second. She's actually thinking about moving to Boston.
Cool.
I thought I would try to help her out here and see if there's three bedrooms in Boston that she might like.
All right, so let's explain what's happening Here. So we built a Heroku app. And this Heroku app is allowing Greg to use natural language to, to ask for properties in the area. So he's asked for three bedrooms in Boston, and what it's able to do is give back results from that same Salesforce data. Right. So to kind of touch on what Srini mentioned earlier, the metric of success is in active users and engagement. And an increasing number of our users are engaging in social messaging apps as well. So you can take that data out into those apps. So here he's able to schedule a visit or view broker info.
I don't really like any of these. I wonder if there's anything better.
Cool.
All right, so here I think Greg's going to show us another opportunity to add intelligence to our app, to make our app smarter. And what he's going to do, as the bot suggests, is simply upload a photo of a house that he does like. And again, to set the stage here, what he's doing is he's uploading a photo of a house that our service has never seen before, but it's able to obtain a classification for that house because we've trained a model, right? So instantly, oh, that's a colonial house. Let me show you some colonial houses in the area. And he can schedule the visit. So how did we build that? Well, here we are, and it starts on line six with our model id. So we have our unique model id and to explain what we've done is so we built a model for classifying styles of architecture. So we took a couple hundred photos of modern house and a couple hundred photos of Greek or colonial. And once we've built that classification, we can then ask for classifications on photos that our service has never seen. So here, when we want to do that, we simply create a post request and we give it our API key. And from there, the important parts on 20 and 21 is to just reference the model ID and upload that photo. And from there we're able to get the classification and then go search through our Salesforce data. And that's how you build smarter apps. Back to you, Srini.
So thank you, Emily and Greg. So what we have seen so far, we have seen what Emily showed was how do you capture all these? To build these smarter apps, you need three steps. You need to be able to capture and publish the data. We use Apache Kafka service on Heroku. For that, you need to be able to train and classify, and then you need to surface predictions. The important thing for you to remember is with Our prediction I O service, it comes with pre built algorithms for a lot of use cases. For most of you, you won't need to do anything other than train your data and call the prediction algorithms. But if you want to build a specific model, we encourage you to do that. I just request you to again give it back to the open source community. So the next thing we want to do is we have seen how to build apps faster and how to build smarter apps. We want to show you how to build apps together. To do that, I want to call out Wade Wagner, our VP of product, to show you how to build apps together.
Thank you, Srini. So good to be here with all of you fellow developers. And I cannot wait to show you the work that we've been doing. Now, we've spent a lot of time talking to you and we know that you love the platform, but honestly, we know that you feel some pain. And this pain really is focused on how you work together as a team. And we want all of you to be successful working together, whether you're a coder, whether you're an admin, or something in between. And we also know that your expectations as developers have changed, that you need to be able to continuously deliver value to your customers, whether it's updates to your applications or something else. So that's why I'm so excited to announce to you all the brand new Salesforce developer experience where we baked in these capabilities into the platform so that you can continuously deliver value to all of your customers, whether internal, external, wherever. And we do this by making it easier for you to take a source driven development approach. We've made it so that you can better externalize all of the metadata and source that lives today in that. Org. We've also introduced a lot of new capabilities. Awesome. We have also made it easier for you to test and develop using new tools that we're going to show you today. And what's more, we've made it easier for you to use tools that you already use and use that you use today and that are open and standardized. And so to show you all of this, I'd like to welcome my friend and colleague, John Vogt, who's going to walk us through a demo of the brand new Salesforce developer experience. So let's pull up the demo.
All right, thanks, Wade. Let's get this going.
All right, so we are starting here in source control, and this is where our teams work together. This is how our teams function as a group. And what we're going to do is we're going to grab our source living in this repository and we're going to pull it down locally so that we can develop on our machine. Now, John's got this set up, so as he flips over, you can see here that he's pulled down and cloned that repository and he's checked out a branch. He's checked out Leah's branch. Now, in Leah's branch, she just created a brand new Lightning component for us to use. So for this demo, we're going to walk through and show how we can use the Salesforce Developer experience to update our application and use that component. Now, the first thing I want to highlight is a brand new set of capabilities that we're providing inside of this experience. It's the brand new Salesforce Development Experience cli. And in the cli, we've aggregated all of the things that you use today and a few new things, but all the things that you already use today, either directly against our APIs or in tools like Workbench or maybe the Force.com IDE. And we've provided it in this CLI so that you can use it as a developer and in your environment. And what's more, it makes it really easy for you to write scripts and to automate all of these things. Now, the first command we're going to run is going to be a command to create a brand new Scratch org. Now, Scratch Org is one of the most exciting pieces of the new Salesforce developer experience. A Scratch org is an org designed for all of you developers. It creates really quickly. As you just saw, it's empty. And what's more, you can define all of the characteristics of this org. So, so you can see we passed in a JSON config file, and in that JSON config file we can specify the addition, we can specify what features we want enabled and org preferences. And for all of you that are our app innovation partners here, this is huge because we know that you have a lot of different customers that have different org shapes that you need to be able to support. And so with the Scratch Org, you can build these different environments and test them before they ever install these packages. Now, once we've got our org set up, we now have to move all of that source and metadata into the org. And so it's as easy as running a command to push. And all that source we grabbed out of GitHub is going to now go directly into our environment. And so now we have that environment set up with that source. Now, in here, we've also pushed our Dreamhouse app. And so the next thing we're going to use is a capability of the Force CLI to modify metadata inside of the Org. And here we're going to assign a perm set that's going to give us access to that Dreamhouse app so that we can use it. Now, again, remember, this is a scratch Org, so there's no data in it. So the next thing we need to do is we're going to load some data in there that we can use as part of development. It's as easy as actually running a command in the CLI to import data that we had in our repository. So it's really easy for us to create a predictable environment for us to develop with. At this point, we've actually set up our Org, and. And so let's stop for a moment and reflect on everything we did, because we moved pretty fast and we accomplished a lot. We grabbed all of our applications, metadata and source out of GitHub, meaning that it was all in source control. We did not start with the Org. We next created an Org based on a definition and pushed all of that source and metadata into it, and then imported our data into it as well. And so now we have a local developer workspace set up and ready for us to go.
And.
And so, John, I think it's time for us to update our application. So let's go ahead and update that Flexi page so that we can add the component that Leah has created. Now, I don't know if everyone saw that, but did you see the tool that John is using to modify this Flexi page? How many VIM users do we have here in the audience? We've got to have a few. And so this highlights a key tenant of the Salesforce developer experience, and that is that you can use the tools you love, whether it's Vim, whether it's Sublime, whether it's Atom or something else, it doesn't matter. You can use it along with the CLI in order to create these applications. Now, we've also really made a lot of fantastic enhancements in our force.comide. so let's take a look at that. The first thing I want to call out is all of those CLI commands that you see here in the ide. We have built the new IDE off of the cli, meaning that we can take advantage of all of those capabilities that we're shipping. And inside of that CLI experience. What's more, all of you who are building tools and extensions today can do the exact same thing so you can take advantage of the CLI in order to more rapidly bring value to your customers. Now, let's go ahead and modify that Flexi page. But you know what? Instead of modifying the markup directly, let's show another really important and cool capability of this experience, and that is to load the right tool for the job. And in this case, the right tool is the app builder. And notice we loaded it inside of Eclipse, meaning that we don't leave the context of where we are developing as developers. We can stay in the ide. So John can add that Lightning component and save it. Now, this experience is being powered by that Scratch. Org, so when we save it, that updated metadata and source is coming back down onto our file system so that we can commit it back into Source control. So, John, I think at this point we are ready, right? We can go ahead and push all these updates back into our repo.
Well, we've made our changes, Wade, but if we're going to be really great developers, we should probably run some tests first, don't you think?
Yeah, probably, probably. All right, so this is actually a really important piece is the ability to run tests so that we don't impact our other teammates. And so we built a brand new test runner that again works in the CLI that you can run. And not only does it run all of our Apex tests, but you can see here, you can inject all other test frameworks. And in this case, we've got a Selenium script that's going to run and it's going to make sure that the component we added is in fact on the page. And so everything's passing. So, John, are we ready now?
Yeah, we're ready now.
All right, so while John is pushing all of this back into our Source Control repository, let's reflect on what we just did. We set up a brand new developer workspace where we grabbed all the source that our team has been working from and we created a brand new environment where we loaded that source and metadata into it and. And we ended up loading all that data. Then we modified our Flexi page and we added that Lightning component that Leah created for us. And before we pushed it back into our repository, we were able to run tests. So now John has initiated a pull request, which really means that his job is done. Am I right? Are you ready?
Yeah, my job as a developer is done at this point.
All right, so the next stage and the next chapter of this demo is to hand this off to release management, because the Salesforce Development experience really focuses on the end to end life cycle. And so, John, I think we need a release manager to help us for the next step.
Yeah, let me see if I can find a way to change hats. It's an even year, so I think I can wear this hat.
All right, so John has now changed hats and he is our release manager. And this is really important because many of you have built some very sophisticated infrastructure and to help you get these changes into production. And some of you are using tools like this Jenkins, where you can see that a new build is running based on the pull request that John just submitted. So this makes sure that everything is functioning. It's running all the same tests, and maybe some new ones as well. So for those of you that are using tools like this, Salesforce Developer experience is going to be fantastic because we're providing even newer capabilities like the Scratch Org and the ability to define these additional types of orgs through that config file. Now, we've also worked really, really hard, and I'm very pleased to say that you can also use Heroku Pipelines to drive the new Salesforce developer experience. It's a fantastic capability and a fantastic tool to move all of the code and all the development that your developers are working on into production. And so let's take a look at how we can do this. Now, here you can see that a review app has been created from John's pull request. A review app is really important. So let's take a moment to talk about this. Now, the review app really does two things for me as a release manager. First, it's a place where I can run all of my tests. And to do this, we're using the brand new Heroku CI, which is integrated directly into Heroku Pipelines. And you can see that all of the tests are running here as part of that review app to make sure that everything is healthy and everything is functioning as we expect. What's more, the review app provides me an interactive way to work with those updates, that I can test them manually. And so I'm not beholden to an environment that a developer set up for me. The review app has created its own Scratch Org and done all the things that we saw John do. It's created that Scratch Org so I can open it up with one click and then verify and validate that that application is actually functioning. Now, the next step here would be to take that pull request that John had submitted and merge it into Master, which would create and update our staging environment. Now, we did this a little bit earlier for the demo. So we actually pushed that updated component into our staging environment. So the next step is really to promote that into production. And we can do this very quickly by clicking promote and getting it going. Now, while this is happening, John, it would be great for you to describe for everyone what's happening, because there's really quite a lot of awesome things happening behind the scenes.
Yeah, absolutely. So when we're in the review app stage, the thing I want to point out again is we're creating a scratch Org and we're loading that environment with source that's scoped to the application you're building. But once that review app is finished and we've merged with Master, now we want to start to get into continuous delivery. So we've set up the staging area with a sandbox, because a sandbox is a replica of your production environment. The other thing we're doing is we're building a package and we're installing and deploying that package into the staging environment, mimicking the same exact thing you're going to do when you promote to production.
Yep. Awesome. So the last thing that is a release manager and a capability here that we have as well is to see what's happening and actually look at this activity so we can end up here and. And see as we promote these updates into our production environment. So a lot of things that we went through very, very quickly, but showing you the end to end experience from development, working as part of a team into how we can get these updates into production. And that's the brand new Salesforce experience. And Srini, I'll hand it back to.
Thank you, Wade and John. So we saw. How do you do source driven development, rapid testing and deployment, and open and standard development experience. So we have a session today at 1 in Wasconee west where we'll go into even more detail on the new Salesforce developer experience. So we showed you how to be a trailblazer to build apps faster, build smarter apps and build apps together. So before we wrap up, I want to do three things. I want to bring forward a customer who has been using our platform for some time to give you some perspective. Number two, I want to give you a preview of some of the features we are going to release over the year. And three, a call to action. So to do that, let me introduce Debbie Aston, Senior Vice President, Product from Financialforce. Debbie, welcome to Dreamforce. Nice meeting you, Debbie. So can you just give an audience a little bit about your background and financial force to set the context?
Yeah. For sure. Thank you for the introduction. So it was my First Dreamforce about 10 years ago, so 2007 and that was the first Dreamforce where Marc Benioff launched the Force.com platform where we announced our intention to build an ERP solution on the Salesforce platform. So it's been an exciting ride since then. We've now we have 700 employees at financial Force, of which about a third are in my organization. I'm responsible for product strategy, engineering and global support. And we believe that we've got the largest development team building enterprise products on the Salesforce platform. We started with an accounting app. We've now got professional service automation, HR and most recently a billing product to do subscription and usage based billing.
Wow. So how many customers you said you have?
Oh yeah, customers. We've got 1300 customers across 27 different countries.
Wow. So you have been following the platform evolution for some time. You've seen a lot of innovation here at this Dreamforce. Can you give some perspective on how do you see your team using some of these innovations?
Yeah, some really exciting innovations today. I could probably talk about all of them. I'm going to focus on one. But first of all, I just want to share with everybody our vision for Financial Force. We set out to do for the ERP and back office what Salesforce have done for CRM and the front office. And that vision stays with us today. So I think the most important innovation that your team have talked about today is the Salesforce developer experience. We're really excited about that and we've been heavily involved in the design of that, working with your team.
You are the design partner?
Yeah, yeah, we've been a design partner. We've been very honored to be part of that team and we think that we've got a great use case for Salesforce to base their developer experience on so we can add a lot of value. There were some really interesting things that Wade talked about with the Scratch orgs are really going to help testing. But what we've looked at is the use case. So for example, customer logs a case with us, we triage that, we fix it, we deploy a fix to the customer. How long is that going to take today and how long will that take once we've rolled out the full vision of the developer experience? So we see a seven times improvement in the time it will take to go through that process. So say if it takes seven days today, it's going to take one day in the future when we get to the full vision there. So we're extremely Excited. I think it's a really pivotal development for Salesforce and for all of the engineers out there and ISVs just like us.
So do you have any advice for all the developers and IT leaders in the audience?
Yeah, a couple of things. Firstly, I mean, we look at Salesforce as an extension of our R and D resourcing. And you know, the slide that you put up earlier, Srini, with all of the things that you deliver on the platform is phenomenal. And with that, with what Salesforce deliver with the infrastructure and the tooling and then what we can deliver with the business value to the customers is a complete competitive advantage for us. So that's how we look at Salesforce. But the advice that I would offer to everybody is build your products natively on the Salesforce platform and pay attention to the best practice recommendations. If you do that, it's going to be very easy for you to adopt the new innovations that you'll deliver in the platform, such as Einstein. And you'll also find it easier to upgrade, upgrade to the new platforms and then deliver those innovations in upgrades to your customers as well. So ultimately, by investing in the Salesforce platform, you can take advantage of those innovations. You can build faster, smarter apps.
Thank you, Debbie. Welcome to Dreamforce.
Thank you very much.
So next, I want to quickly go on to the sneak peek into the roadmap. There are a lot of things you'll see but the key takeaway from this slide is the strategic direction for the platform is to give you an end to end developer experience. So you're super productive, you can build apps faster, you can build smarter apps and you can build them together. So there'll be a whole series of features that we are going to release over the year and there are a lot of sessions in the conference around that. One of the things I keep getting asked is how do I enable my teams, how do I learn all of these? The best way to do that is Trailhead. So we already, we have more than 70 plus developer badges on Trailhead. All of you have earned more than 1.2 million badges. We even have lot of new Einstein badges. All the code that Emily showed, I think they're all there in the badges. So I have three requests for you. Visit the developer forest if you haven't already done. There are more than 270 + developer sessions and more importantly the dream house, all the code you have seen today, the dreamhouseapp IO that's all available, download it, play with it, make modifications, give us your feedback. And with that, thank you. Have a nice dream force.










