ti-enxame.com

Devo ser um bom programador imediatamente após a faculdade?

Possível duplicado:
Eu 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.

27
dustyprogrammer

O interessante sobre o desenvolvimento de software é que não importa o quão bom você seja - sempre há alguém melhor ou pelo menos diferente o suficiente para ainda lhe ensinar alguma coisa. Também não é incomum olhar para o código escrito há alguns meses e pensar que é péssimo, independentemente do seu nível de experiência.

Para mim, depois que percebi a diferença entre minhas habilidades e as habilidades de meus colegas de trabalho, comecei a aprender como nunca havia aprendido antes - lendo o código de outras pessoas, postagens de blog, livros, prestando atenção em como meus colegas de trabalho realizavam coisas etc. A universidade me preparou para a ciência da computação, mas não para o desenvolvimento de software. Passaram quase 4 anos e sou um desenvolvedor de software muito mais forte do que costumava ser. Então, fique aí e aprenda o máximo que puder das pessoas ao seu redor. Vai melhorar.

50
Adam Lear

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.

Então, novamente, olhando para trás agora, eu ainda não sabia o que estava fazendo há 6 meses.

23
Dan Dyer

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 de blog e aplicando o que aprende em seu trabalho, você vai melhorar. A chave é aplicar o que você aprende. Apenas ler não ajuda, você precisa aplicar ativamente novos conhecimentos.

10
ysolik

Eu definitivamente pensei que estava, mas não estava.

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.

7
JohnFx

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, basicamente, não estava pronta - havia muitas coisas 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 aprendendo 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 ...

4
glenatron

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 verdadeiro programador, 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.) :-)

4
Mason Wheeler

Gostaria de citar a publicação de Brian Hurt

Ciência da computação e programação são coisas separadas

que também se refere à programação de graduação de Joel Spolsky e ao brilhante artigo intitulado Quem matou o engenheiro de software

Todas essas discussões descrevem a realidade razoavelmente 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.

2
mloskot

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.

1
Karl Bielefeldt

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 tirei nada da minha graduação, 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.

1
RationalGeek

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.

1
martjno

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 ("ExtremeBlue speed-teams" e o programa ExtremeBlue adequada). Uma boa experiência pré-profissional permitirá permitir que você pule um pouco do material básico quando se formar.

(Dito isto, eu ainda tenho muito melhor programando nos meus primeiros seis meses ou mais em um Real Job (tm). Não que eu tenha terminado depois , mas foi quando realmente estava mostrando muito.)

1
user2348

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.

1
Wizard79

Uma das coisas que ninguém mencionou é que os problemas que você deve resolver na escola são deliberadamente confusos, para facilitar a visualização de como usar a técnica específica que você está aprendendo. Você geralmente sabe qual técnica 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 nessa época) e é tocado por muitas pessoas diferentes, com diferentes níveis de habilidade. Você ainda pode estar tocando em 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 se desenvolver é severamente limitado pelo que o cliente pagará e pelo que, às vezes (normalmente é bom) prazos artificiais, são.

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 problemas limpos de Nice 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ê.

0
HLGEM

Eu era um programador melhor do que meus professores na universidade.

Aprendi ótimas práticas de programação quando comecei a trabalhar.

0
mouviciel

É 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 em seu último trabalho. Você superará a sensação de peixe fora d'água mais rapidamente desta vez, mas ainda demorará mais tempo 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á.

0
Caleb

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.

0
Jeremy