Gli altri hanno coperto molto, ma voglio concentrarmi su questa parte:
I feel guilty for not having a hobby project, but everything I can think of doing has already been done. So I am kind of in two minds about this, start something that has already been done or leave it until I come up with something original?
Mi sembra che manchi il punto di un "progetto di hobby". È certamente vero che molti progetti di hobby sono creati per gli altri, o almeno con il consumo pubblico in mente - questi progetti richiedono una certa quantità di lavoro costante nel tempo e possono essere scoraggianti per questo motivo. Dopo tutto, chi vuole fare ancora un altro sotto-supportato, qualcosa di bassa qualità o qualcosa che alla fine viene abbandonato dopo un paio di mesi?
Ma , non c'è motivo per cui il tuo progetto per hobby debba fare qualcosa di utile per chiunque. Ad esempio, di recente ho iniziato a imparare Haskell , solo perché è così drasticamente diverso dalle lingue imperative a cui sono abituato, ed è davvero facile da ottenere impostare. Ho anche appena iniziato a imparare il Redcode linguaggio assembly-ish, usato nel gioco di programmazione Core War , ancora una volta per curiosità.
Questo, a sua volta, mi ha portato a esaminare creando un plugin Notepad ++ fornire migliori funzionalità di evidenziazione della sintassi per Redcode, che mi ha portato a considerare imparare un po 'di C ++ . Attingendo alla mia familiarità comparata con .NET, ora sto riflettendo sul fatto di impostare me stesso con Visual C ++ .
E il fatto è che niente di tutto ciò "conta", almeno non come un progetto. Diavolo, non sono sicuro che potresti anche chiamarlo un progetto per sé , così tanto come un mucchio di cose con cui mi diverto, perché ha attirato la mia attenzione. Voglio dire, avrai bisogno di un po 'di tempo e di organizzazione per assicurarti di ottenere qualcosa da fuori, ma a nessuno importa se smetterò di avere tempo per Haskell una volta iniziata la scuola.
E a nessuno importa se lo sviluppo di plugin per Notepad ++ è più difficile di quanto mi aspettassi, e mi arrendo - anzi, ho guardato in Perl prima di immergermi in Redcode, e l'ho abbandonato abbastanza velocemente perché avevo difficoltà a impostare correttamente l'ambiente. Questo mostra una mancanza di persistenza? Si. Ma a nessuno importa, perché è il mio hobby , e questo significa che posso giocare con qualsiasi cosa voglia.
Quindi non sentirti in dovere di scegliere un progetto di hobby che ti insegnerà Abilità Marketable - che trasforma il tuo tempo libero in un tempo di lavoro più non pagato. Le abilità vengono come un risultato di ciò che fai, ma non sono il motivo . Capisco meglio la programmazione dichiarativa ora e come funzionano i linguaggi di assemblaggio e come i programmi utilizzano le DLL. E ho imparato un sacco di cose sul prompt dei comandi di Windows, e altre cose che non avresti mai pensato erano collegate a tutto ciò che ho menzionato finora.
Il punto è trovare qualcosa di completamente nuovo e vedere se è interessante come sembra. Se lo è, ottimo, e se non lo è, vai avanti. Hai mai avuto la minima curiosità per i compilatori o gli interpreti? Dai un'occhiata a LOLCODE . Se ti rende felice come mi fa, allora è il momento di iniziare conoscere i compilatori . E hey, forse dovresti tornare indietro e pensare di nuovo all'evidenziazione della sintassi. In effetti, questo sarà probabilmente il prossimo progetto che comincio.
Se quello non è il tuo genere, prova qualcosa di più basso di quanto sei abituato. O livello superiore. Non importa. L'unica cosa che importa è che quando tu la guardi, pensi "Divertente!"