Eu sou um programador freelancer. A programação tem sido minha renda principal desde que me formei no ensino médio, 9 anos atrás. Ainda pretendo me formar, mas no momento ainda não é o momento certo para mim.
Meu caminho para o reconhecimento auto-direcionado foi o seguinte. Não estou dizendo que essas etapas farão com que você seja reconhecido pela comunidade de programação, mas ajudará a aumentar sua credibilidade na hora da entrevista.
Mesmo depois de ter sido bastante versado em programação da IMO na época, voltei ao básico e passei por tutoriais e construí um portfólio com base em trabalhos inspirados desses. Também comecei a me forçar a comentar meu código de maneira semelhante ao JavaDoc. O portfólio pode não estar cheio de brilho e glamour no momento, mas fornece uma linha de base que você pode construir e, eventualmente, substituir o que você tem lá. Eu tinha um conjunto de demos e exemplos de código para mostrar aos clientes em potencial. Isso é essencial para conseguir seu primeiro emprego. Ninguém quer contratar alguém que não tenha experiência, no entanto, existem várias pessoas que darão a chance a um programador de aparência promissora que não tem experiência profissional.
Mais tarde, analisei esses programas e comecei a escrever bibliotecas com base nas minhas tarefas mais usadas. Com minhas novas bibliotecas, comecei a analisar os problemas do CompSci na Internet e comecei a me dedicar a quanto tempo levaria para criar uma solução com minhas bibliotecas. Isso me daria uma linha de base no futuro sobre o que eu deveria cobrar por uma tarefa específica.
Não foi até então que eu descobri o código aberto. Examinei os projetos no sourceforge no idioma em que me interessava e encontrei aplicativos que eu poderia usar. Instalei esses aplicativos e comecei a usá-los como parte da minha experiência diária de computação. Pude ver os pontos fortes e fracos desses aplicativos no que diz respeito à minha interação diária e comecei a estendê-los para atender às minhas necessidades. Eu enviava meus patches para a comunidade que estava desenvolvendo para ser revisado e, depois de alguns, solicitava para me tornar membro do projeto. Foi aqui que aprendi a usar as diferentes ferramentas usadas ao trabalhar em uma equipe que levou minha "vasta experiência", como eu a considerava na época, e a levou para o próximo nível.
Adaptei todas as minhas práticas que aprendi trabalhando em projetos de código aberto e implementei soluções compreensíveis quando trabalhava como indivíduo. Comecei a seguir seriamente uma carreira como desenvolvedor freelancer e entrei para vários sites de recrutamento freelancer. Eu olhei quais eram os trabalhos populares e comecei a me candidatar. Para cada trabalho que eu recusaria, ainda o completaria como se tivesse obtido o trabalho para expandir meu conhecimento. Isso ajudaria a criar meu portfólio e me apresentar alguns desafios do mundo real. Quando finalmente recebi a primeira entrevista, fui direto e disse a eles que não tinha nenhuma experiência profissional. Comecei a contar a eles os projetos de código aberto nos quais havia trabalhado, o que havia realizado lá. Alguns dos principais obstáculos que eu já havia enfrentado e como os resolvi.