Questo genere di cose varia enormemente da un luogo all'altro. Nel mio sito attuale, la linea tra sviluppatori e DBA è davvero molto sfumata: anche noi (DBA) scriviamo PL / SQL e loro (sviluppatori) analizzano i piani di query. Ci consideriamo tutti pari, semplicemente con competenze e responsabilità diverse. Questo è molto divertente: recentemente la compagnia ha saltato a bordo del carro DevOps . La comunità del database non lo capisce affatto; abbiamo sempre lavorato così. Inutile dire che stiamo lavorando enormemente in questo modo: il livello del database è di gran lungala parte più affidabile dello stack tecnologico dell'azienda, è facile da usare (dal momento che abbiamo le competenze nel team DBA per comprendere l'applicazione a un livello profondo, e gli sviluppatori hanno l'esposizione DBA per comprendere le operazioni 24/7/365 e come per strutturare le loro app per questo).
Ma so cosa intendi quando parli del tipo di sviluppatore "sbagliato". È autodidatta, che di per sé è una cosa nobile, ma lungo la strada ha raccolto una diffidenza verso qualsiasi tipo di istruzione formale. Lui non sa quello che non sa , e si risente chiunque tenti di illuminarlo, lo vede come un insulto alla sua abilità di auto-apprendimento. Ha imparato lo stile imperativo della programmazione, perché puoi impararlo senza nessuna di quelle cose teoriche di cui i tipi di CS parlano sempre (beh, male; tutti hanno bisogno di conoscere big-Oe simili pezzi di teoria). Ha imparato anche un po 'di OO, solo perché deve usare Java. Ma un buon professionista del database - sviluppatore o DBA - deve sentirsi a proprio agio a pensare in uno stile dichiarativo, a pensare alla teoria degli insiemi, alle forme normali, anche a comprendere l'algebra relazionale e il calcolo. È molto, molto difficile comunicare con queste persone, perché sono attivamente ostili a tutto ciò che potrebbe scacciarle dalla loro zona di comfort, che è in gran parte limitata a come formattare qualcosa su una pagina web. Se pensano ai database, pensano che una tabella sia come una classe e una riga sia come un oggetto. Questi ragazzi faranno letteralmente, SELECT * FROM TABLE
filtreranno e ordineranno i risultati nel loro codice. Davvero, davvero non capiscono perché un database sia migliore di un file flat (e non pensano così segretamente che chiunque usi un database relazionale sia un idiota).
Permettetemi di darvi un esempio reale: recentemente ho parlato con uno di questi tipi dei problemi legati al rollback di una versione del nostro software dopo che era entrato in produzione, se un problema fosse passato oltre il controllo qualità. Ho spiegato che mentre potremmo ripristinare la sua applicazione (uno dei tanti che accedono al database), dovrebbe essere in grado di funzionare con il database ancora distribuito. Mi ha chiesto perché, e ho detto, beh, in quelle nuove tabelle e colonne, ci saranno dati reali sui clienti. Ha poi detto, quindi basta copiarlo in una tabella temporanea, qual è il problema. Lo fissai incredulo: quando un cliente chiama e dice, i miei soldi sono scomparsi dal mio conto, cosa gli diciamo, va bene, è in un tavolo temporaneo? Semplicemente non l'ha capito quando hai a che fare con i soldi degli altri, devi comportarti come un adulto responsabile. Per quanto ne so, non lo fa ancora; non è più con noi.
Il campo MySQL è stato così per molto tempo; direbbero che non hai bisogno di transazioni, chiavi esterne, ecc., se pensavi di averlo fatto solo perché non avevi idea di cosa stavi facendo, ecc. ecc. (poi, quando sono cresciuti, li hanno aggiunti tranquillamente). Questi sono i tipi di persone per cui sono stati sviluppati ORM come ActiveRecord o Hibernate, in modo da poter scrivere applicazioni di database senza mai dover toccare SQL. L'uso di queste tecnologie che considero una bandiera rossa - questa non è una società che valorizza le competenze DBA. Quello che vogliono davvero è una babysitter ...