Como posso obter mais experiência em programação [fechado]

9

Eu vou ser um estudante do terceiro ano de ciências da computação e li Head first Java, Head First C, e atualmente estou lendo C ++, que é a linguagem que eu mais gosto, pois possui um bom estilo de ensino para pessoas com experiência. Estou planejando aprender a criar software com o QT, aprender o objetivo C (para iphone) ou ler C ++ eficaz.

Como posso obter experiência como programador? Tenho as habilidades necessárias para ingressar em um projeto de código-fonte aberto ou preciso aprender php, mySQL ou qualquer outro idioma. Eu amo programação e ciência da computação em geral, embora algumas aulas possam ser extremamente difíceis (ciência da computação teórica). Também pretendo me tornar um guru em c ++, mas isso não acontecerá tão cedo.

Anthony
fonte
11
Você já escreveu algum programa usado por outras pessoas? Caso contrário, escreva um que um membro da família querido precise e faça útil para ele (ela pode fazer várias iterações). A última parte é onde está a verdadeira lição.
Como você chega ao Carnegie Hall?
Jfrankcarr
11
Vou soar como um idiota por um segundo, mas ... experiência - participação ativa em eventos ou atividades, levando ao acúmulo de conhecimento ou habilidade. Então comece a participar ativamente da programação.
9118 Steven Evers
11
BTW, qual é a diferença entre StackOverflow e Programmers? O padrão das perguntas finais é feito para tornar os programadores apenas mais um StackOverflow? Qual é o ponto então - basta mesclar os dois. Costumávamos ser capazes de fazer perguntas esotéricas sobre programadores que não era possível no StackOverflow.
שינתיא אבישגנת

Respostas:

11

ABC - SEMPRE CODIFICANDO. É realmente assim tão simples. Uma das minhas maneiras favoritas de conhecer um idioma é escrever um intérprete de brinquedo para um subconjunto do idioma no próprio idioma ou, se esse não for o seu caso, talvez um traçador de raios ou algo que seja grande o suficiente para não ser trivial mas não tão grande que não possa ser concluída em um mês ou mais. O objetivo é trabalhar em algo que forçará você a olhar para a biblioteca padrão e os recursos de abstração de dados que a linguagem oferece. Às vezes, o projeto é um sucesso, às vezes não, mas no final eu sei o suficiente sobre um idioma para saber quais são seus pontos fortes e fracos e se quero continuar aprendendo mais. Se eu gosto do idioma, toda vez que leio um artigo ou post de blog interessante, tento iniciar um projeto no qual implemento algumas das idéias que foram apresentadas no artigo ou no blog. Dessa forma, estou sempre praticando e aprendendo novas idéias, para que isso se torne um ciclo virtuoso.

Alguns projetos que funcionaram muito bem para mim no passado: intérprete para um subconjunto de alguma linguagem, ray tracer, gerador de analisador PEG, analisador de cabeçalho HTTP, cliente / servidor de eco simples, bot do twitter para postar automaticamente tweets de uma fila, produto amazon raspador para procurar ofertas.

davidk01
fonte
+1 Você mencionou alguns projetos realmente interessantes, obrigado.
Anthony
8

Como bem explicado em Aprenda a programar em dez anos , você deve seguir as próximas etapas:

  • Interesse-se por programar e faça alguns porque é divertido. Certifique-se de que continua sendo divertido o suficiente para que você esteja disposto a dedicar seus dez anos / 10.000 horas.

  • Programa . O melhor tipo de aprendizado é aprender fazendo. Em outras palavras, "o nível máximo de desempenho para indivíduos em um determinado domínio não é atingido automaticamente em função de uma experiência prolongada, mas o nível de desempenho pode ser aumentado mesmo por indivíduos altamente experientes como resultado de esforços deliberados para melhorar . " (p. 366) e "o aprendizado mais eficaz exige uma tarefa bem definida com um nível de dificuldade apropriado para o indivíduo em particular, feedback informativo e oportunidades para repetição e correção de erros". (p. 20-21) O livro Cognição na prática: mente, matemática e cultura na vida cotidiana é uma referência interessante para esse ponto de vista.

  • Converse com outros programadores; leia outros programas . Isso é mais importante do que qualquer livro ou curso de treinamento.

  • Se você quiser, faça quatro anos em uma faculdade (ou mais em uma escola de pós-graduação). Isso lhe dará acesso a alguns trabalhos que exigem credenciais e uma compreensão mais profunda do campo, mas se você não gosta da escola, pode (com alguma dedicação) obter uma experiência semelhante por conta própria ou no trabalho . De qualquer forma, o aprendizado de livros por si só não será suficiente. "A educação em ciência da computação não pode tornar ninguém um programador especialista, assim como estudar pincéis e pigmentos pode tornar alguém um pintor especialista", diz Eric Raymond, autor do The New Hacker's Dictionary. Um dos melhores programadores que eu já havia contratado tinha apenas o ensino médio; ele produziu muitos softwares excelentes, possui seu próprio grupo de notícias e fez o suficiente em opções de ações para comprar sua própria boate.

  • Trabalhe em projetos com outros programadores . Seja o melhor programador em alguns projetos; ser o pior em alguns outros. Quando você é o melhor, pode testar suas habilidades para liderar um projeto e inspirar outras pessoas com sua visão. Quando você é o pior, aprende o que os mestres fazem e o que eles não gostam de fazer (porque fazem você fazer isso por eles).

  • Trabalhe em projetos após outros programadores . Entenda um programa escrito por outra pessoa. Veja o que é preciso para entender e corrigi-lo quando os programadores originais não estiverem por perto. Pense em como criar seus programas para facilitar para quem os manterá depois de você.

  • Aprenda pelo menos meia dúzia de linguagens de programação. Inclua uma linguagem que suporte abstrações de classe (como Java ou C ++), uma que suporte abstração funcional (como Lisp ou ML), uma que suporte abstração sintática (como Lisp), uma que suporte especificações declarativas (como modelos Prolog ou C ++), uma que suporta corotinas (como ícone ou esquema) e uma que suporta paralelismo (como sisal).

  • Lembre-se de que existe um "computador" em "ciência da computação". Saiba quanto tempo leva para o seu computador executar uma instrução, buscar uma palavra da memória (com e sem falta de cache), ler palavras consecutivas do disco e procurar um novo local no disco. (Respostas aqui.)

  • Envolva-se em um esforço de padronização de idioma. Pode ser o comitê ANSI C ++ ou pode decidir se o seu estilo de codificação local terá 2 ou 4 níveis de recuo de espaço. De qualquer forma, você aprende sobre o que as outras pessoas gostam em um idioma, quão profundamente elas se sentem assim e talvez até um pouco sobre o porquê delas se sentirem.

  • Tenha o bom senso de sair do esforço de padronização de idioma o mais rápido possível.

BЈовић
fonte
3

Eu sugiro que você se treine efetivamente escrevendo programas funcionais. Faça um projeto maior quando achar que já conhece o básico. Aprenda a estrutura qt para desenvolvimento de software e continue praticando. A melhor maneira de aprender a programar é realmente escrevendo código.

Eu diria que a leitura também desempenha um papel importante, você pode procurar uma equipe de desenvolvedores que hospeda um projeto de código aberto (procure um no github ou em outros sites semelhantes) porque eles podem oferecer uma valiosa experiência em desenvolvimento de equipe.

Bugster
fonte
2

Às vezes, lugares como o sourceforge são um pouco assustadores no começo. Uma maneira muito boa de encontrar algo para fazer é vasculhar os rastreadores de problemas dos projetos e encontrar um bug / problema que você goste do som da correção.

Em alguns projetos github de pequena escala, isso se torna muito mais acessível. Você efetivamente tem uma direção e um objetivo ao tentar incorporar o código, em vez de percorrê-lo cegamente.

lwm
fonte
1

As amostras nos livros ou as tarefas na universidade são bons pontos de partida para entender como a programação funciona e mostram as possibilidades para seus futuros projetos.

Trabalhe em projetos reais

Mas sem uma experiência real no projeto, você tende a esquecer as coisas que aprendeu.

Problemas são oportunidades para mostrar o que você pode

Além disso, você vê em um projeto real quão complexos os requisitos podem ser e você entende problemas difíceis de resolver. Esses problemas são oportunidades para mostrar o que você pode. Você pode ver seus lados fracos que você deve melhorar.

Kayser
fonte
-1

Preciso aprender php, mySQL ou qualquer outra linguagem.

Sim senhor, considere os idiomas da rede mundial de computadores. HTML5, CSS3 e JavaScript.

Aqui está o porquê:

  1. Eles são rápidos em aprender e cada vez mais ricos em implementar.

  2. Eles não apenas escrevem na Web, mas também em SO, servidor e banco de dados.

  3. Mais importante *

    Agora eles estão sendo usados ​​para redefinir a Ciência da Computação 101 - pelo criador do jQuery, John Resig.

Não atire no messenger, basta verificar este link para a academia da escola khan .

Os padrões de design c / c ++ / c # são transferidos para JS lá.

Espero que ajude.

Jack Stone
fonte
+1 - Tão errado que isso foi prejudicado. A informação é válida. O link é credível. A fonte é o jQuery Genius John Resig - iniciando um curso de programação 101 com JavaScript, e ele funcionará. Confira a Khan Academy. Promovido pelo potencial de avançar na educação; no mínimo. THX.
Jack Stone