Possível duplicata:
me formei em Ciência da Computação, mas não me sinto nem perto de ser um programador especialista
Eu me formei recentemente na universidade e, desde então, entrei para uma equipe de desenvolvimento em que sou de longe o desenvolvedor menos experiente, talvez com alguns termos de trabalho. Enquanto isso, o resto da equipe está balançando de 5 a 10 anos de experiência.
Eu era um aluno muito bom e um bom programador quando se tratava de tarefas e testes em garrafas. Eu trabalhei em alguns projetos com sucesso, mas agora estou trabalhando com uma base de código muito maior, e a curva de aprendizado é muito maior.
Fiquei me perguntando quantos outros desenvolvedores começaram suas carreiras em equipes e saíram como se tivessem sugado. Quando isso muda? Como posso acelerar o processo? Meus idosos estão me ajudando, mas quero ser ótimo e mostrar meu valor agora.
fonte
University prepared me for computer science, but not really for software development.
Não. Aprendi muito mais sobre engenharia de programação / software nos primeiros 6 meses de trabalho após deixar a universidade do que nos anos anteriores. No entanto, isso não significa que a universidade foi uma perda de tempo, preparou minha mente e forneceu o conhecimento básico para desenvolver.
Por outro lado, olhando para trás agora, eu ainda não sabia o que estava fazendo há 6 meses.
fonte
A educação fornece uma base para a construção, mas não a prepara para o desenvolvimento de software na vida real. Isso vem com a experiência. Eu definitivamente estava na mesma situação que você quando comecei a programar para um emprego. Contanto que você continue aprendendo, lendo livros, postagens no blog e aplicando o que aprende em seu trabalho , vai melhorar. A chave é aplicar o que você aprende. Apenas ler não ajuda, você precisa aplicar ativamente novos conhecimentos.
fonte
Eu definitivamente pensei que era, mas não era.
Confie em mim, em algum momento de sua carreira, você voltará e trabalhará em algum código que escreveu, mas não tocou há anos e deseja desesperadamente que nenhum outro desenvolvedor profissional veja esse código ou saiba que você o escreveu. Isso significa que você está crescendo.
fonte
De certa forma, escolher uma linguagem de programação é como escolher uma linguagem natural. Você pode aprender uma boa quantidade de teoria na escola. Você aprende a gramática e os elementos básicos do vocabulário e pensa que é muito bom, até se encontrar em uma conversa real com um falante nativo, e então fica completamente perdido.
A maneira como você realmente aprende o idioma, a ponto de se manter em uma conversa com falantes nativos, é realmente falando o idioma, a cada hora de cada dia. Isso geralmente significa ir morar em algum lugar onde é falado. E é aí que uma coisa interessante acontece. Embora o que você aprendeu na escola seja inútil, por si só, nas ruas de um país estrangeiro, ele fornece uma base teórica boa e sólida que facilita muito o aprendizado de idiomas. (Essa foi minha experiência com o espanhol, pelo menos.)
A programação é da mesma maneira. O que você aprende na escola não o prepara para o trabalho que você precisa fazer como um programador real, mas (supondo que você esteja em uma escola competente que não embuste tudo no interesse da popularidade), ele ajuda a se preparar sua mente para que, quando chegar a hora de realmente aprender a ser um bom codificador, os conceitos fundamentais de que você precisa já estejam em vigor. (Essa foi a minha experiência com programação, pelo menos.) :-)
fonte
Muitos bons programadores saem dos cursos universitários de ciência da computação, principalmente os mesmos que entraram neles.
O problema da ciência da computação é que, como as pessoas discutiram acima, não é o mesmo que programação. Muitas coisas que estudei na universidade para a qual basicamente não estava pronta - havia muitas que pareciam bobagens acadêmicas quando estava ouvindo palestras sobre isso, mas alguns anos depois eu desejava tinha prestado mais atenção a isso quando acabei aprendendo um monte de coisas novamente que arquivei como inúteis. Na verdade, eu acho que alguém poderia usar alguns anos de programação em um ambiente comercial antes de começar uma graduação em ciência da computação, se é isso que você quer fazer.
Também acho que muitas vezes na universidade você não sabe necessariamente aprender. Muitas coisas que aprendi por engano ou com outros desenvolvedores certamente são coisas que meus professores e alunos de graduação sabiam na universidade, mas eu não tinha idéia de que seria útil entendê-los. Perguntar às pessoas sobre os problemas que você está tendo enquanto aprende a fazer alguma coisa (e isso se aplica a qualquer coisa realmente) torna o processo de aprendizagem mais suave e menos doloroso. A maioria das coisas que você pode aprender por si ou por outras pessoas - considerando que muitas das lições que aprendi por mim foram aprendidas com meus erros dolorosos, eu escolheria aprender com outras pessoas quando puder ...
fonte
Gostaria de citar a publicação de Brian Hurt
que também se refere à programação de graduação de Joel Spolsky e ao brilhante artigo intitulado Who Killed the Software Engineer
Todas essas discussões descrevem a realidade bastante bem e, na minha opinião, respondem sua pergunta como "Não", porque a universidade não fará de você um bom programador. Você precisa se tornar um bom programador por conta própria.
Eu não sou formado em CS, mas estou profissionalmente programando e desenvolvendo software há 8 anos. Todas as minhas habilidades de programação eu aprendi.
fonte
Não, eu estava fingindo ser um programador e aprendi da maneira mais difícil. Consegui meu primeiro cliente como freelancer e lutei muito mal com C / C ++ e, eventualmente, ganhei. Lembro que demorou algumas horas para entender que fazer malloc em uma estrutura não era suficiente para alocar também memória para os ponteiros na estrutura.
fonte
Eu era um bom programador quando me formei na universidade. Eu também tive uma excelente oferta de emprego meses antes de me formar (que eu pude recusar por uma ainda mais sofisticada).
A chave era que eu havia trabalhado muito como hobby, com um trabalho de desenvolvimento da Web durante o ano letivo e fazendo estágios de verão de qualidade com a IBM ("equipes de velocidade ExtremeBlue" e o programa ExtremeBlue propriamente dito). Uma boa experiência pré-profissional permitirá que você pule um pouco do material básico quando se formar.
(Dito isso, ainda fiquei muito melhor programando nos meus primeiros seis meses em um Real Job (tm). Não que eu tenha terminado depois, mas foi quando realmente estava mostrando muita coisa.)
fonte
Posso dar uma resposta inversa, pois fui direto do ensino médio para o trabalho. Comecei a trabalhar como programador inteligente e fui quase imediatamente produtivo no projeto que meus empregadores me deram. Eu tinha alguns colegas que tinham um diploma de ciência da computação novo e eles não eram produtivos.
Com o tempo, alguns colegas de trabalho aprimoraram muito suas habilidades, enquanto outros não, e isso não estava relacionado ao seu GPA.
fonte
A universidade não ensina você a se tornar um programador do mundo real. Eu acho que isso é semelhante com muitos empregos em comparação com seus programas de graduação. Eu não diria que não tenho nada do meu diploma, mas foi muito menos útil do que passar 4 anos realmente no trabalho.
Mas tudo bem. Todo trabalho que comecei provavelmente estava subqualificado. Se você tem confiança em suas habilidades e se dedica à aprendizagem, pode acelerar e fazer o trabalho.
fonte
Acho que não aprendi nenhum fato sobre programação em geral ao qual não fui exposto na faculdade. Claro, eu peguei novas linguagens de programação aqui e ali, aprendi novas APIs, novas bases de código e novas ferramentas, mas os conceitos gerais estavam todos presentes logo após a escola.
O que você adquire com a experiência é um tipo de instinto que acelera a maneira como você restringe um bug relatado ou o leva diretamente à maneira mais robusta de escrever um novo código. Quando você é novo, ainda pode corrigir o mesmo bug ou implementar o mesmo recurso, mas leva mais tempo e é mais provável que você precise voltar e corrigi-lo para um problema imprevisto.
É por isso que é importante conseguir colegas mais experientes para orientá-lo. Vá até eles e diga: "É assim que eu acho que isso deve ser tratado. Você consegue pensar em uma maneira melhor?" Isso oferece o benefício da experiência de descobrir por si mesmo e de aprender com a experiência dos outros.
fonte
Eu era um programador melhor do que meus professores na universidade.
Aprendi ótimas práticas de programação quando comecei a trabalhar.
fonte
Um bom programador está sempre aprendendo ... aprendendo uma maneira diferente de fazer isso ou uma maneira melhor de fazer isso. O que quer que seus colegas programadores tenham para lhe ensinar, eu ouviria.
fonte
Uma das coisas que ninguém mencionou é que os problemas que você tem para resolver na escola são deliberadamente embotados para facilitar a visualização de como usar como técnica específica que você está aprendendo. Você geralmente sabe qual técnica você deve usar para esse problema específico, porque é a que você acabou de abordar na aula. Projetos de semestre inteiro são um pouco melhores, mas ainda limitados em escopo e complexidade em comparação com o mundo real.
Os projetos da vida real são confusos e evoluem ao longo dos anos (nosso software tem mais de dez anos e vem mudando continuamente desde então) e é tocado por muitas pessoas diferentes com diferentes níveis de habilidade. Você ainda pode estar tocando uma versão de banco de dados de 10 anos e não pode usar nenhuma técnica SQL mais recente. Você pode estar usando uma ferramenta que foi ótima há 8 anos, mas que não aprendeu na escola porque foi substituída por outra coisa. Mas a empresa não quer pagar meses de esforço de desenvolvimento para substituí-lo totalmente.
Você está preso em um mundo em que o tempo para desenvolver é severamente restringido pelo que o cliente pagará e pelo que são, às vezes (normalmente bem) os prazos artificiais.
Você pode estar constrangido a usar as ferramentas solicitadas especificamente pelo cliente. Você pode ter requisitos vagos ou que não fazem muito sentido. Você pode estar lidando com um domínio comercial muito complexo sobre o qual não sabe nada e, portanto, não pode julgar se os requisitos fazem sentido.
Os problemas do mundo real não são de forma alguma comparáveis aos bons problemas de limpeza que eles oferecem na escola. Se você não estiver confuso e se sentindo deslocado durante a maior parte do primeiro ano, eu me preocuparia com você.
fonte
É pior do que isso ... depois de alguns anos neste trabalho, você estará se sentindo muito bem com o que aprendeu. Mas você mudará de emprego e sua nova empresa (ou talvez até um novo grupo dentro da mesma empresa) fará as coisas de maneira diferente, e você sentirá que está de volta à estaca zero. Haverá código diferente, padrões de codificação diferentes, ferramentas diferentes e processos diferentes, e após dois dias disso você se perguntará se realmente aprendeu alguma coisa no seu último trabalho. Você superará a sensação de peixe fora d'água mais rapidamente desta vez, mas ainda demorará mais do que você gostaria.
Há um período de adaptação toda vez que você troca de emprego. Fica mais curto à medida que você ganha experiência, mas está sempre lá.
fonte