“Contratar apenas os melhores” é um conselho realmente prático para a programação normal de aplicativos de desktop? [fechadas]


61

Como pano de fundo, estamos desenvolvendo aplicativos de engenharia de desktop, com uma interface do usuário do AutoCAD, algo semelhante ao etabs .

Uma coisa que realmente me incomoda é a necessidade de contratar os melhores desenvolvedores? Para iniciantes, estamos enfrentando grandes dificuldades no recrutamento; a maioria dos currículos que vemos são aplicativos CRUD simples ou personalização do SharePoint, que eu acho que realmente não envolve muita programação pesada. Mesmo aqueles a quem chamamos para entrevista, a maioria não consegue fazer a sequência de Fibonacci e uma simples busca binária, e somos gentis o suficiente para dar dicas e esclarecer os problemas explicitamente, para que os candidatos não precisem procurar um dicionário para verificar o que significa "sequência de Fibonacci".

Isso me fez pensar: Sim, precisamos de algum nível de aptidão para programação ao fazer coisas de geometria computacional / programação linear, e precisamos de algum nível de aptidão para programação ao projetar a arquitetura de software / ou decidir qual padrão de software usar, mas além disso , muito do nosso código é apenas código de canalização (eu acho), o que pode ser feito por alguém familiarizado com a programação.

Dado que realmente precisamos de talentos de programação agora e que a contratação de desenvolvedores de superestrelas é muito difícil, quero diminuir meu padrão e contratar apenas os mais ou menos, em contradição direta com o que Joel prega .

O que você acha?

Editar: você não precisa reescrever toda a geometria computacional / bibliotecas de programação linear; tudo o que você precisa fazer, no que diz respeito à minha aplicação, é saber como converter os problemas em questão em termos apropriados de programação geométrica / geométrica computacional e saber quando / como usar as bibliotecas existentes. Portanto, não é tão difícil quanto parece.


53
Resposta padrão: talvez você esteja oferecendo salários muito baixos e desenvolvedores melhores não estão interessados ​​em trabalhar para você? De qualquer forma, se você tiver problemas com pessoas incapazes de fazer pesquisa binária, do que não é um problema com a falta de superestrelas, um codificador comum pode fazê-lo.
quant_dev

15
Sua capitalização título faz-me lê-lo como PANDA :)
cthom06

13
Eles não podem escrever a sequência de Fibonacci? Isso não é de forma alguma difícil ... essas pessoas não podem ser programadores.
Ben B.

6
Graviton, tudo se resume a salário. Se (apenas por exemplo) você oferecesse o triplo valor de mercado para salário, teria pessoas dispostas a deixar o emprego para trabalhar para você. Não estou sugerindo que você ofereça MUITO, mas ilustra o ponto. Se você deseja bons currículos, precisa pagar por isso.
Riwalk #

7
@ user1525 porque é algo trivial, os desenvolvedores não devem normalmente têm um problema implementá-lo (a recursividade ou nenhuma recursão)
Darknight

Respostas:


110

Eu sugiro que você pare de ler Joel demais. O que ele escreveu em seu blog contradiz suas respostas neste site, então eu realmente não confio na palavra dele por muito.

O que torna uma superestrela e por que é necessário ter uma abre uma discussão longa e sem saída. É elitismo e não é prático.

O que você precisa é de uma pessoa que:

  1. Adoraria fazer o que você está fazendo
  2. Seria um programador entusiasta apaixonado
  3. Teria o potencial de aprender o que é preciso para fazer seu trabalho corretamente

O resto não tem importância.

Você não acreditaria em quantos jovens recém-formados estão lá fora, que não querem nada além de mergulhar nesse tipo de projeto com foco em CS e nunca olhar para codificar aplicativos CRUD. Há um tempo atrás eu era um deles, eu praticamente sonhava em ingressar em um projeto de desenvolvimento de compiladores, mas não consegui encontrá-lo. Por que não dar uma chance a um deles?

Não acredito que o AutoCAD tenha sido escrito por super-homens. A maioria dos projetos bem-sucedidos foi realizada por pessoas que simplesmente queriam concluir o projeto e realmente queriam isso.


a maioria dos currículos que vemos são aplicativos CRUD simples ou personalização do SharePoint

O que esperar se a maioria dos empregos exigir exatamente isso? As pessoas podem ter estudado ciências da computação na universidade e até ter sido realmente boas nisso, mas não se pode esperar que elas se lembrem disso, se nunca usaram isso na programação prática em 10 anos. Obviamente, ninguém vai ler livros antigos de CS todos os anos apenas para mantê-lo atualizado, se esse conhecimento não for usado em lugar algum.


11
Resposta incrível!

33
Sim, tudo bem, mas trabalhei com pessoas entusiasmadas e apaixonadas que não têm idéia. Eles são um peso morto, e você não os quer em sua organização. Portanto, alguns testes de aptidão BASIC para eliminar os idiotas realmente idiotas são uma coisa muito boa a se fazer.
quickly_now

3
O último parágrafo me descreve em detalhes.
ozz

20
Vimos muitos "testes de aptidão" que eram totalmente inúteis, até com erros flagrantes (e apontá-los fez com que você falhasse no teste, encontrar e apontar erros faz parte do nosso trabalho como desenvolvedores ...).
jwenting

2
@ Art Developer, talvez tenha tido sorte para você? Se você não conseguir convencê-los do erro de uma pergunta da entrevista, imagine que problemas você teria no trabalho.
Mark Ransom

41

Um livro que eu realmente gosto é o primeiro que quebra todas as regras . Tem muitas informações sobre as diferenças entre gerentes médios e bons gerentes. Um dos principais insights que bons gerentes disseram repetidamente foi resumido por um deles na frase: nunca esperei muito tempo para encontrar a contratação certa e nunca demiti a contratação errada com rapidez suficiente. Sim, é frustrante levar muito tempo para contratar, mas vale a pena.

Um segundo ponto que você deve ter em mente é que, quando medido na taxa de transferência do projeto, há um pico de produtividade para equipes de 5 a 8 pessoas. Você não volta à mesma produtividade até ter uma equipe de mais de 20 pessoas. Seja muito, muito cauteloso ao fazer crescer uma equipe além do tamanho em que a dinâmica de pequenas equipes funciona. E se você permanecer abaixo desse limite, realmente deseja que essas 5 a 8 pessoas sejam boas.

Ambos os pontos falam fortemente no sentido de procurar a contratação certa.


2
+1 para essa cotação. Ele reflete perfeitamente o que percebi nos últimos anos.
Kris

o que é interessante no pico de 5 a 8 é que, assim que você conseguir 10 pessoas, poderá dividir-se :) É claro que o trabalho também precisa ser dividido, e de preferência não aleatoriamente ...
Matthieu M.

@ Mattieu-m: Muitas pessoas têm essa teoria. Se os dois grupos realmente precisam interagir muito, isso não funciona. Se eles podem receber preocupações verdadeiramente separadas, então funciona bem.
btilly

26

Todos afirmam "contratar apenas o primeiro percentil". Se isso fosse verdade, 100% das pessoas empregadas estariam no "primeiro percentil" de todas as pessoas, portanto 99% de todas as pessoas estariam desempregadas (em qualquer campo). Como esse claramente não é o caso, e todos nós já experimentamos pessoas que claramente não fazem parte desse grupo (por que mais você faz essa pergunta ...) sabemos que isso não é verdade.

De fato, as organizações compostas exclusivamente por essas pessoas seriam altamente instáveis. Muito ego, muitas idéias conflitantes. Ele desmoronaria à medida que todo mundo faz suas próprias coisas, atolava em discussões teóricas intermináveis ​​sobre os méritos relativos de tudo, ou evoluía para uma constante briga de gritos, à medida que os sentimentos surgem sempre que uma decisão precisa ser tomada.


13
O problema é que, apenas porque você contrata apenas 1% dos candidatos que se inscrevem para você não significa que você está contratando o 1% dos desenvolvedores. 8 ') No que diz respeito aos super-heróis , eles são freqüentemente considerados um problema para o resto do time. Uma pessoa trabalhando em 200%, mas reduzindo 5 pessoas para 50%, não é um ganho líquido.
Mark Booth

2
+1: estatisticamente, a maioria das pessoas está dentro de alguns pontos percentuais da média. Quem não aprecia isso está vivendo em um mundo de sonhos. E você está absolutamente certo: as pessoas que estão muito longe da média são perturbadoras, estejam acima ou abaixo da média em capacidade.
Satanicpuppy

5
@Satanicpuppy: Estatisticamente, dada uma distribuição normal, cerca de dois terços das pessoas estão dentro de um desvio padrão da média, e algo como 98% estão dentro de dois desvios padrão. Isso não diz nada sobre qual é o desvio padrão ou, de fato, se alguma distribuição arbitrária é normal. A capacidade de programação entre os programadores é definitivamente distorcida e pode até ser a cauda certa de uma distribuição normal.
21811 David Thornley

11
Uma das principais razões pelas quais o talento de programação entre os programadores pode ser distorcido e / ou a cauda direita de uma distribuição normal seria se o talento de programação em seres humanos fosse normalmente distribuído. A subamostra de seres humanos que se tornam programadores é uma amostra tendenciosa dessa distribuição; isto é, as pessoas medianas ou piores na programação raramente se tornam programadores. Isso pode fazer com que um programador "médio" tenha talento acima da média em relação à população em geral, e também pode fazer com que o talento de distribuição de programadores pareça o rabo certo de uma distribuição normal.
22711 Michael McGowan

2
@ David: "Ninguém pode estar tão abaixo da média"? Eu gostaria de trabalhar onde você trabalha.
Satanicpuppy

25

A primeira coisa que você precisa perguntar é por que você está recebendo currículos que não estão dentro dos padrões que você deseja. Eu trabalhei com muitas pessoas boas, então elas estão por aí, e o aplicativo parece muito interessante para mim. Se você não conseguir pessoas que possam fazer sequências de Fibonacci e pesquisa binária (o que é mais difícil do que parece; de ​​acordo com Knuth, foram vários anos entre a primeira publicação e a primeira publicação correta), você está fazendo algo para impulsionar o processo. bons longe.

Você está pedindo mais habilidade do que está disposto a pagar? Você está anunciando nos lugares errados? Sua empresa não é atraente por localização ou reputação? Esse é o seu primeiro e mais básico problema e o que você precisa resolver com urgência. Você e seus colegas, sem dúvida, conhecem algumas pessoas boas que não estão trabalhando para você. Mostre a eles o que você tem e pergunte se eles seriam tentados e, se não, por que não. Você pode estar muito perto do problema para entendê-lo sem ajuda.

Não contrate pessoas, porque elas são as melhores aplicadas. Contrate pessoas, pois elas poderão fazer o que você deseja. Se você contratar medíocre, porque isso é tudo o que se aplica, então você lentamente perderá boas pessoas e acabará com pessoas cuja álgebra é instável, tentando fazer coisas com geometria computacional. (Contratar medíocres porque você tem um emprego para dois programadores medíocres é outra coisa, mas você deve poder contratar pessoas de qualidade onde precisar delas.)


7
Porque os departamentos de RH são muito incompetentes na seleção de candidatos a software. Requisitos: 10 anos em script de café, 40 anos de programação em PHP, educação: BS / BA
Incognito

11
@ user1525: Pode muito bem ser incompetência de RH, mas o ponto importante é descobrir por que e como corrigi-lo (ou descobrir que não é corrigível, por isso é claro que é hora de abandonar o navio). Eu não tiraria conclusões precipitadas. Sua resposta sugere outra abordagem: faça com que pessoas boas enviem currículos e vejam o que o RH faz com elas.
David Thornley

18

"a maioria não consegue fazer a sequência de Fibonacci e uma simples busca binária"

Seus critérios estão certamente errados. No meu grupo somos todos físicos ou engenheiros. Aposto que ninguém poderia fazer pesquisa binária porque não participamos de cursos de ciências da computação e, na vida real, usamos uma biblioteca para isso. Eu diria até: alguém que escreve o próprio binsearch não sabe como se concentrar em coisas importantes.

É de muito maior importância se o candidato for inteligente e se encaixar no grupo. Se você quiser verificar o talento de programação dele, dê a ele um trabalho para fazer em casa. Observe quanto tempo levou para ele / ela e discuta os resultados para descobrir se é o trabalho genuíno dos candidatos.


3
Pode não ser esperado que o candidato obtenha a pesquisa binária exatamente correta, mas se você puder dar algumas dicas ao candidato, ele poderá ser capaz de se aproximar. Na IMO, é mais interessante ver como as pessoas tentam resolver os desafios apresentados a elas do que ter uma enciclopédia na cabeça.
Dpk

11
Sou físico treinando e posso fazer pesquisas binárias com os olhos vendados e com uma mão amarrada nas costas. Desculpe, mas não saber como escrever uma simples implementação de pesquisa binária é ... ruim. Nenhuma outra palavra para descrevê-lo, apenas pobre.
Quant_dev 4/05

sim você está certo. A pesquisa binária, pelo menos a idéia básica, poderia ser feita de fato. Eu posso fazer isso também.
5609 Michael

... pelo menos a idéia básica (embora eu não pudesse fazer Fibonacci sem antes procurar o que era). Mas um teste como esse coloca em vantagem as pessoas que apenas assistiram às aulas de cs ou simplesmente prepararam as perguntas acidentalmente. É mais útil dar aos candidatos um exemplo de programação do mundo real. Ele mostra como eles resolvem problemas mais complexos sem pressão imediata e também pode mostrar aos candidatos que tipo de trabalho você espera que eles façam (escolha um bom exemplo). Muito mais útil do que perguntas de livros didáticos IMHO.
5609 Michael

2
Não saber a definição da sequência de Fibonacci do topo da cabeça não é preocupante. MAS, ser incapaz de escrever um programa para calculá-lo depois de explicado é preocupante (mesmo que tudo o que você espera que eles façam seja calcular subtotais em um aplicativo CRUD simples!).
Stephen C. Steel

13

Eu acho que "contratar o melhor" está se tornando um culto demais.

A maioria dos trabalhos de programação é rotineira e não criativa. Mesmo ao trabalhar em novos projetos realmente criativos. A maior parte é monótona e frequentemente baseada em padrões. isso é particularmente verdadeiro para a interface do usuário.

A maioria dos sistemas modernos também exige que tantas pessoas os escrevam, que, inerentemente, nem todos podem ser os melhores. A maioria das pessoas é média, mesmo que não seja, ainda precisa realizar muitas tarefas "comuns".

Dito isto, exigir competência básica e requisitos mínimos sensíveis não é irracional e não é algo que você deva comprometer.

Pense em cirurgia de rotina: dependendo da sua tolerância ao risco, você provavelmente preferiria que um médico comum a realizasse, em vez de esperar 10 anos para que o reitor da faculdade de medicina tivesse tempo para fazê-lo. Isso não significa que você deve deixar o ordenado realizar a cirurgia.


Não tergiversar ... mas o médico "médio", que tem realizado centenas ou milhares de esse tipo de cirurgia pode ser preferível ao decano da escola de medicina, que podem ter mais conhecimento, mas não quase a experiência
JoelFan

8

"Contratar o melhor" tende a significar "contratar o melhor que está disponível atualmente aproximadamente onde estamos" de qualquer maneira, e significa coisas diferentes para empresas diferentes. Alguns querem codificadores da rockstar, outros querem engenheiros de software meticulosos e o próximo precisa de engenheiros de software experientes. Não existe um "melhor universal", portanto, lembre-se disso, e talvez as especificações do seu trabalho sugiram que você esteja procurando por um tipo de programador e a entrevista diga que você está procurando outro programador. De repente, você não recebe correspondências.

Dito isto, não gosto de trabalhar com programadores. Isso não tem nada a ver com experiência (eles podem estar programando há 20 anos e ainda não são muito bons nisso), mas tudo a ver com aptidão e entusiasmo. Se o mais ou menos afetar um desses dois, você tem um problema. Também não faz sentido contratar alguém cujas contribuições precisam ser retrabalhadas por outros membros da equipe, porque o código não é bom o suficiente. Infelizmente, mais vagabundos nos assentos nem sempre é a resposta; infelizmente, mais vagabundos nos assentos também podem significar mais trabalho para os melhores membros da equipe, enquanto eles tentam fazer seu trabalho e limpar a bagunça que o programador entregou .

Algumas pessoas não se apresentam como estrelas do rock, mas são sólidos programadores de nível intermediário. Eles são bons de se ter na equipe e não é isso que eu quero dizer com "tão programador". O último é alguém que mal evita ser demitido todos os anos no momento da análise de desempenho.


11
ugh, até o termo "programador rockstar" me faz querer vomitar.
Ozz

6

Como gerente, concordo que contratar "os 1% melhores" não é prático e não é necessário. Meu conselho seria contratar a equipe certa para criar e manter seu produto (podem ser duas equipes muito diferentes, pois compilar versus manter são muito diferentes em suas necessidades)

Eu sugiro fortemente que você identifique as pessoas que você tem atualmente em sua equipe que são "pessoas-chave" (por exemplo, faça as coisas, tenha boas atitudes, possa trabalhar bem com incerteza / requisitos de alto nível, etc.) e depois contrate as pessoas que eles têm trabalhou com no passado (e respeito, obviamente). Isso elimina muita incerteza em torno do processo de entrevista e ajuda a unir a equipe.

Além disso, mais "prazo mais longo" - invista fortemente em um programa de estágio. Se sua equipe de programação é composta por 20 pessoas, obtenha 5 estagiários por ano e ofereça um trabalho real. Traga de volta a uma ou duas que você gosta a cada ano e traga mais 5 variáveis ​​aleatórias. Essa é provavelmente a melhor maneira de manter sua equipe cheia de bons programadores. Você pode contratar fora de forma oportunista e elevar a fasquia para esses candidatos.

Como já foi mencionado, preste atenção ao seu processo de entrevista. Faça com que os candidatos escrevam código (ou melhor, analise sua solução para um problema de "1 hora leva para casa") e faça-os almoçar com a equipe. Conheça suas habilidades técnicas e interpessoais. E nunca tenha medo de dizer "não", mesmo quando você estiver desesperado por mais 20 pessoas para um grande projeto que começa na próxima semana.


6

Na minha experiência, o Princípio de Paretto também se aplica à programação: 80% do trabalho é realizado por 20% dos desenvolvedores e vice-versa. OK, os números podem ser exagerados. Na realidade, você terá algo como 20% dos funcionários fazendo 50% do trabalho (por trabalho, quero dizer bom trabalho, não apenas linhas de código). Na verdade, é mais como uma curva de sino. Assim, em uma equipe de 10, você terá 1 herói, 2 grandes caras, 4 médios e 2-3 patéticos.

Muitas empresas usam a curva de Bell para avaliar as avaliações. Portanto, praticamente, por mais brilhantes que sejam seus candidatos, eles cairão em seus níveis. Você não pode ter uma equipe em que todos estejam no mesmo nível. Isso não acontece.


2
+1, eu concordo. Mas acho que a pergunta é: você precisa dos "patéticos" (por exemplo, para o moral da equipe ou o que quer que seja) ou a equipe faria tão bem sem eles? E você pode reconhecê-los em uma entrevista de emprego?
Nikie 29/04

10
Definir patético. Se eles são bons mendigos que fazem o trabalho chato e grunhido, mas não conseguem dar o salto da maravilha, você ainda os faz. Mas se eles não têm esperança e não podem fazer nada, então são um desperdício de espaço.
quickly_now

A única razão para manter os patéticos é que você não pode conseguir alguém melhor para substituí-los. Eles fazem o que chamamos de "trabalho do burro": pequenas ou grandes mudanças que não precisam de muita reflexão.
DPD

11
É possível encontrá-los na entrevista. Sim, dependendo das habilidades do entrevistador. Deixei que eles executassem alguns programas e problemas do texbook. Se eles ultrapassarem esse nível, eu lhes dou alguns problemas mais complexos para julgar se eles podem pensar. Os patéticos podem ser bons em sintaxe, mas é só porque eles aprendem isso rotineiramente, sem realmente entender. Eles vão fracassar na resolução de problemas. Alguns vão muito bem dizer-lhe que eles não podem pensar por conta própria e só pode trabalhar em Ctrl + C, Ctrl + V linguagem
DPD

4
Drones de burro trabalham pelo menos funcionam. É quando eles querem reescrever 10 anos de material desenvolvido em Haskell com alguns links para o OCaml, em 3 semanas, e tudo o que tocam transforma-se em cr * p. Então você realmente não os quer!
quickly_now

4

Já existem muitas respostas aqui, mas acho que ainda há um ponto que precisa ser discutido: o impacto que a contratação de pessoas mais ou menos tem sobre a qualidade do seu software e como isso dificulta sua vida como gerente.

A resposta para "é necessário contratar os melhores desenvolvedores?" é sempre um grande e gordo sim. Claro que, na realidade, isso nem sempre é possível. O erro perigoso que eu acho que você está cometendo ao considerar essa pergunta é pensar "nosso software é tão simples que até alguém tão capaz pode fazê-lo". Isto está errado.

Seu software será executado, não duvide disso, mas espere resultados muito diferentes de uma equipe excelente e de uma equipe mais ou menos. Você terá mais bugs, mais problemas de desempenho, mais problemas de manutenção e escalabilidade e assim por diante. Você terá que cuidar de seus filhos com problemas mais complexos. Você terá que tomar conta dos caras mais ou menos através de decisões de arquitetura adequadas.

Se você aceitar isso e estiver pronto para gerenciar isso, tudo bem. Apenas esteja preparado para o processo e os resultados.


+1. Sim. A idéia de que você pode contratar pessoas que não conseguem nem escrever uma pesquisa binária com ajuda e fazer com que sejam algo que não seja puro peso morto - produtores líquidos negativos, provavelmente - é totalmente ridícula.
Tom Anderson

3

Eu acho que não é realmente um problema contratar um ótimo desenvolvedor. O verdadeiro desafio é fazê-los querer trabalhar para você.

Há necessidade de contratar os melhores?
Eu acredito que sim. Um ótimo desenvolvedor não é apenas aquele que realiza tudo a tempo. Não apenas esse indivíduo é muito mais produtivo que outros. Um ótimo desenvolvedor também está liderando pelo exemplo e simplesmente inspirando outros membros da equipe. Outros poderiam avançar bastante ao trabalhar com eles.

OK, então você vai baixar seus padrões. Isso é legal, provavelmente você mudará de idéia depois de contratar um indivíduo realmente ruim. Aquele que responderá a todas as suas perguntas de CS na perfeição, mas que não pode realmente escrever uma única linha de código de produção. Boa sorte com isso :)


3

Vamos dar um passo atrás.

O que estamos tentando fazer? Escreva software.

Por que achamos que precisamos contratar os melhores? Porque aquele garoto do Arnold não conseguia sair de um saco de papel molhado e agora o SQL está todo errado e eu não consigo entrar.

Ok, então qual é o melhor ? Eu não sei, ele provavelmente é alguém que quer muito dinheiro e tem um currículo de um metro e oitenta de comprimento com um ótimo portfólio e trabalhou no google ou algo assim. Ele deveria ter um diploma, e talvez algumas letras no final de seu nome. Sim, isso parece o melhor para mim e, pelo melhor, quero dizer alguém que não é aquele garoto Arnold. Ah, e ele deveria saber como fazer uma porcaria muito difícil sobre a qual ouvi falar na escola, como "escreva uma espécie de bolha" ou o que eles chamarem. Vou pedir a um dos outros caras para citar algumas coisas complicadas que eles tiveram que fazer na escola, sim.

Parece que você simplesmente não quer aquele filho do Arnold? Você iria? Estou cansado de ter um código de buggy, as coisas levam uma eternidade para serem concluídas, e esses novos caras que entrevisto me dizem que preciso reescrever tudo!

Certo, então o que você pede ao filho do Arnold? Crie um site PHP, escreva jQuery, faça com que o PHP faça um CRUD básico com o MSSQL e altere as cores de segundo plano.

Isso soa como uma tarefa bem adequada exclusivamente para os melhores? Tenho certeza de que o melhor poderia fazer isso, mas provavelmente qualquer pessoa que possua o conjunto de habilidades certo que corresponda a isso poderia fazer isso.

Então, você não precisa do melhor? Certo, só preciso de alguém com o conjunto de habilidades que atenda aos meus objetivos.

Oh Sim.


@ user1525, não é um aplicativo CRUD. É um software de engenharia.
Graviton 04/04

Nem sempre. Muitos trabalhos por aí não exigem nenhum conhecimento de estruturas de dados, algoritmos ou complexidade computacional. Claro, eles não são os trabalhos na pesquisa do Google, mas há uma enorme demanda por isso. Basta olhar para a maioria das postagens em quadros de empregos, "Preciso de um plugin jquery" ou "me dê um aplicativo para iPhone que se pareça com esses psd". As pessoas querem o melhor ou o mais barato.
Incógnito

3

O título da sua pergunta menciona um "Aplicativo de desktop normal", mas seu texto fala sobre a necessidade de aplicar conhecimentos de geometria computacional e programação linear. Essas são áreas de aplicação que geraram enormes programas de pesquisa de várias décadas com consequências sociais maciças de qualquer avanço (lembre-se, a programação linear abstrai a alocação de recursos ). Como resultado, existem muitas abordagens sofisticadas para solucionar problemas nessas áreas que funcionam muito bem.

Uma má contratação

  • pode nem ter ouvido falar dessas classes de problemas,
  • pode não estar familiarizado com as soluções comuns,
  • provavelmente não saberia sobre as melhores coisas que existem por aí (dica: a maioria dos estudantes de graduação nunca ouve falar sobre coisas sofisticadas, se é que ouvem sobre os problemas), e
  • quase certamente levaria anos para implementar essas coisas (considerando que eu vi algumas delas darem um seminário de graduação completo em estruturas de dados, inclusive o professor).

Em outras palavras, pense se você está realmente trabalhando em algo para pedestres. Se você é ótimo, contratar deve ser muito mais fácil. Caso contrário, aguarde alguém que possa fazer o que você precisa.


você não precisa reescrever todas as bibliotecas de geometria computacional / programação linear; tudo o que você precisa fazer, no que diz respeito à minha aplicação, é saber como converter os problemas em questão em termos apropriados de programação geométrica / geométrica computacional e saber quando / como usar as bibliotecas existentes.
Graviton

2

Certamente não sou um programador de grandes estrelas pelos padrões de Joel. No entanto, escrevi alguns projetos de sucesso em meus 20 anos de carreira como desenvolvedor. Eu poderia ter resolvido suas perguntas. Porém, menos da minha experiência no trabalho, onde, na verdade, muito do trabalho mais complicado é feito solicitando ao banco de dados ou a uma função de biblioteca que o faça.

Mas se você decidir contratar pessoas menos experientes, considere usar tecnologias fáceis de manusear. Por exemplo, se você planejou usar o C ++ para todo o projeto, limite a parte do C ++ às bibliotecas criadas por seus melhores funcionários e permita que os outros implementem a interface do usuário no Visual Basic.


2

Anote os valores pesquisados ​​em um funcionário que se juntará às suas fileiras.

Quando o único valor apreciado é a competência em programação, você se encontrará rapidamente cercado por pessoas que valorizam exatamente isso. Como os programadores verdadeiramente competentes têm um sistema de valores mais elaborado, eles se absterão de se juntar à sua equipe.

No entanto, é mais provável que você esteja procurando pessoas inovadoras, criativas, confiáveis, eruditas, curiosas, autodidatas, sociáveis, competentes e dedicadas. Mostre que sua empresa entende e respeita esses valores e está disposta a ajudar seus funcionários a desenvolvê-los ainda mais.

Entenda e adote os valores de seus funcionários atuais e comunique-os em seus pedidos de emprego. Boas empresas, com um sistema de valores sustentável, atraem bons funcionários.


-1: se você dissesse (e o OP falasse) dinheiro, é claro que faria sentido. Eu não entendo como essa resposta o ajudaria. Você está basicamente dizendo que ele não coloca marketing suficiente em seu aplicativo, se eu entendi certo? Bem, talvez isso ajude um pouco, mas eu normalmente não vejo muitas pessoas altamente competentes não colocando pelo menos uma quantidade razoável de valor em ... duh .. competência? .. como eu disse, substitua "competência de programação" por dinheiro e sua resposta faz muito sentido, mas desculpe, eu não estou entendendo.
N1ckp 03/03

Se você não entende o meu comentário, talvez não deva modificá-lo. Enfim, o que quero dizer é bem simples. Com o tempo, conheci excelentes programadores. Eles conhecem suas linguagens, algoritmos, matemática, física ... No entanto, o que os tornou ótimos em primeiro lugar foi o interesse em mais do que apenas na arte. Eles geralmente valorizam a curiosidade em si mesmos e nos outros. Eles vêem a erudição independente como uma característica (ou valor) importante ou são inspirados por aqueles que os rodeiam que são criativos. Frequentemente, esses valores são mais importantes que sua renda.
Dibbeke

@Dibbeke: bem, eu o modifiquei também em parte porque não vejo como isso está relacionado à questão. Embora tenha sido um bom discurso, não discordo de seu último comentário (embora sua resposta seja outra coisa), mas ainda não consigo entender como isso ajudaria o OP ou responderia à pergunta real.
N1ckp

@ n1ck Quando você disse marketing, comecei a pensar se basear um processo de contratação em valores básicos é realmente o mesmo. Não sei, mas reconheço que a construção de uma rede social de confiança e respeito é fortemente influenciada por ela. Por sua vez, isso influencia a reputação da sua empresa e ajuda a atrair os desenvolvedores de software de primeira linha.
Dibbeke

@Dibbeke: não tenho certeza se recebi seu último comentário, mas acho que concordo pelo menos um pouco com você. Mais uma vez, não tenho certeza se é útil para o OP (embora eu veja mais como isso está relacionado à questão agora). O que me faz dizer que é ele nunca falou nada sobre sua empresa, então sim , talvez ele poderia ser uma causa que a sua empresa tem má reputação, mas eu acho que você está tirando conclusões precipitadas ..
n1ckp

1

Em qualquer organização, você tem pessoas com mais experiência e pessoas com menos. Não apenas isso, mas um especialista em um campo pode ser um novato em outro. Certamente um amador entusiasmado pode fazer mais mal do que bem a uma base de código, mas é assim que eles aprendem - corrigindo seus erros e discutindo sua experiência com seus colegas mais experientes.

Minha sugestão seria que, em vez de tentar contratar superestrelas, você tente contratar pessoas razoavelmente brilhantes, que se encaixem na cultura da sua empresa, que desejam aprender e tenham uma apreciação de suas próprias limitações.


1

Certamente você deve aspirar a contratar apenas os melhores. Isso não significa automaticamente que você será bem-sucedido nisso - existem tantos "melhores" para se movimentar, e haverá vencedores e perdedores na batalha para atraí-los. Muito disso virá da sua aptidão e vontade de trabalhar duro no problema e dos recursos disponíveis para você.

Desistir antes de começar é a maneira mais segura de perder.


1

A pesquisa binária é um problema interessante, porque é sabido que a maioria dos programadores se esforça para escrevê-la corretamente ( Bently escreve sobre isso em Programming Pearls ). Talvez não seja tão ruim testá-lo, desde que você não esteja descartando candidatos com base no fracasso em resolvê-lo. Se eles resolverem o problema de maneira rápida e correta, pelo menos isso indica que tipo de programador eles são, para que você tenha mais informações nesse caso específico.


1

você precisa contratar o melhor. mas o termo foi citado fora de contexto muitas vezes. você precisa encontrar o melhor candidato com as habilidades necessárias para essa posição e não o melhor programador em um sentido geral. O desenvolvimento de software é amplo e nem todas as posições exigem o mesmo conhecimento técnico.

Faça a si mesmo esta pergunta (você já o fez ..): Se você tem outro engenheiro na mesma posição por 5 anos, espera que ela se lembre das séries fibonanci e das pesquisas binárias?

se a resposta for não, altere seu padrão de entrevista. Pode ser que você precise conhecer uma dúzia de algoritmos de pesquisa se quiser trabalhar em um aplicativo de pesquisa como o google ou o bing. Todos os outros apenas usam map.get ("");

direcione suas entrevistas para o que a posição precisa, não para um bom programador genérico de livros didáticos.


1

Se você realmente não se importa com a qualidade, sugiro usar um dos sites de terceirização e começar com pequenos projetos. Então você pode pagá-los se eles puderem fazer o trabalho e ter uma maneira fácil de pagar a fiança, se não puderem.

No entanto, questiono se há realmente muita codificação de rotina em um aplicativo de engenharia de desktop. Eles podem ser muito complexos e a maioria dos programadores não é tão boa em gerenciar a complexidade. Você pode criar facilmente um monte de código legado instantâneo que amarrará sua equipe nos próximos anos. Em geral, as primeiras contratações para um novo projeto são as mais cruciais e definirão o tom para todo o projeto.


0

Eu concordo totalmente com a maioria dos comentários acima que se referem à adaptação de uma pessoa a um problema. Isso geralmente resulta em um relacionamento de longo prazo, em vez de contratar uma superestrela para trabalhar em um problema comum - o que o frustrará a sair rapidamente.
Dito isto, você deve sempre tentar contratar sua empresa em vez de uma posição específica. Porque esse mesmo cara vai alternar entre equipes mais cedo ou mais tarde com contatos pessoais, etc., e ele pode se tornar um peso morto em outro lugar. Garanta que sua empresa tenha diretrizes de transferência interna muito rígidas e que você tenha uma imagem clara do que fará em sua equipe nos próximos anos antes de contratar uma pessoa que você acha que pode não atender à barra da empresa (mas resolverá o problema atual ) Já vi muitos casos em que a mediocridade nos desenvolvedores fez a equipe trabalhar ainda mais para se adaptar a eles.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.