PERGUNTA

Programação (velocidade x falta de habilidade)?

Bom esta pergunta é para mim um TABU.

Trabalho com programação faz um tempinho e sempre observo alguns programadores, alguns são rápido no gatilho e outros nem tanto, afinal, sabemos que analisar o próprio código quando se é extenso é complicado, mas tem certas pessoas que geram códigos rápidos e complexos em instantes, um exemplo. Competições: Campus Party, Hackathon e por ai vai. A minha duvida é... um bom programador é aquele que gera códigos rápidos ou aquele que vive constantemente recapitulando alguns algoritmos? Pois sabemos que tem pessoas habilidosas que tem aptidão para lidar ao mesmo tempo (será mesmo?) com #HTML, #C#, #Java, #MySQL, #JavaScript, #CSS e por ai vai. Será que pessoas como acabei de citar, ficam recapitulando ou são incríveis mesmo?

Sei que tem pessoas vão dizer: "isso depende de pessoa para pessoa". Mas queria saber como é o mercado de trabalho? Como o mercado exige o trabalho de um programador? Qual é um tempo médio (sei que existe prazos diferentes, mas claro, tem um prazo mínimo para cada programa mesmo que seja simples) para criar um programa e dizer se é ou não um programador de verdade (exemplo: trabalhadores da Microsoft, Google, At&T, Cisco, Etc.) ? 

Respostas 3

Consegue ajudar? A comunidade agradece

foto do perfil Marco Mascarenhas Marco Mascarenhas

@Yuri Dutra, para mim a razão pela qual uma pessoa é classificada como boa, mediana ou ruim no seu trabalho - independente da área de atuação - é medido pela capacidade de realizar algo bem feito em um tempo satisfatório. Um comediante que faz apenas uma piada boa de ano em ano não se sustenta na sua profissão, um desenvolvedor que precisa de 6 meses pra construir uma ferramenta que diversos outros fazem em 2 meses também não será bem avaliado (vamos considerar aqui que ambos fizeram a ferramenta com 100% de qualidade). Muitas vezes isso é o que difere o estagiário, de um desenvolvedor júnior, pleno, sênior e por ai vai.

Nesse quesito divido as pessoas em 4 grupos:

  • Aqueles que fazem um serviço bom e rápido

Esses normalmente são os profissionais que mais crescem na carreira, pois tem a capacidade de tomar decisões e construir coisas interessantes e bem feitas no menor tempo possível.

  • Aqueles que fazem um serviço bom e devagar

São valorizados, mas precisam sempre de uma supervisão para que não extrapolem prazos e normalmente só conseguem dar conta de um projeto por vez.

  • Aqueles que fazem um serviço ruim e rápido

Muitas vezes são inexperientes e querem mostrar serviço, entregar rápido as tarefas e acabam se precipitando. Geram para equipe bastante retrabalho, mas podem evoluir se estudarem mais.

  • Aqueles que fazem um serviço ruim e devagar

Esse aqui é a especie de gente que você deve fugir de perto. Pessoas procrastinadoras e que não se importam em apresentar trabalhos ruins acabam contaminando todo o grupo.

Continuando respondendo a sua pergunta, não existe tempo médio de criação de uma ferramenta. Isso varia muito. A dica que dou pra finalizar aqui é:

Ande com pessoas talentosas e se espelhe nas referências da sua área. Tente sempre estar entre os melhores de onde você for trabalhar.

Se o objetivo é trabalhar no Google, na Microsoft, na Cisco estude muito e participe de iniciativas que mostre o quão você é bom. Aprendeu alguma coisa? Compartilhe seu conhecimento, seja visto por todos! Depois de adquirir bastante bagagem faz o processo seletivo dessas empresas que você terá grandes chances. Quanto mais cedo você começar, melhor. 

foto do perfil Giancarlo Cruz Giancarlo Cruz

Achei bem bacana a analise feita pelo @Marco Mascarenhas e para complementar o assunto, saliento da importância de um bom gestor para lidar como todos os profissionais desses 4 grupos, aproveitando o melhor de cada um deles em cada fase do projeto, inclusive os do 4º grupo que podem não ser bons no desenvolvimento, mas alguns (lembrando que apenas alguns) podem ser úteis para a área de treinamento ou analise.

foto do perfil Makoto Kakeya Makoto Kakeya

Apesar de já trabalhar há mais de 20 anos nesse mercado (iniciei com o assembly) esse é o meu primeiro post nesse fórum, que descobri recentemente.

Em linhas gerais concordo com o comentário do @Marco, acima, mas tenho alguns pontos a acrescentar, que só os anos de carreira me proporcionaram.

Tudo depende do objetivo a que se programa. Sistemas que necessitam de alta confiabilidade (tipicamente os que rodam 7x24 em alta disponibilidade no core) , devem passar por processos formais de análise e testes exaustivos, antes de implantar. Nesses, um programador que erra pouco (ainda que lento), tem maior chance de se destacar, pois seu trabalho demanda pouco retrabalho das equipes. Em sistemas menos exigentes, em confiabilidade, mas que exigem baixo tempo de implementação (UI, Web, e outros sistemas que não geram grandes transtornos se falharem), um programador rápido que consiga completar as tarefas com rapidez (e entregar parciais no prazo para avaliação do cliente) são mais valorizados, principalmente se acompanhados de um bom gestor de projetos que priorize as atividades olhando para as necessidades do cliente/usuário final.

Claro que sempre queremos sempre um serviço bom (livre de falhas e com código fonte limpo) e rápido (entregue no menor tempo possível). Mas não temos sempre uma equipe de especialistas à disposição para todo e qualquer projeto. E também temos que dar chance aos novos que ainda estão aprendendo.

Para a dúvida do Yuri, eu diria que não existem pessoas habilidosas, existem pessoas que conhecem e mantém boas bibliotecas. Quanto a linguagem, usada, eu tendo a acreditar que há espaço para o integrador (que conhece várias linguagens) e para o especialista (que conhece o detalhe do detalhe de uma linguagem só), aí também, a escolha se faz caso a caso dependendo do que deve ser entregue ao seu cliente.

O foco deve ser: - O objetivo do seu cliente, ao encomendar o sistema. Somente sua satisfação será a real medida do sucesso de seu trabalho. Costumo falar ao pessoal da minha equipe que,  antes de serem programadores, eles estão construindo uma solução, e como tal, tem que usar a ferramenta, ter a confiabilidade , velocidade de implementação (e custo) adequadas às necessidades do projeto. Portanto, a escolha do profissional com as características certas para executar o projeto deve ser feita caso a caso.

Se estiver montando uma equipe, olhe para a média de suas demandas antes de definir um perfil para os profissionais que irão compor. E procure ter um pouco de cada tipo de perfil, lembrando também de pegar novatos para formar e moldar de acordo com as necessidades, eles são mais maleáveis e cobrem melhor as lacunas.

Espero que esse bla bla bla de velho ajude...