Dovrebbe esserci più studio scientifico sull'efficacia di varie idee truccate nello sviluppo del software?

5

Tutti sembrano implicitamente supporre che il libero mercato delle idee convergerà alla fine sulle soluzioni "giuste" nello sviluppo del software. Non crediamo che in medicina - riconosciamo che gli esperimenti scientifici sono necessari lì - quindi perché dovremmo assumerlo nello sviluppo del software?

Non sto discutendo per la regolamentazione dei programmatori. È troppo presto per parlarne. Prima che l'assistenza sanitaria potesse essere regolata efficacemente, c'era bisogno di esperimenti scientifici per stabilire quali trattamenti funzionassero e quali no.

L'ingegneria del software non ha nemmeno questa base scientifica per eseguire il backup di metodologie promosse come Scrum o Agile, o paradigmi di programmazione come la programmazione funzionale o MDA. Come

(a) progetti software di grandi dimensioni sono responsabili di molti fallimenti di progetti governativi (il governo del Regno Unito è un ottimo esempio)

(b) Agile e Lean vengono utilizzati al di fuori dello sviluppo del software, incluso nel settore pubblico [ovviamente, Lean è nato al di fuori dello sviluppo del software]

questo è sempre più politicamente rilevante. I fallimenti dei progetti governativi possono essere influenzati dall'incapacità di usare una buona pratica, o anche dall'usare qualcosa che è considerato da alcuni come una best practice, ma che in realtà peggiora le cose, o semplicemente costa denaro senza veramente aiutare molto.

La domanda è: perché questa base scientifica non esiste (a tutti gli effetti) inesistente?

Esiste una vasta comunità open source da cui è possibile attingere partecipanti alla ricerca. La mia paura è che gli sviluppatori di software closed-source e in-house trattassero con sospetto qualsiasi ricerca basata su questa comunità, temendo (forse giustamente) che i risultati non si traducessero. E le aziende che sviluppano software closed-source e in-house probabilmente non sarebbero disposti a far partecipare i loro sviluppatori a studi scientifici. Per prima cosa, probabilmente ci vorrà del tempo prima che il lavoro venga svolto; per un altro, i risultati potrebbero essere imbarazzanti per l'azienda o per i dirigenti.

    
posta Robin Green 17.03.2012 - 11:55
fonte

3 risposte

5

Esistono librerie decenti di ricerca sui progetti di sviluppo software. Dai un'occhiata alla Libreria digitale IEEE Computer Science e Libreria digitale ACM per due esempi. Più in particolare, le Transazioni IEEE sull'ingegneria del software e Transazioni ACM su ingegneria e metodologia del software presentare ricerca accademica e industriale su vari aspetti dello sviluppo del software, che vanno dagli strumenti attraverso metodologie e paradigmi. Inoltre, IEEE Software è più di un formato di rivista che presenta argomenti e informazioni rilevanti in una più facile da digerire formato per professionisti "nelle trincee", per così dire. Quindi c'è una ricerca là fuori.

Tuttavia, uno dei maggiori problemi è la variazione nel settore del software. I progetti dipendono da così tanto: dominio, conoscenza e abilità delle persone coinvolte, metodologia di processo, le scelte fatte in varie fasi del progetto (dalla tecnologia all'utilizzo per l'architettura e il design del sistema - ci sono spesso molte buone scelte). Diventa molto difficile guardare i progetti e generalizzare le informazioni in modo tale che sia scientificamente valido e utile per la maggior parte dei progetti.

Anche i tuoi commenti su costi e imbarazzo sono probabilmente veri, almeno in alcune organizzazioni. Le organizzazioni pagano i loro ingegneri ai prodotti che possono essere spediti. Da quello che ho visto, la maggior parte della ricerca che coinvolge prodotti commerciali coinvolge tre aspetti: una descrizione della tecnica prima di alcuni cambiamenti, una descrizione di alcune tecniche dopo un cambiamento e l'impatto di questo cambiamento. Tornando all'imbarazzo, alcune aziende non pubblicheranno rapporti che dicono che la loro produttività è diminuita o che i loro difetti sono aumentati e analizzano il motivo per cui ciò è accaduto. Invece, tenderanno a mostrare tecniche che migliorano l'organizzazione e ne discutono il motivo. Tuttavia, nella scienza, i fallimenti sono importanti tanto quanto i successi, specialmente quando qualcosa che non ha funzionato su un progetto può essere migliorato o adottato e funziona molto bene su un altro progetto.

    
risposta data 17.03.2012 - 14:04
fonte
1

Non sarebbe bello se ci fosse. Questo probabilmente proviene dalle università, ma stanno combattendo il problema di non produrre programmatori che sanno cosa stanno facendo quando si diplomano. Li vediamo come la teoria dell'insegnamento e la ricerca o la formazione professionale sul lavoro. Se non riesci a deomostrare i laureati a trovare lavoro, le iscrizioni / i soldi diminuiscono. I soldi per la ricerca devono venire da qualche parte. Penseresti che i manager meno tecnici sarebbero interessati a finanziare la ricerca, quindi potrebbero usarla per basare le decisioni. Applicare la ricerca scientifica negli affari sta semplicemente scalfendo la superficie.

La professione medica è una buona analogia. Quando qualcuno si laurea alla scuola di medicina (teoria e ricerca), non è pronto a praticare medici. Fanno stage e una residenza per diversi anni e possibilmente entrano in specializzazioni. Questo succede negli ospedali. Le aziende che assumono jr. gli sviluppatori devono capire che stanno ancora "praticando" la programmazione e richiedono un tutoraggio e una formazione. Questo potrebbe liberare i reparti CS per dedicare più tempo alla ricerca degli ultimi e dei più grandi.

Molti programmatori sono in lavori in cui non prendono in considerazione le tecnologie hyped se ci sono dati che li supportano o meno. A differenza della sostituzione della perscription di un paziente, la ricostruzione di applicazioni legacy potrebbe non essere conveniente. Quanto tempo impiega un medico per imparare a conoscere il nuovo farmaco rispetto a quello che ci vorrebbe un programmatore per imparare una nuova piattaforma o lingua?

Cosa ci aspettiamo che la ricerca ci dica? Se comprendi pienamente una tecnologia, applicala correttamente nella giusta situazione, funzionerà al meglio. Siamo in un'industria specializzata. Sì, il tuo prodotto è buono come lo hai "pubblicizzato", ma non posso assumere abbastanza sviluppatori che sappiano come usarlo e la maggior parte dei progetti non ha abbastanza tempo per imparare nuove cose.

    
risposta data 17.03.2012 - 13:17
fonte
1

In generale, direi che è praticamente impossibile trarre conclusioni scientifiche significative nel mondo reale perché ogni progetto software (non banale) è unico e lo sviluppo del software è, per sua natura, non deterministico. Quindi non penso che gli studi scientifici possano fornire molte informazioni utili.

    
risposta data 17.03.2012 - 21:16
fonte

Leggi altre domande sui tag