Outros já cobriram muito, mas quero me concentrar nessa 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?
Parece-me que isso deixa de ser um "projeto de hobby". É certamente verdade que muitos projetos de hobby são criados para outros, ou pelo menos com o consumo público em mente - esses projetos exigem uma certa quantidade de trabalho consistente ao longo do tempo e podem ser assustadores por esse motivo. Afinal de contas, quem quer fazer ainda outra algo ou outra de baixa qualidade que acaba sendo abandonada depois de alguns meses?
Mas , não há motivo para que seu projeto de hobby tenha de fazer algo útil para qualquer pessoa. Por exemplo, eu recentemente comecei a aprender Haskell , puramente porque é tão diferente das linguagens imperativas que eu estou acostumado, e é realmente fácil de obter configuração. Eu também comecei a aprender a linguagem assembly-ish Redcode , usada no jogo de programação Core War , novamente por curiosidade.
Isso, por sua vez, levou-me a procurar em a criação de um plug-in do Notepad ++ para fornecer melhores recursos de realce de sintaxe para Redcode, o que me levou a considerar aprendendo um pouco de C + + . Com base na minha familiaridade comparativa com o .NET, agora estou pensando em me preparar com o Visual C ++ .
E a questão é que nada disso realmente "importa", pelo menos não como um projeto. Inferno, eu não tenho certeza se você poderia chamar isso de projeto per se , tanto quanto um monte de coisas que eu estou meio que mexendo porque chamou minha atenção. Quero dizer, você precisará de um pouco de tempo e organização para se certificar de que você realmente tira algo, mas ninguém vai se importar se eu parar de ter tempo para Haskell quando a escola começar.
E ninguém vai se importar se o desenvolvimento de plugins para o Notepad ++ for mais difícil do que eu esperava, e eu desisto - na verdade, eu olhei para o Perl antes de mergulhar no Redcode, e o abandonei rapidamente porque dificuldade em configurar o ambiente adequadamente. Isso mostrou falta de persistência? Sim. Mas ninguém se importa, porque é meu hobby , e isso significa que eu posso brincar com o que eu sinto.
Portanto, não sinta que precisa escolher algum projeto de hobby que lhe ensine habilidades de marketing - isso está transformando seu tempo livre em mais tempo de trabalho não remunerado. As habilidades vêm como um resultado do que você faz, mas elas não são a razão . Eu entendo programação declarativa melhor agora e como funcionam as linguagens assembly e como os programas usam DLLs. E eu aprendi um monte de coisas sobre o prompt de comando do Windows, e outras coisas que você não teria pensado que estavam ligadas a qualquer coisa que eu tenha mencionado até agora.
O ponto é, encontrar algo completamente novo e ver se é tão interessante quanto parece. Se for, ótimo, e se não for, siga em frente. Você já teve a menor curiosidade sobre compiladores ou intérpretes? Dê uma olhada no
LOLCODE . Se isso faz você feliz como me faz, então é hora de começar
aprendendo sobre compiladores . E ei, talvez você deva voltar e pensar sobre a sintaxe destacando novamente. Na verdade, este provavelmente será o próximo projeto que eu começo.
Se isso não é sua coisa, tente algo de nível inferior ao que você está acostumado. Ou de nível superior. Não importa. A única coisa que importa é que quando você olha para ele, você pensa em "Diversão!"