Wow, ci sono molte cose qui che non sapevo nemmeno fossero limitazioni, dopo aver lavorato sulla piattaforma per alcuni anni.
Ma solo per aggiungere altre cose ...
Il motivo per cui non si dispone di un debugger riga per riga è proprio perché si tratta di una piattaforma multi-tenant. Almeno questo è quello che dice SFDC - sembra che in questa epoca di programmazione ricca di thread, non sia una gran scusa, ma a quanto pare è questo il motivo. Se devi scrivere codice, hai "System.debug (String)" come debugger - Ricordo di avere strumenti di debug del server più sofisticati in Java 1.2 circa 12 anni fa.
Un'altra cosa che odio davvero del sistema è il controllo della versione. Il framework Spring non viene utilizzato per ciò per cui viene solitamente utilizzato Spring: in realtà è più uno strumento di configurazione in SFDC piuttosto che il controllo della versione. SFDC fornisce il controllo della versione ZERO.
Puoi ritrovarti bloccato per giorni a fare qualcosa che dovrebbe sembrare così ridicolmente facile, come, ad esempio, pianificare un rapporto SFDC da esportare in un file CSV e inviare un'e-mail a un elenco di destinatari ... Bene, il modo più semplice per farlo è creare un oggetto personalizzato con un campo personalizzato, con una regola del flusso di lavoro e un modello di e-mail Visualforce ... quindi per il codice è necessario scrivere un componente Visualforce che trasmette i dati del report al modello e-mail Visualforce come allegato e si scrive APEX anonimo programmazione del codice aggiornamento del campo dell'oggetto personalizzato ... Per gli sviluppatori SFDC, questa è un'attività quasi quotidiana ... cercare di mettere insieme circa cinque diverse tecnologie per svolgere attività che sembrano così semplici ... E questo può causare grattacapi alla gestione e anche le tensioni: in genere, lo scopriresti dopo aver ricevuto un suggerimento per fare qualcosa che non funzionat lavorare nella comunità degli utenti (come qualcuno ha già detto), quindi provando molte cose che, dopo averle sviluppate, scopriresti che non funzionano per qualche motivo strano, come "non puoi programmare un Pagina VisualForce ", o" non è possibile chiamare getContent da un contesto pianificabile "o qualche altro motivo arcano.
Ci sono così tanti, tanti piccoli trucchi esasperanti sulla piattaforma SFDC, che una volta che sai PERCHÉ sono lì, ha senso ... ma sono ancora limitazioni molto gravi che ti impediscono di fare ciò che devi fare. Ecco alcuni dei miei;
Non puoi ottenere le informazioni sul proprietario del record "fuori dagli schemi" praticamente su qualsiasi tipo di record: devi scrivere un trigger che colleghi il proprietario alla creazione del record al record che stai inserendo. Perché? Risposta breve perché un proprietario può essere una "persona" o una "coda", e le due sono entità drasticamente diverse ... Ha senso, ma può letteralmente capovolgere un progetto.
Modello di sicurezza esasperante. Esempio: l'autorizzazione "Gestisci rapporti pubblici" è molto diversa da "Crea e personalizza rapporti" e vale praticamente per tutto sulla piattaforma ... specialmente per cartelle di qualsiasi tipo.
Come accennato, il supporto è praticamente inesistente. Se sei un individuo estremamente autosufficiente, o hai molte risorse SFDC, o hai molto tempo e / o un manager molto indulgente, o sei responsabile di un sistema SFDC che funziona bene, sei abbastanza bravo forma. Se non ti trovi in nessuna di queste posizioni, potresti trovarti in guai seri.
SFDC è una proposta aziendale molto seducente ... nessuna impronta di apparecchiature, sicurezza abbastanza buona, prezzo fisso, nessuna infrastruttura E ottieni CRM basato sul web con elaborazione batchabile e programmabile ... Ma come hanno detto gli altri poster, è davvero piuttosto un aumento nell'apprendimento dello sviluppo e, se vai con la consulenza, penso che il prezzo più basso che ho visto sia stato di $ 200 / ora.
Salesforce tende a integrarsi con altre cose anni dopo che alcune tecnologie sono diventate un luogo comune - vengono in mente JSON e jquery ... e se hai altre infrastrutture comuni con cui vuoi fare un'integrazione, come JIRA, aspettati di pagare molto di più, e possono essere abbastanza buggy.
E come menzionato in uno degli altri poster, combatti costantemente i limiti del governatore che possono semplicemente farti impazzire ... un allegato NON può essere> 5 MB. Periodo. E a volte <3 MB (se codificato in base64). Dieci callout HTTP in una classe. Periodo. Ci sono dozzine di limiti del governatore pubblicati, e molti non lo sono che senza dubbio troverai e vorrai solo correre fuori dal tuo ufficio urlando.
Mi piace davvero, VERAMENTE la piattaforma, ma credimi: può essere un'amante davvero crudele.
Ma in tutta onestà con SFDC, direi questo: il problema più grande che trovo con la piattaforma non è la piattaforma stessa, ma le aspettative gigantesche che quasi chiunque vede la piattaforma, ma non si è sviluppato su di essa, ha ... e quelle persone tendono ad essere in posizioni di grande autorità nelle organizzazioni imprenditoriali; marketing, vendite, gestione ecc. semplicemente non lo fanno e non lo faranno.
EDIT:
solo per aggiungere ai commenti di lomaxx su MVC; Nella terminologia SFDC, questo è strettamente correlato a ciò che è noto come "viewstate" - e può essere davvero pieno di bug, in quanto ciò che è sulla pagina VF non è ciò che è nella classe controller per la pagina. Quindi, devi passare attraverso strane rotazioni per sincronizzare ciò che è sulla pagina con ciò che il controller scriverà su SF quando fai clic sul pulsante "salva" (o fai il tuo callout HTTP o qualsiasi altra cosa) .... amico, è fastidioso .