Essa semana chegou o certificado de conclusão do Google Summer of Code, indicando que completei o programa com sucesso :) Também mandaram uma camiseta de brinde.
Dicas para quem deseja participar
Eu já havia tentado participar no google summer of code em 2009 e 2010, pelas organizações Scilab e CGAL, respectivamente, mas sem sucesso.
O que eu fiz de diferente para ser aceito em 2011? Conversei com os mentores antes de enviar minha proposta.
Além de demonstrar interesse, as conversas permitem que o instrutor avalie suas habilidades necessárias para cumprir o projeto. No meu caso por exemplo, tive que implementar um patch para corrigir um bug.
A seguir algumas dicas quanto à escolha do projeto e da organização.
Escolha do Projeto
Uma coisa importante é a escolha do projeto. Há diversos pontos que devem ser considerados na escolha do projeto, entre eles: concorrência, relevância, dificuldade e motivação.
Provavelmente projetos relacionados a jogos são bastante concorridos, mas no geral não sei o que atrai mais os candidatos. Tem que acompanhar as listas de discussão e ver quais projetos estão sendo mais procurados. Minha dica fica em optar por projetos menos concorridos.
Uma organização em geral oferece diversos projetos, mas alguns têm maior prioridade do que outros. Se houver duas propostas igualmente boas e a organização tiver que escolher apenas uma, ela provavelmente optará pelo projeto de maior relavância. Algumas organizações explicitam a relavância do projeto nas descrições dos mesmos, mas vale conversar com os mentores para entender qual é o impacto do projeto para a organização.
Escolher a dificuldade adequada do projeto é complicado. Por um lado projetos muito fáceis tender a ser ou pouco relevantes ou muito chatos (do contrário provavelmente alguém já teria se disposto a fazê-lo voluntariamente). Projetos muito difíceis podem minar suas possibilidades de completar o programa e também torna mais difícil convencer o mentor que você é capaz de fazê-lo. Eu recomendaria então projetos de dificuldade média.
Finalmente, é preciso escolher um projeto que te motive. Isso não afeta muito suas chances de ser aceito, mas sim a de conseguir completar o programa. No meu caso, eu tinha bastante interesse em raytracers, por isso procurei projetos dentro desse tópico.
Escolha da Organização
A escolha da organização é bastante relevante. Querendo ou não, algumas organizações terão mentores mais atenciosos do que outras. Da minha experiência com Scilab, CGAL e BRL-CAD, posso dizer que Scilab e BRL-CAD têm mentores bastante acessíveis. No CGAL eu tive uma experiência ruim com trocas de emails, pois nenhum email meu relativo ao GSoC foi respondido.
Minha dica aqui é escolher organizações que tenham algum projeto que te agrade e começar a troca de emails. Com isso dará para ter uma ideia de quão prestativos são os mentores.
Habilidades necessárias
Considero importante as seguintes habilidades/conhecimentos para aumentar as chances de concluir o projeto:
– Ter compilado algum projeto open-source a partir do código-fonte, passando por todo o tormento de instalar dependências (mesmo quando não estão acessíveis via um “apt-get install” :P).
– Saber se virar sozinho. Ir atrás de tutoriais, documentação, fuçar código, etc.
– É bom conhecer a linguagem de programação que será usada no projeto, mas talvez não seja algo tão estrito se você tiver alguma base. Por exemplo, se tiver conhecimento em orientação de objeto, dá pra se virar tanto em C++ quanto em Java, por exemplo. O BRL-CAD teve um projeto em Tcl, mas o estudante alocado não conhecia essa linguagem e mesmo assim concluiu o projeto com sucesso.
– Dependendo do projeto, o conhecimento exigido é tão complicado que somente pessoas que trabalharam com isso vão conseguir realizá-lo. Por outro lado, há temas fáceis de serem aprendidos, pelo menos o básico, como por exemplo raytracing.
Conclusão
Aprendizado
Trabalhar com projeto open-source incrementa o aprendizado nas diversas ferramentas utilizadas, no tema do projeto, em práticas de programação, etc. Porém, na minha opinião, o maior benefício é a familiaridade que se adquire em trabalhar com código grande escrito por muitas mãos.
Lembro que nas minhas primeiras tentativas de mexer com código open-source (se não me engano foi com o Blender), eu desanimei muito rapidamente pois tinha dificuldade em entender o que o código fazia. Já recentemente, peguei um projeto com código mal comentado e mesmo assim consegui entendê-lo relativamente bem.
Não acredito que minha capacidade de entender código melhorou muito, mas é o costume com esse processo, por vezes tedioso e demorado, que te leva a perseverar e não desanimar tão facilmente.
Continuidade do projeto
Conforme mencionei em um post anterior, eu queria continuar trabalhando nesse projeto, mas até agora não tem sobrado muito tempo para isso. Vamos ver se até o final do ano faço alguma coisa.
Deverá estar ligado para publicar um comentário.