La maggior parte di ciò che si impara da laureandi sono "grandi idee" che hanno avuto un profondo impatto sull'informatica e l'hanno plasmata per diversi decenni. Se hai avuto professori ispiratori, potrebbero anche averti introdotto ai "grandi problemi" che molte persone sono interessate a risolvere.
Questo purtroppo, come imparerai, non ti dà un'immagine molto buona di come sia la vera ricerca in CS.
La maggior parte della ricerca in CS non è così sexy e innovativa come quella che le tue lezioni possono farti immaginare. La maggior parte della ricerca consiste in "piccole idee" che sono presentate in un modo specifico per avere il maggior impatto possibile su una piccola comunità di ricercatori che stanno lavorando su problemi simili. Queste "piccole idee" hanno generalmente una portata limitata (che è il motivo per cui non finiscono immediatamente per essere insegnate nelle classi o utilizzate dall'industria), ma la speranza tra i ricercatori è che, man mano che le "piccole idee" vengono costruite l'una sull'altra nel tempo, portano a "grandi idee".
L'altra cosa da tenere a mente è che non tutte le "piccole idee" sono uguali. A seconda della comunità di ricerca in cui si lavora, certe idee saranno considerate più alla moda di altre in quella comunità. E le linee della moda cambiano costantemente ogni anno.
Pragmaticamente, per diventare un ricercatore di successo, dovrai sviluppare 3 abilità:
- Diventare bravo a digerire rapidamente la ricerca degli altri per capire quale sia il merito relativo dei loro contributi, e quale "piccola idea" chiave ha reso questi contributi nuovi.
- Impara a seguire le tendenze della moda nella comunità di ricerca di cui vuoi far parte.
- Impara a presentare le tue idee in modo che la comunità di ricerca di cui vuoi far parte ti prenda sul serio.
Lasciami iniziare dicendo che diventare bravo in queste abilità non è facile. Niente di quello che hai imparato da studente ti aiuta a sviluppare queste abilità, e non c'è nessun corso che puoi seguire che ti aiuterà a migliorarle.
Questo è il motivo per cui la maggior parte delle altre risposte qui suggeriscono che è necessario lavorare con un professore per fare ricerca come studente, perché i professori hanno già queste abilità. I professori possono assicurarsi che tu stia lavorando su qualcosa che interessa ad altre persone, e possono anche farti da mentore quando sei frustrato o incontri dei blocchi stradali nella tua ricerca. Scriveranno anche referenze per te in futuro, il che sarà importante per le tue ambizioni professionali. A volte possono anche aiutarti a fare rete con persone che hanno interessi simili ai tuoi. Avere un professore come buon consigliere o mentore è un'esperienza inestimabile per molte, molte ragioni.
Detto questo, penso che non sia mai troppo presto per iniziare a sviluppare da soli le 3 abilità di ricerca che ho menzionato sopra. Anche come studente universitario. Vorrei aver iniziato da studente. E non date per scontato che solo perché state lavorando con un professore che potrebbe essere un ottimo mentore, vi aiuterà a sviluppare queste abilità.
Quindi ecco cosa dovete fare:
Imparare come le persone nel vostro campo comunicano tra loro. La principale modalità di comunicazione in Informatica è il documento della conferenza. Potresti aver già preso in mano alcuni documenti di conferenze di CS e aver realizzato che sono molto più difficili da leggere dei tuoi libri di testo. Perché questo? Il motivo è che gli articoli di conferenza hanno generalmente limiti molto rigidi nella lunghezza delle pagine, e quindi gli autori sono costretti a scriverli in modo molto denso. Spesso gli articoli delle riviste saranno molto più facili da leggere di quelli delle conferenze, perché gli articoli delle riviste hanno pagine più lunghe e sono molto più curati e modificati per la chiarezza. Sfortunatamente, le riviste non sono così popolari in CS come lo sono le conferenze - nel momento in cui qualcosa viene pubblicato in una rivista, non è più considerato ricerca all'avanguardia in CS. Quindi, finché la CS è dominata dalle conferenze, bisogna diventare bravi a leggere questo breve formato di pubblicazione.
La seconda modalità di comunicazione in Informatica è il talk. Questo non dovrebbe sorprendere, data l'importanza delle conferenze in CS. Quando la gente va alle conferenze, ascolta i discorsi. Quindi, per essere un ricercatore di successo, devi diventare bravo a parlare, e a guardare come le altre persone parlano delle loro ricerche. Se vai in un'università dove sei abbastanza fortunato da avere molti visitatori che vengono a tenere conferenze, assicurati di approfittarne andando a quante più conferenze possibili.
- Impara quali sono le 3 principali conferenze in un'area di CS che ti interessa, e inizia a leggere i documenti di queste conferenze che sono stati pubblicati negli ultimi anni. Se non sapete quali sono, potete probabilmente scoprirlo facilmente chiedendo in giro. Cercate temi comuni. Un argomento specifico è menzionato in molti articoli di recente? Quali sono le diverse sotto-aree della conferenza, e quali ricercatori pubblicano in queste sotto-aree? E' bene farsi un'idea di chi sta lavorando su cosa, e dei diversi territori che i ricercatori si sono ritagliati, dato che questo ti darà anche un'idea di dove potresti voler andare alla scuola di specializzazione (presumo che sia nella tua agenda).
- Se possibile, cerca di partecipare effettivamente ad alcune di queste conferenze. Sì, questo può essere costoso, ma ci sono modi per renderlo più accessibile se si pianifica in anticipo. La tariffa per gli studenti per la conferenza è di solito sostanzialmente più economica che per chiunque altro, e spesso gli studenti possono anche ottenere l'ingresso gratuito se si iscrivono a fare del volontariato. Ci sono anche varie borse di viaggio per le quali potresti avere diritto, fornite dalla conferenza stessa o dalla scuola che frequenti. Tieni presente che chiunque può partecipare alle conferenze, e non è necessario avere un articolo pubblicato nella conferenza per andarci. Partecipare a una conferenza ti darà un sacco di soldi, perché non solo imparerai a conoscere le ricerche più recenti nell'area che ti interessa, ma spesso è più facile digerire le tendenze della ricerca stando a una conferenza di persona che leggendo solo i documenti. Andrai via con molte idee di ricerca. Potrai anche associare volti reali a nomi di cui hai sentito parlare, il che sarà un bene per il networking e per capire con chi potresti voler lavorare in futuro.
- Tieni presente che di solito le conferenze più importanti in una data area di CS sono molto ampie e coprono un sacco di argomenti di ricerca. Poiché queste conferenze sono estremamente competitive, spesso solo un piccolo numero di articoli per ogni argomento viene effettivamente pubblicato. Se trovi che un particolare argomento è sovrarappresentato e ha un sacco di articoli pubblicati in esso in un dato anno su quell'argomento, significa che questa sottoarea è molto calda e alla moda per fare ricerca in questo momento. Al contrario, non date per scontato che solo perché un particolare argomento non ha molti articoli pubblicati in una conferenza top, questo significa che c'è poca ricerca su questo argomento. Potrebbe esserci una tonnellata di ricerca su quell'argomento, ma potrebbe essersi frammentata in conferenze più specializzate che hanno le loro proprie comunità. Quindi, se trovi argomenti specifici che ti interessano, che hanno un focus più ristretto rispetto alle migliori conferenze dell'area di ricerca generale, allora dovresti guardare anche alle conferenze specializzate per quegli argomenti specifici. Questo ti darà un'idea migliore della ricerca in corso, del livello di ricerca su un particolare argomento, di ciò che è stato fatto e di ciò che non è stato fatto. Inoltre, prova a chiederti perché particolari articoli su un dato argomento potrebbero finire in una conferenza top e altri no? Vedi una differenza?
Impara i metodi di ricerca che usano le persone nel tuo campo. In linea di massima, la ricerca in informatica rientra in due categorie: ricerca teorica e ricerca empirica. Alcune ricerche possono rientrare in entrambe le categorie. La ricerca teorica è convalidata da prove matematiche. La ricerca empirica è convalidata da metodi sperimentali stabiliti per il campo in cui stai lavorando. La maggior parte della ricerca CS è empirica.
Tenete a mente che la ricerca CS richiede più che avere un'idea e scrivere del codice per implementarla. Probabilmente passerai molto tempo a scrivere e fare il debug del codice (a meno che tu non stia facendo una ricerca puramente teorica), ma quel codice non è il prodotto effettivo della tua ricerca. Infatti, spesso, nessun altro vedrà il codice oltre a te (e forse il tuo consulente) perché quel codice non viene mai rilasciato. Questa è in realtà una delle maggiori carenze nel mondo accademico CS, perché non molti ricercatori CS rilasciano effettivamente il loro codice.
Invece, il prodotto della ricerca CS deriva dai dati prodotti dai test che fai per verificare il merito della tua idea. Il tipo di test che devi fare varia molto in base agli standard della comunità di ricerca in cui vuoi pubblicare.
Per esempio, in alcune comunità, può essere sufficiente testare la vostra idea semplicemente eseguendo il vostro codice su alcuni esempi. In altre aree, avrete bisogno di fare un test che coinvolge molti dati, e fare molte analisi statistiche sul vostro output. Potreste scoprire che molte persone nella vostra area usano uno specifico set di dati nei loro test, e potrebbe essere consigliabile che usiate lo stesso set di dati per il confronto. Tieni presente che se usi un set di dati che nessuno ha mai visto prima (anche se pensi che sia più adatto alla tua ricerca), dovrai spendere spazio prezioso nel tuo articolo per spiegare cos'è quel set di dati e come è stato costruito. Potrebbe essere importante per te confrontare direttamente la tua idea con la ricerca di altre persone, e potrebbe esserci uno specifico benchmark standardizzato per farlo. A volte puoi confrontare il benchmark semplicemente guardando i loro articoli pubblicati, se stavano considerando la stessa domanda che stai considerando tu, ma altre volte, potresti aver bisogno di re-implementare il loro lavoro solo per confrontarlo con il tuo. Sì, la ricerca richiede molto lavoro, e non tutto è nuovo.
La parte meno nuova della ricerca sono i metodi sperimentali che userete. La gente vuole vedere che stai usando lo stesso tipo di metodi che altri ricercatori nella tua area hanno usato in passato, in modo da poter confrontare il tuo lavoro con il loro. Avrete anche bisogno di sapere quali tipi specifici di giustificazioni ci si aspetta da voi per impressionare le persone con la vostra idea. Inoltre, sì, la gente vuole risultati positivi. I risultati negativi non vengono quasi mai pubblicati, anche se si può imparare molto facendo la ricerca.
È utile tenere a mente questi metodi quando si cerca un buon argomento di ricerca. Inventare un nuovo sistema operativo è un buon argomento di ricerca? Probabilmente no, se non c'è un modo stabilito per dimostrare che il vostro sistema operativo è migliore di quello di chiunque altro. Potreste forse fare degli studi sugli utenti per vedere se la gente preferisce il vostro sistema operativo ad altri sistemi operativi, ma allora avete bisogno di trovare una comunità che abbracci gli studi sugli utenti come un metodo di ricerca valido. Potrebbe essere una comunità che non ha nulla a che fare con la ricerca sui sistemi operativi, come l'HCI. In alternativa, potreste testare una caratteristica specifica del sistema operativo per la quale esiste un benchmark stabilito, ma potrebbe esserci un modo più semplice per testare quella caratteristica senza costruire il sistema operativo in primo luogo. Non per scoraggiarvi se siete destinati ad essere il prossimo Linus Torvalds, ma c'è una ragione per cui non molti ricercatori di CS stanno creando nuovi sistemi operativi -- i metodi stabiliti in quell'area non incoraggiano quel tipo di ricerca.
Questo è solo un esempio, naturalmente, ma speriamo che abbiate un'idea. Di nuovo, dovreste aspettarvi di imparare quali metodi sono in voga nella ricerca attuale leggendo gli attuali articoli di ricerca pubblicati.
Per la ricerca teorica, c'è solo un metodo di prova valido e si chiama prova. Ma anche lì, è utile sapere quali precedenti esistono per vedere che tipo di risultati di teoremi interessano alla gente. Alla gente piace vedere risultati analoghi. Quindi, se un tipo specifico di risultato ha ottenuto molta attenzione in una conferenza precedente, ci si può aspettare che si possa ottenere un articolo pubblicato mostrando lo stesso tipo di risultato in un dominio diverso. Inoltre, alcune persone saranno interessate al tipo di tecniche che usate nelle vostre prove (specialmente se le vostre tecniche sono nuove e potrebbero essere potenzialmente applicate ad altri problemi), e altri si interesseranno solo dei risultati stessi. Dovresti guardare entrambi quando leggi gli articoli degli altri. Cercate di trovare delle tendenze.