Vaya, hay muchas cosas aquí que ni siquiera sabía que eran limitaciones, después de trabajar en la plataforma durante algunos años.
Pero solo para agregar algunas otras cosas ...
La razón por la que no tiene un depurador línea por línea es precisamente porque es una plataforma de múltiples inquilinos. Al menos eso es lo que dice SFDC: parece que en esta era de programación rica en subprocesos, eso no es una gran excusa, pero aparentemente esa es la razón. Si tiene que escribir código, tiene "System.debug (String)" como depurador. Recuerdo tener herramientas de depuración de servidor más sofisticadas en Java 1.2 hace unos 12 años.
Otra cosa que realmente odio del sistema es el control de versiones. El marco de Spring no se usa para lo que generalmente se usa Spring; en realidad, es más una herramienta de configuración en SFDC que un control de versiones. SFDC proporciona control de versión CERO.
Puede quedarse atrapado durante días haciendo algo que debería parecer tan ridículamente fácil, como, por ejemplo, programar un informe SFDC para exportarlo a un archivo CSV y enviarlo por correo electrónico a una lista de destinatarios ... Bueno, la forma más fácil de hacerlo es cree un objeto personalizado con un campo personalizado, con una regla de flujo de trabajo y una plantilla de correo electrónico de Visualforce ... y luego, para el código, debe escribir un componente de Visualforce que transmita los datos del informe a la plantilla de correo electrónico de Visualforce como un archivo adjunto y usted escribe APEX anónimo actualización de campo de programación de código del objeto personalizado ... Para los desarrolladores de SFDC, esto es casi una tarea diaria ... tratar de unir cinco tecnologías diferentes para realizar tareas que parecen tan simples ... Y esto puede causar dolores de cabeza en la administración y tensiones también. Por lo general, lo descubrirías después de recibir una sugerencia para hacer algo que noNo trabaje en la comunidad de usuarios (como alguien ya ha dicho) y luego pruebe muchas cosas que, después de desarrollarlas, descubrirá que simplemente no funcionan por alguna razón extraña, como "no puede programar una Página de VisualForce ", o" no puedes llamar a getContent desde un contexto programable "o alguna otra razón misteriosa.
Hay tantos, muchos pequeños problemas enloquecedores en la plataforma SFDC, que una vez que sabes POR QUÉ están ahí, tiene sentido ... pero siguen siendo muy malas limitaciones que te impiden hacer lo que tienes que hacer. Aquí hay algunos míos;
No puede obtener la información del propietario del registro "lista para usar" en prácticamente cualquier tipo de registro; debe escribir un activador que vincule al propietario al crear el registro con el registro que está insertando. ¿Por qué? Respuesta corta porque un propietario puede ser una "persona" o una "cola", y las dos son entidades drásticamente diferentes ... Tiene sentido, pero puede poner un proyecto literalmente patas arriba.
Modelo de seguridad enloquecedor. Ejemplo: el permiso "Administrar informes públicos" es muy diferente de "Crear y personalizar informes" y eso básicamente se aplica a todo en la plataforma ... especialmente a las carpetas de cualquier tipo.
Como se mencionó, el soporte es básicamente inexistente. Si es una persona extremadamente autosuficiente, o tiene muchos recursos de SFDC, o tiene mucho tiempo y / o un gerente muy indulgente, o está a cargo de un sistema de SFDC que funciona bien, está bastante bien forma. Si no se encuentra en ninguna de estas posiciones, puede encontrarse en serios problemas.
SFDC es una propuesta comercial muy seductora ... sin huella de equipo, bastante buena seguridad, precio fijo, sin infraestructura, Y obtienes CRM basado en la web con procesamiento por lotes y programable ... Pero como dijeron los otros carteles, realmente es un gran aumento en el aprendizaje de desarrollo, y si opta por la consultoría, creo que el precio más bajo que he visto fue de $ 200 / hora.
Salesforce tiende a integrarse con otras cosas años después de que algunas tecnologías se conviertan en un lugar común: JSON y jquery vienen a la mente ... y si tiene otras infraestructuras comunes con las que desea hacer una integración, como JIRA, espere pagar mucho más, y pueden tener bastantes errores.
Y como mencionó uno de los otros carteles, estás constantemente luchando contra los límites del gobernador que pueden volverte loco ... un archivo adjunto NO puede ser> 5 MB. Período. Y a veces <3 MB (si está codificado en base64). Diez llamadas HTTP en una clase. Período. Hay docenas de límites de gobernador publicados, y muchos que no lo son, que sin duda encontrará y solo querrá salir corriendo de su oficina gritando.
Realmente, REALMENTE me gusta la plataforma, pero confía en mí, puede ser una amante realmente cruel.
Pero para ser justos con SFDC, diría esto: el mayor problema que encuentro con la plataforma no es la plataforma en sí, sino las gigantescas expectativas que tiene casi cualquiera que ve la plataforma, pero no se ha desarrollado en ella ... y esas personas tienden a ocupar puestos de gran autoridad en las organizaciones empresariales; marketing, ventas, administración, etc. Se producen enormes desconexiones y las cabezas ruedan, o se amenaza con rodar a diario, todo porque existe esta gran plataforma con trampas extrañas y miles de personas que luchan diariamente para entender por qué las cosas deberían funcionar cuando simplemente no lo hacen y no lo harán.
EDITAR:
Solo para agregar a los comentarios de lomaxx sobre el MVC; En la terminología SFDC, esto está estrechamente relacionado con lo que se conoce como "viewstate", y puede tener muchos errores, ya que lo que está en la página VF no es lo que está en la clase de controlador de la página. Entonces, tienes que realizar giros extraños para sincronizar lo que está en la página con lo que el controlador va a escribir en SF cuando haces clic en el botón "guardar" (o haces tu llamada HTTP o lo que sea) ... hombre, es molesto .