In today’s episode of our Meet the Author podcast series, Fritz Onion talks to Richard Seroter about his new course Force.com for Developers. In the interview Richard explains how the Force.com platform differs from other cloud platforms such as Windows Azure and Amazon Web Services. He describes in some detail the infrastructure abstractions that allow for developers to write code without worrying about things like memory or CPU utilization. He also describes some of the limitations that these abstractions place on the type of development you do in the Force.com platform.
Listen to the Audio (MP3)
[Fritz] Hi this is Fritz Onion. I am here today speaking with Richard Seroter about his new course Force.com for developers. Richard is a Product Manager for cloud computing provider Tier 3, a Microsoft MVP, a blogger, author, trainer and frequent public speaker. He has spent the majority of his career working with organizations as they planned and implemented their enterprise software solutions. Richard is the author or contributor to three recent books Applied Architecture Patterns on the Microsoft Platform, SOA Patterns with BizTalk Server 2009, and Microsoft BizTalk 2010: Line of Business Systems Integration. Welcome Richard.
[Richard] Thanks for having me Fritz.
[Fritz] So Force.com, we should probably get this out of the way right at the beginning which is this is actually not a course on the Star Wars Force, is that right?
[Richard] It is not, there is maybe a little Yoda cameo in there but no it’s not about that.
[Fritz] Yeah so Force.com refers to the API that SalesForce.com exposes, is my understanding and in your course here you get into, it’s an introduction to the platform, this cloud platform that SalesForce has created and how do you as a developer tap into their cloud basically, and let me just go over the course outline you have here. So you get into the introduction, you talk about using Force.com, the database Force.com, configuring and customizing the Force.com user interface, building reports on Force.com, adding business logic to Force.com applications. Leveraging work flows in Force.com, securing Force.com applications and integrating with Force.com. so it sounds like a pretty comprehensive introduction to the platform and way to get developers up and running.
[Richard] Definitely, yeah there is, you know it’s funny, Force.com you know the SalesForce team has printed more material about their product then almost any vendor I have ever seen. But sometimes that’s extremely daunting so that was the one reason to do the course was to try to synthesize that into something that can be digested as how to use this platform and we build one application throughout the whole course so you can really see how it all builds upon each other.
[Fritz] Great. So we know this is SalesForce.com or that’s the cloud providing it, maybe you can give us a little context here. I think most developers will have heard of Microsoft Azure and Amazon’s cloud platform and even Google for that matter, the Google apps platform but I think SalesForce.com or Force.com is probably a little less well known. Could you kind of put that in perspective for us and maybe described how it came to be and where it stands today among all these providers?
[Richard] Sure, definitely. So SalesForce.com is used by millions of users, hundreds of thousands of customers probably one of the showcases for cloud computing software as a service. So a few years back when we really unleashed Force.com as an actual platform as well it was hey here’s how we build our application. Now if you don’t want to use traditional CRM you are not just doing a call center or you’re not doing sales reps in the field you want to build other data driven relationship apps that need workflow and reporting and security models, just build them on our platform. So that came into be and others very many customers, they got a whole, kind of apps store model where you can buy apps other people have built and put it in your own environment and if we’re comparing that you mention Azure and some others, if you compare that to other platforms as a services out there. There is a lot of diversity there, so it’s hard to even, I don’t know if you ever would have a scenario where you’re choosing between Force.com and Amazon web services. That is very, I would have a tough time coming up with that because there’s such a difference, you got really there’s differences in portability and level of infrastructure abstraction as I have really spent more time on this, you have applications that you maybe deploy two Windows Azure or cloud foundry or AWS which have a lot of portability for the most part. There are some proprietary services in something like Azure but you can take an app you’ve written there and move it to another cloud in a decent case. Force.com apps are for Force, so if I build an app for Force, I am not putting it anywhere else so it’s not very portable. But at the same time it’s that infrastructure abstraction which is really nice. So if I am using Azure or Amazon web services I’m writing code, I am building an app, there is not, there are some framework things underneath that potentially for infrastructure and so forth but I have to know about a lot of that. Force is different where you have absolutely no idea what’s going on underneath the covers, you have no visibility into the infrastructure, you are not saying how many nodes to run on, you’re not setting up management tasks or upgrading things or tuning any thing or scaling it. None of that comes into play, instead you just get this framework of user interface, security, reporting, there’s a full text search engine and you just get out of the box so all of that stuff is just a set of services in which you build on top of. So its extremely far removed from infrastructure where as a lot of other platforms and service offerings still ask you how many nodes do you want to deploy this two or how much RAM do you need. Those constants don’t really exist in Force.
[Fritz] Right, interesting, yet it’s a very different sort of mindset when you target this type of platform, it sounds like a similar or more similar to Google as a platform where you kind of have to live in their space and use their language to build out your apps. Is that a fair comparison?
[Richard] To some extent, I mean the Google app for example, you are still writing Java or Python, you writing apps that you are still coding them up. You are still choosing which frameworks you want to use. Now to some extent like all platforms as a service, there is those, you are in someone else’s sandbox so you can only do so many things. You know in Google you can’t write to the file system, in Force the same thing, so there are certain things where you have been you know in exchange for being able to have this sort of elastic fabric you are going to play by their rules and so Force is much like all of them in that capacity.
[Fritz] Great, well let’s get into some of the stuff you talk about in the course. I know one of the things you were really excited about in this course and it comes out as you watch it is the integration options that are provided by Force, can you tell us kind of what jumps out at you from their services there.
[Richard] Yeah, I am an integration guy by trade at this point from some of the books and writing, I just think that is a fun domain and Force.com is one of those few providers of software as a service or platforms as a service that just gets the integration story right. Its not perfect but its right so first off they got event driven integration which virtually no one seems to have which means if I want to say whenever somebody updates a contact and they add a new address I want to send the details of that contact to some web service end point out there on the internet. So being able to push data, not always just this pull base sort of stuff, but they have a very nice pretty strong event driven model. So that is great, but then they have a lot of different pull options, there is out of the box SOAP web services for retrieving, creating, updating, deleting data, these can be strongly typed, so if you want to import that WSDL into Visual Studio and work with typed contact object or sales objects or opportunity objects, have at it. But they also have a weakly typed model where you are dealing with a generic object and lets say you were selling a product and you did not want to hard code it to the Richard application you could use a weakly typed web service object which is great. You also have these out of the box web services that almost do the same thing, so if you are building mobile apps or you want to deal with JSON or you don’t want to work with XML and SOAP, fantastic do everything you want with REST. Now at the same time its pretty hard to think that out of the box services will do everything you need so it actually kind of has a really good platform and foundation for doing customs SOAP and REST web services so if I want to save on bandwidth and not have to do multiple calls, maybe I build these composite apparitions that take in a big payload of multiple different objects in the server side, splits that apart and updates the objects or I have got some sort of custom business logic that I want to expose as a service. Just a really complete offering, it’s really how a saas or platform and service data integration should be and they have really done a nice job with it.
[Fritz] That’s great. Well let’s get a little bit more concrete now. Let’s say I am a developer C# or Java developer so I have skills in one of those languages. What is the process for me to kind of get into building a Force.com application?
[Richard] Yeah good question. So I think there is a couple things to think about. The first thing is and as I have worked with any platform as a service, the tricky thing is to not just jump in and start using your own mindset, maybe a code first mindset and that you could code a lot of things that you can configure in a Force.com but in a lot of cases would you want to go disappear for a week and sling some amazing code to do a function that you realized you could of ticked one checkbox to perform it in the system. So you know one of the first things the developer is going to want to do is understand what is the platform? So that I only code strategically where I need to. Now Force.com does have a programming language called APEX which is object oriented so if you’ve done C#, Java it’s going to be very familiar, really your augmenting your skills you’re not learning a whole new thing. But at the same time there is the subtleties that you elude to that you have to think about so APEX’s is written to be an app programming language for Force, not for a generic application programming language so there are things that are similar like variables, classes, loops all that sort of things. But there are those differences, I can’t run asynchronous scheduling activities in the same way from writing code, a lot of things happens behind the scenes so I’ve got to, I can’t do threading, I can’t get access to the file system, I am playing in a shared sandbox so certain capabilities have to be turned off so I don’t build runaway apps that takes down everybody else. And a lot of things run asynchronously behind the scene, so a lot of your code has to be written so it can handle multiple records at once. If there is a database trigger you expect that that trigger might get ten records when it’s invoked, not just one at a time. So thinking in bulk, thinking about the governor’s that are in place in the system is really important as developer so you don’t accidentally build code as you would in a client app. But then the big, one of the big nice differences is that it’s got a built in ORM for database interaction so when I’m working with a custom object or just a data object like a contact or customer there is no connection object, there is no stored procedures, it’s just execute a statement like insert a customer. And that’s it. I don’t have to extentiate a connection or build up a query or procedure. It’s really nice native data integration because that’s what a Force.com app is. So they really have done a cool job with that. That will be the one area that you will focus on little more is understand the database syntax.
[Fritz] Now is there an IDE or something to download or do you work completely on the web or what is the actual programming environment?
[Richard] Yeah good question, see you can download an Eclipse based IDE if you want to work offline and browse the whole Force.com schema and mess with that. But then a lot of the development that we do in the course for instance is using the web based IDE where if I’m building pages for example and I’m writing code for a controller in an MVC page, I can write it’s save it and the page will instantly refresh and I’m doing it almost live, I am seeing my changes right in effect in the web based IDE. You can do that and there is also another IDE that is web based where we can set break points and things as well so you know it’s not going to be as feature rich as using an offline one that has rich intellisense and all that sort of things. But you know it’s a pretty functional IDE that shows you when exceptions are happening during compilation and it’s constantly trying to give you some hints to do it right.
[Fritz] It’s amazing how the lines are being blurred between what a development environment is and what one isn’t these days isn’t it.
[Fritz] Well great so this is Richard Seroter with his new course Force.com for developers, thanks very much Richard.
[Richard] Thanks Fritz.