Disadvantages of the Force.com Platform

We currently use the Force.com platform, as our development platform and the sellers and force.com are full of reasons why this is the best platform in the world. However, I am looking for some real flaws in using such a platform.

+85
salesforce
Nov 03 '09 at 0:07
source share
9 answers

Here are 10 to get you started.

  • Apex is a proprietary language. Besides the force.com Eclipse plugin, there are practically no tools like refactoring, code analysis, etc.
  • Apex was modeled on Java 5, which is thought to lag behind other languages ​​and without tools (see # 1), can be quite cumbersome.
  • The deployment is still pretty manual, with a lot of fixes and manual actions. This situation gradually improves over time, but you will be disappointed if you are used to automatic deployment.
  • Apex lacks packages / namespaces. All your classes, interfaces, etc. They live in the same folder on the server. This makes the code much less organized, and class / interface names are necessarily long in order to avoid name conflicts and provide context. This is one of my biggest complaints, and I wouldn't choose to choose Force.com freely for this reason alone.
  • "Force.com IDE", aka force.com eclipse plugin, incredibly slow. Saving any file, be it a class file, text file, etc., Usually takes at least 5 seconds, and sometimes up to 30 seconds, depending on the number of objects, data types, class files, etc. In your organization. Saving is also a blocking action, requiring not only compilation, but also complete synchronization of your local project with the server. Orders of magnitude are slower than Java or .NET.
  • The online developer community does not look very healthy. I noticed that many forum posts remain unanswered or not resolved. I think this may have something to do with the software used by salesforce.com for the forum, which seems to suck pretty hard.
  • Access to DSL data in Apex is poor. It doesn't even remotely compete with the likes of (N) Hibernate, JPA, etc.
  • Apex / VisualForce application development is an exercise in the governor’s engineering constraints. A simple half of the programmer’s time is spent trying to optimize to avoid the numerous restrictions of the governor and other errors, such as the visibility of visibility in the view. It can be argued that if you write effective code to get you started, you will not have this problem, which is true to some extent. However, there are many times that you have good reasons to make more than x requests in a session or iterate over more than x records, etc.
  • The save-> compile-> run loop is extremely slow, especially. when it involves zipping and downloading the entire package of static resources, just to do something like checking for minor CSS or javascript changes.
  • In general, the pain of a young, fledgling platform without benefit from it is open source. You have no way to check and / or fix errors on the platform. They say to publish it in IdeaExchange. Yes, good luck with that.

Disclaimer / Disclosure. There are many benefits to a hosted platform such as force.com. Force.com regularly updates the platform. There are many things that I like. I make money on force.com

+135
Nov 03 '09 at 21:09
source share

I see that you got some answers, but I would like to repeat how much time is wasted going beyond the borders of different governors on the platform. As much as I like the platform at certain levels, I would strongly, strongly recommend against it as a common application development platform. This is great as a super customizable and extensible CRM application, if that's what you want. While their marketing is exceptional in order to promote the idea of ​​Force.com as a common development platform, it is not even remotely closed.

The effectiveness of using a stable platform and avoiding big problems with performance and stability is easily lost, trying to encode the boundaries that people refer to. There are so many restrictions on the platform, it becomes completely insane. These restrictions are not the ultimate restrictions that you click when you have many users, you will immediately hit them.

Although there are usually ways around them, it is very difficult to find strategies to avoid them, while you are also trying to develop the business logic of your actual application.

To give you a simple idea of ​​how the developer is not friendly with the environment, take the "lack of debugging environment" mentioned above. This is worse. In the debug logs, you can see up to the 20 most recent server requests. So, when you are developing inside the application, you need to create a “New” debugging request, select your name, click “Save”, return to your application, refresh the page, return to the debugging tab, try to find the request that will host your debug log , click “find” to search for the text you are looking for. It's like ten clicks to see the debug output. Although this may seem trivial, this is just an example of how little attention is paid to the experience of developers.

Everything about the development platform is a misleading thought. This is great for what it is, but overall PITA for the most part. If you don’t know exactly what you are doing (since you are certified and have a very deep understanding of Apex), it will easily transfer you to 10-20% of the time, which in another environment, something like this would be ridiculously simple if you can even succeed at all.

The restrictions of the governor are really so bad. You have a combination of various restrictions (database queries, returned strings, "script statements", future calls, callouts, etc.), and you must know exactly what you are doing to avoid these errors. For example, if you have a calculated field formula value for an object, and you have a trigger for a child object, it will trigger the triggers of the parent objects and count them against your restrictions. Such things are not obvious until you have experienced the painful process of trying and failing.

You will try one thing to avoid one limit, and hit another in an endless game of "hit the limit." In the process, you will have to radically redesign your entire application and approach, as well as rewrite all of your test code. You should have 75% coverage of the test code for deployment to production, which is actually very good, but in combination with all other restrictions it is very burdensome. You’ll actually hit the governor’s limits by writing your own test code that wouldn’t appear in normal user scenarios, but that would not allow you to achieve coverage.

This is not to mention a number of other problems. Packaging is not what you expect. You cannot pack your application and deliver it to users without significant user intervention and configuration from the organization administrator. AppExchange is a complete joke, and they even started charging 5K to get your application. Importing with a data loader sucks in, especially if you have triggers. You cannot export all of your data in one step, which includes your relationship in such a way that it can be easily imported into another organization in one step (for example, dev org). You can update the sandbox only once a month from production, without any exceptions, and you cannot include your data in the default update unless you call the manager of your account to unlock this feature. You cannot delete data in user objects in bulk. You cannot change package names. Some things may take many days after you requested them, for example, backing up data before you want to deploy the application, without reporting progress on this path and not making much sense when exactly the export took place. Given that there are problems of data synchronization, if there are relationships between the data, there are serious problems with data integrity because there is no such thing as a “transaction” that can export multiple objects in one step. There are probably some commercial tools to facilitate this, but they are not available to regular developers who may not have a huge budget.

Everything else said here is true. Sometimes it may take from five seconds to a minute to save the file.

I do not want to be so negative, because the platform is somewhat cool, and they are trying to do something in a multi-tenant environment that no one else does. This is a very innovative environment and powerful at some levels (I really like VisualForce a lot), but give it another year or two. They collaborate with VMware, perhaps this will lead to the fact that developers will play more in mannequins, rather than in a prison cell, to work.

+35
Apr 24 '10 at 0:02
source share

Here are a few things that I can give you by spending quite a bit of time on the platform in the last two weeks or so:

  • No RESTful API. They have soap based api that you can call, but there is no way to make real calm calls.

  • There is no easy way to take their SObjects and convert them to JSON objects.

  • Pages of visual power are fine until you want to customize them, and then a whole world of pain.

  • Pages of visual strength must be tied to SObjects, otherwise there is no way to get standard input fields such as datepicker or pick list.

  • The eclipse plugin is fine if you want to work on your own, but if you want to work in a large team with the eclipse plugin, forget about it. It does not handle synchronization with and from the server, it crashes and does not help at all.

  • NO DEBUGERS! If you want to debug, it is literally debugged by the system.debug statements. This is probably the biggest problem I found.

  • Their "MVC" model is not really MVC. This is much closer to ASP.NET Webforms. Your views are closely connected not only with models, but also with controllers.

  • Storage of a large number of documents is not possible. We need to store more than 100 GB of documents, and we quoted some ridiculous figure. We decided to implement our document storage for Amazon S3 infrastructure

  • Even the java language is based, it is not java. You cannot import any external packages or libraries. The available base libraries are also very limited, so we found that we were implementing a bunch of materials from the outside, and then expanding those bits as services that force.com called.

  • You can call external SOAP or REST services, but the message body is limited to 100 KB, so it very limits what you can call.

Everyone is honest, although there are potential advantages for developing on something like the force.com platform, for me you could not use the force.com platform for real-level applications. At best, you could write some basic applications with a red style, but as soon as you go into something more complex, I would avoid it like a plague.

+23
Dec 10 '09 at 12:35
source share

Wow, there were a lot of things I didn’t even know, there were limitations - after working on the platform for several years.

But just add other things ...

The reason you don't have a debugger in turn is because it is a multi-tenant platform. At least what SFDC says - it seems that in this age of thread-rich programming, this is not too much excuse, but that is apparently the reason. If you need to write code, you have "System.debug (String)" as your debugger. I remember that more than 12 years ago more sophisticated server debugging tools were created in Java 1.2.

Another thing that I really hate on the system is version control. The Spring framework is not used for what Spring is commonly used for - it really is more from a configuration tool at SFDC, rather than version control. SFDC provides version control of ZERO.

You can find yourself in a few days by doing something that should seem so ridiculous as, say, planning an SFDC report to export to a CSV file and email it to the recipient list ... Well, about the easiest way, create a custom an object with a custom field, with a workflow rule and a Visualforce email template ... and then for the code you need to write a Visualforce component that transfers the report data to the Visualforce email template as an attachment and you write an anonymous field Ania code APEX-update custom object ... For developers SFDC almost daily task ... an attempt to combine five different technologies to perform tasks that seem so simple .... And it can also cause headaches and tension control. As a rule, you will find out about this after receiving an offer to do something that does not work in the user community (for example, someone has already said), and then try many things that, after their development, you will find that they just do not work for me an odd reason - for example, "you cannot schedule a VisualForce page", or "you cannot call getContent from the planned context" or some other secret reason.

There are so many, many crazy strokes on the SFDC platform that when you know WHY they are there, it makes sense ... but they are still very bad restrictions that prevent you from doing what you need to do. Here are some of mine;

  • You cannot get information about the owner of the record "out of the box" in almost any record - you need to write a trigger that associates the owner when creating the record with the record that you insert, Why? The short answer is because the owner can be either a “person” or a “lineup”, and the two are completely different entities ... It makes sense, but he can turn the project literally upside down.

  • Maddening Security Model. Example: the permission “Manage public reports” differs significantly from “Create and configure reports”, and this mainly applies to everything on the platform ... especially to folders of any type.

  • As already mentioned, support is mostly lacking. If you are a very self-sufficient person or have a lot of SFDC resources or have a lot of time and / or a very forgiving manager, or are responsible for the SFDC system, which works fine, you are in good shape. If you are not in any of these positions, you may be in deep trouble.

SFDC is a very enticing business proposition ... lack of equipment traces, pretty good security, fixed price, lack of infrastructure, and you get Internet CRM with the ability to batch process and process data ... But, as other posters said, it is really quite fast growth in training for development, and if you go for a consultation, I think the lowest price I saw was $ 200 per hour.

Salesforce strives to integrate with other things a few years after some technologies become commonplace - JSON and jquery come to mind ... and if you have other common infrastructures that you want to integrate with, for example, JIRA, a lot more, and they can be pretty buggy.

And as one of the other posters mentioned, you are constantly struggling with the restrictions of the governor, which can simply lead you to nuts ... the attachment CANNOT be> 5 MB. Period. And sometimes <3 MB (if the base64 encoding). Ten HTTP callouts in a class. Period. There are dozens of published governor restrictions, and many of them are not what you will undoubtedly find and just want to run out of your office, screaming.

I really, REALLY love the platform, but believe me - it can be one really cruel lover.

But, in fairness to the SFDC, I would say the following: the biggest problem that I find on the platform is not the platform itself, but the gigantic expectations that almost everyone who sees the platform but has not developed on it has .... and these people, as a rule, occupy large positions in business organizations; marketing, sales, management, etc. Huge disconnections occur, and the head steers, or they are threatened with a roll every day - all because there this magnificent platform there with strange gotchas and thousands of people every day is struggling to understand why everything should work when they just do not and will not .

EDIT:
Just add lomaxx comments about MVC; In SFDC terminology, this is closely related to what is known as a "viewstate" - and this can really be a mistake, because what is on the VF page is not what is in the controller class for the page. So, you need to go through strange fluctuations in order to synchronize the contents of the page with what the controller is going to write to SF when you click the "Save" button (or do your HTTP setup or something else) .... man, this is annoying .

+12
Feb 04 '13 at 19:13
source share

I think other people covered the flaws in more detail, but for me this doesn't seem to use the MVC paradigm or it doesn't support many ways to reuse code. To do anything other than simple applications, this is an upset exercise compared to developing an application using something like ASP.Net MVC.

In addition, the tools, the level of data, and the frustration of trying to rebuild code or rename fields during development do not help.

I think CMS is pretty cool, but as a platform for applications without a CMS, it makes no sense to me.

+6
Sep 08 2018-10-10
source share

The security model also limits very much ... but this is not the worst part. You cannot currently state whether a user has the ability to perform a specific action.

You can check what their role is, but you cannot check if this role has permissions to perform the current action.

Worst of all is the answer from technical support: "Try the action, and if there is an exception, understand it"

+5
Dec 12 '09 at 10:28
source share

Given that Force.com is a cloud platform, its ability to act as a client for an external WSDL service is very inconvenient. See http://force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/ for what you might need.

+4
May 22 '10 at 17:59
source share

All of the above, I'm curious how the release of VMforce, which allows the Java programmer to write code for Force.com, changes the flaws above?

http://www.zdnet.com/blog/saas/vmforcecom-redefines-the-paas-landscape/1071

+2
Oct 22 2018-10-22
source share

I think they are trying to solve these problems. In dreamforce, they mentioned that we are trying to reset the governor’s restrictions only to 4. I'm not sure what the details are. They have a REST API for early access, and they bought Heroka, which is a ruby ​​development in the cloud. They crash the database with database.com so you can do all your web development and your db calls with database.com.

I think they are trying to make it as agnostic as possible. But right now, these are all announcements and early access, since their statements in Safe Harbor are not bought by what they say, only by what they have at the moment.

+2
Dec 28 '10 at 6:51 p.m.
source share



All Articles