In this article we will talk about the American company Salesforce and its main product – the CRM-system with the same name. Let’s see what lies under its hood, evaluate the system from a technical point of view and try to understand who would be interested in working with it. Initially I hadn’t planned this, but the text was so long that I had to divide it into two parts. The first part will talk about the success story of Salesforce, out-of-the-box solutions, the backend and the Apex language, created specifically to work with CRM.
Salesforce has its own limitations, which it’s best to deal with before diving into the topic. This material will help you assess what it can and can’t do and decide if it’s worth going further.
By the way, let’s say up front, if you’re looking for a product development and consulting company focused specifically on the technical side of Salesforce, we recommend magicfuse.co.
How Salesforce came about
It is headquartered in San Francisco in the tallest skyscraper on the West Coast, Salesforce Tower. That’s quite a detail: The company loves attention, and its business is largely based on it. Former sales executive Mark Benioff, who rose to vice president at Oracle, founded Salesforce in 1999, and several investors, including Geneva Venture Partners, invested in the company early on. As early as 2000, they got people talking by brazenly putting up a banner advertising “The End of Software” in front of the conference venue of Siebel, a direct competitor and at the time the market leader in CRM.
More than 20 years later, Siebel has no more than 8% of the CRM solutions market.
The slogan from that advertising banner has set the direction of Salesforce’s entire marketing strategy.
In 2004, the company went public and began trading shares on the New York Stock Exchange under the ticker CRM. At the time of writing, its total capitalization was just over $201.4 billion, with one share of Salesforce worth $218.72 (for example, one share of Apple Inc. at the time was worth $123, Microsoft was worth $242.35, Facebook Inc. – $298.66, and the company’s revenue in 2020 was between $4.875 billion and $4.885 billion.
Since 2006, Salesforce has acquired more than a dozen companies, including Heroku (PaaS solutions), Quip (online word processor), MuleSoft (middleware), Tableau (BI solutions focused on visual analysis) and Slack (enterprise messenger).
For twelve consecutive years, Salesforce has been on Fortune magazine’s list of the top 100 employers.
The reason for success
Salesforce initially positioned its product as a cloud-based solution, subsequently making it available to most devices anywhere in the world. You can always see your company’s performance in real time, without having to wait for monthly or quarterly reports. Some functionality of the system is able to work even without an internet connection, as well as synchronize data when connected to the network.
An important success factor was the personal qualities, skills and abilities, including marketing, of the head of the company Mark Benioff. He was always very careful about his reputation, and each new major client only added weight to Salesforce.
Salesforce’s off-the-shelf solutions
Salesforce has prepared many solutions for various industries, often isolated into separate products that usually have the word Cloud in their name. Some specific solutions exist simply as pieces of functionality.
Other Salesforce functionality
- Chatter is an enterprise messenger, a product of a third-party company taken over by Salesforce. It allows for rapid creation of chatbots, but the company may consider it obsolete. The acquisition of Slack may have something to do with it.
- Omni channel is a hub that connects different channels of communication with customers.
- Built-in integrations with Google products (Gmail, Calendar, Contacts, Drive), Microsoft (Outlook) and Amazon: in particular with AWS, where you can establish a private connection bypassing HTTP/HTTPS traffic.
Salesforce from a developer’s perspective
It gives users of its platform ample room for expansion and self-development. In fact, developing on Salesforce is not much different from ordinary web development in terms of approach, technology, and the tools themselves.
In Salesforce, you can change the backend, the frontend, and even the database model. There’s declarative programming and lots of built-in tools. Of course, there are still some nuances and limitations, which we’ll talk about next.
For starters, it’s worth remembering that Salesforce CRM is a completely cloud-based solution. That means you don’t have to compile anything on your local machine. Well, you can compile the classes yourself, but Salesforce does this task automatically, and you rarely have to do it manually. In fact, it’s only desirable if you’re changing dependencies. Salesforce under the hood works with cached compiled classes.
The cloud-based system doesn’t even need to be installed on a local server. It takes full responsibility for setting up and maintaining the servers, and its CRM architecture is multi-scale and distributed: main servers are in the US, England, Germany, France and Japan, and servers running on AWS infrastructure are in the US, Canada, India and Australia. One customer’s databases are stored on the same server, and there are reports that this data is stored in the same database as other customers’ data. But for obvious reasons, the company is reluctant to share how the information is stored, and generally tries to keep as many technical details secret as possible.
It has a mobile SDK to create custom applications for Android and iOS for customer instances. In addition, there are official applications.
Database model
You can also create your own – custom ones – for example, in the Unlimited Edition you can create 2000 pieces, and install another 1000 as part of packages. In Salesforce, an object that can be stored in a database is called a SObject, its counterpart in a relational database is a table.
To store global variables, Salesforce uses the Custom Settings tool or the newer Custom Metadata Types tool, which is widely used in package development. The advantage of Custom Settings is the ability to create unique hierarchical records, such as for different user profiles. In turn, for Custom Metadata Type, you can create links between each other.