Pianificare lo sviluppo quando è coinvolta la ricerca accademica


11

Cari colleghi programmatori,

come si fa la "pianificazione del software" quando è coinvolta la ricerca accademica? E, in una nota a margine, come si fa a convincere il proprio capo che scrivere software non è come costruire una casa ed è più come scrivere un romanzo ?

I dettagli cruenti sono sotto.

Sono responsabile di un piccolo team di sviluppatori che lavora in un laboratorio di ricerca. Abbiamo iniziato a sviluppare un software con l'obiettivo di renderlo pubblico un giorno (vale a dire vendere e guadagnare soldi). Tale software dipende, tra l'altro, da almeno due linee di ricerca indipendenti: vale a dire, ci sono almeno due dottorati di ricerca. candidati che, si spera, un giorno usciranno con un'implementazione funzionante di ciò di cui abbiamo bisogno.

Il software principale dipende anche da altre risorse più concrete di cui noi sviluppatori possiamo occuparci: rendering grafico, deformazione dei corpi molli, ecc.

Il mio capo mi ha chiesto di scrivere le specifiche, i requisiti E un diagramma GANTT insanguinato dell'intero progetto. Di fronte al fatto che non ho la minima idea della parte di ricerca e che tale ricerca è fondamentale per il software, ha detto "fare ipotesi". Per la chiarezza dell'argomento, è un professore il cui dottorato di ricerca. gli studenti dovrebbero elaborare le ricerche di cui abbiamo bisogno. E proviene da un background strettamente ingegneristico: pianificare prima tutto, scrivere le specifiche e solo successivamente scrivere il codice che "è l'ultima parte".

Cosa sto facendo ora:

  1. Ho suddiviso il prodotto in caratteristiche; ogni "caratteristica" è, di fatto , un prodotto separato;
  2. Ogni funzione è costruita sopra la precedente;
  3. Una volta che una funzione (A) ha un prototipo funzionante, il team può iniziare a lavorare sulla funzione successiva (B), mentre il QA per viene eseguito per A (se il denaro lo consente, è possibile coinvolgere più persone, ecc.);
  4. Le caratteristiche che dipendono dalla ricerca arriveranno per ultime: a quel punto, si spera, la parte di ricerca sarà completata ( quando è ancora una grande domanda);

Inoltre, ho impostato il team per utilizzare SCRUM per lo sviluppo di "versione 1.0 ", previsto tra qualche mese. Questa scadenza potrebbe essere impostata sulla base di ipotesi ragionevoli: abbiamo elencato tutte le funzionalità richieste, abbiamo contato la nostra disponibilità e fornito una stima ragionevole.

Quindi le mie domande, ancora una volta, sono:

  • Come faccio a rendere felice il mio capo mentre allo stesso tempo riesco a far uscire qualcosa dalla porta?
  • Come faccio a scrivere le specifiche per qualcosa che noi sviluppatori non abbiamo idea se sia possibile fare o no? (Non abbiamo ancora deciso quali librerie utilizzare per alcune attività; lo faremo quando dovremo)
  • Come ottengo i requisiti per questo, dato che non ci sono ancora clienti né investitori, solo molti interessi e promesse?
  • Come posso ottenere la pace nel mondo?

Sono sicuro che almeno una delle mie domande avrà una risposta :)

ps: sto scrivendo questo anonimo dal momento che un potenziale investitore potrebbe ritorcersi contro se scoperto. Spero che capirai Tuttavia, devo dire che non mi piace questa mentalità di "nascondere la verità": questo programma probabilmente gioverà a molti e non poterne parlare apertamente (con il mio nome e la mia reputazione attaccati) sembra una censura. Ma ahimè, mi interessa di più i tuoi suggerimenti ora.


Parlando da ex dottorando che ha lavorato per anni in quella che sembrava una fossa nera di stagnazione e oscurità, sarei stato piuttosto eccitato (e anche terrorizzato) di sapere che i professionisti erano in attesa di fare qualcosa di utile con il mio lavoro. Sarebbe stato tremendamente motivante. Vedo che questa domanda è stata posta quasi un anno fa, ma se la situazione rimane la stessa, sarei interessato a sapere quanti contatti hai con gli studenti. Potrebbe essere utile far loro sapere che fai il tifo per loro!
ottobre

Risposte:


6

Sono stato in quella posizione un paio di volte e, con l'esperienza, non puoi contare sullo studente di dottorato per fornire ricerche pertinenti e certamente non puoi fare affidamento sul fatto che avvenga su una scala temporale utile. I dottorandi sono specificamente autorizzati ad andare dove li portano i loro interessi di ricerca, e può essere estremamente difficile essere a valle quando all'improvviso iniziano a percorrere una strada secondaria che è rilevante per loro ma non per te. Questa è una delle principali fonti di rischio per il tuo progetto, quindi devi usare appropriate strategie di mitigazione del rischio nel tuo piano di progetto.

Detto questo, risolvi quando devi consegnare (vedi la borsa di ricerca; è determinata dal tuo finanziamento piuttosto che da qualsiasi altra cosa) e da quanto tempo ci vorrà per dare per scontato che la ricerca sia consegnata . Questo richiederà alcune ipotesi onnipotenti, ma non può essere aiutato; rendere esplicite quelle ipotesi nella stima del tempo . Successivamente, gestisci il rischio rimanendo in stretto contatto con gli studenti di dottorato (ad esempio, partecipando alle loro sessioni di esercitazione una volta al mese) in modo che se sembra che non forniranno ciò di cui hai bisogno in tempo, puoi pensare in dettaglio alle strategie di mitigazione. Se sei fortunato, la scommessa pagherà e otterrai qualcosa di utile dalla ricerca. Sono successe altre cose.

Tutto il resto seguirà dal sapere chi saranno i tuoi clienti e dal pensare a come vuoi che utilizzino il prodotto finale (e come lo useranno effettivamente). Se non lo sai, non venderai a nessuno. Ma dovresti saperlo, o almeno scoprirlo presto. (Se è determinato dalla parte della ricerca, sei in grossi guai! I progetti di ricerca possono sicuramente produrre risultati negativi - o parzialmente negativi - succede sempre, anche se non è sempre così ampiamente riportato.)

Come ultimo punto, penso che sia un peccato terribile farlo in modo anonimo, poiché tutto ciò che stai facendo è cercare consigli su un particolare tipo di project management. Non stai menzionando quale sia l'oggetto della ricerca o chi lo stia intraprendendo o chi sia uno dei tuoi collaboratori, né avrebbe importanza per questa domanda. L'unico modo in cui potrebbe essere un problema è se stavi cercando finanziamenti non di ricerca e sviluppo prima della ricerca, ma ciò richiederebbe o rivelare il livello di rischio coinvolto (probabilmente ridimensionando l'investimento!) O essere altamente disonesto; dal momento che stai pianificando di essere onesto, non dovrebbe emergere in quanto il progetto dovrebbe cercare quel tipo di finanziamento solo quando i rischi sono più certi. (Se tu, come gruppo, sei disonesto con i potenziali investitori, questo è un problema proprio lì e finirà in lacrime. O cause legali.)


Donal, grazie per la tua risposta. Sollevi alcuni punti positivi; soprattutto sulla gestione del rischio. Sulla ricerca, sì, dovrebbero trovare risultati negativi: è così che si fa la ricerca! Se sapevi già cosa otterrai, non è ricerca, è pubblicità. Sulla necessità di rimanere anonimi: è perché dal mio account stackexchange puoi vedere sul mio profilo di carriera chi sono e dove sto lavorando. Ciò potrebbe compromettere il futuro stipendio della mia squadra (sì, stiamo cercando finanziamenti non R&S). Se fossi solo io, sarei onesto. Ma non sono i miei soldi che li sta pagando ora, quindi devo stare attento.
Un altro utente anonimo il

1
Risposta eccellente. Anche nel tipo di sviluppo di software commerciale che ho fatto, ci sono incognite in cui devi solo fare un'ipotesi istruita su specifiche e pianificazioni. Fintanto che tutti sanno che quelle sono ipotesi e soggette a modifiche, va bene. Una cosa che puoi fare con gli articoli di ricerca è che per ogni numero che devi fornire (date, denaro, ecc.), Indovina e fornisci un buon caso (10% di probabilità che vada bene), previsto (50%) e valori non validi (90%). Inoltre, per mitigare le incognite, prova ad avere "Plan B" (e idealmente pianifica C e D) nella tasca posteriore virtuale.
Bob Murphy,

Il problema di dipendere dalla ricerca è che c'è una forte possibilità che tu abbia una risposta "decisamente negativa": che ciò che desideri per il prodotto non richiede solo qualcosa di sconosciuto, ma qualcosa che non può essere creato. O che la ricerca non fornisce mai nulla di rilevante (un rischio reale con i dottorati di ricerca). Il punto per ottenere il grande investimento è dopo aver ottenuto una piccola dimostrazione del concetto, in modo che tu sappia almeno che può essere fatto e che tutto ciò che devi fare è risolvere come renderlo utilizzabile e commercializzabile.
Donal Fellows,

2

Come faccio a rendere felice il mio capo mentre allo stesso tempo riesco a far uscire qualcosa dalla porta?

Sii intelligente e fai le cose.

Come faccio a scrivere le specifiche per qualcosa che noi sviluppatori non abbiamo idea se sia possibile fare o no? (Non abbiamo ancora deciso quali librerie utilizzare per alcune attività; lo faremo quando dovremo)

Se non sai con che interfacciare, questo è un problema. Quali input dai alla scatola magica? Quali output ottieni dalla scatola magica? Ciò aiuterà anche i ricercatori a definire qual è la magia.

Se il tuo accademico è stato finanziato da una sovvenzione, probabilmente ha scritto una proposta di ricerca. Prendi quello. Se è come una qualsiasi delle proposte di borse di ricerca che ho visto (e scritto), avrà una linea temporale e una "specifica" di ciò che stanno cercando di fare.

Come ottengo i requisiti per questo, dato che non ci sono ancora clienti né investitori, solo molti interessi e promesse?

I requisiti sono ciò che gli utenti finali dell'algoritmo / cosa-a-ma-jig. Vedi se riesci a intervistarli (o potenziali clienti / clienti).

Altrimenti, mangia il tuo cibo per cani.

Come posso ottenere la pace nel mondo?

Fuori tema :-)


2

Penso che nella pianificazione dello sviluppo della ricerca cose in un colpo solo e lo sviluppo di tgen non funzioni davvero bene. Lavoro in un istituto di ricerca e lavoriamo di più usando la prototipazione rapida. Spesso lo sviluppo di un prototipo fornisce la comprensione di ciò che è esattamente necessario. Creando rapidamente un prototipo puoi ottenere feedback dal tuo capo e dai ricercatori e determinare se questo era quello che si aspettavano, e anche vedere se il tuo approccio funziona. Successivamente puoi refactoring e migliorare il tuo codice. Questo è ciò che vedo in pratica negli istituti di ricerca in cui ho lavorato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.