Quão comum é uma equipe escrever tudo internamente? [fechadas]

53
Em uma entrevista recente, perguntei aos entrevistadores "como você avalia novas tecnologias e bibliotecas (como SignalR) e as traz para usá-las?". Eles disseram que não, que em vez disso escrevem tudo sozinhos para não precisarem depender de ninguém.

A empresa não trabalha para o governo ou para os contratados de defesa ou para projetos críticos de segurança ou qualquer coisa assim. Eles eram apenas sua empresa de desenvolvimento de software média e de tamanho médio.

Minha pergunta é: quão comum é para as equipes escreverem tudo sozinhas? Devo me preocupar com as equipes que fazem isso?

Editar - Quase todas as respostas dizem que isso é algo para se preocupar. Uma segunda entrevista seria um momento apropriado para pedir que eles esclarecessem / repetissem sua posição sobre como escrever tudo internamente?

    
por Andy Hunt 20.04.2013 / 18:45
fonte

11 respostas

76

Uma atitude de nunca usando bibliotecas de terceiros é absurda. Escrever tudo é um uso horrível do tempo da sua empresa, a menos que exista uma exigência comercial estrita de que cada linha da base de código seja escrita por um funcionário da empresa - mas esse é um cenário incomum, especialmente para uma empresa do setor privado como você descreveu.

Uma resposta mais racional e completa pode ter sido que eles usariam apenas bibliotecas de terceiros que:

  • Atenda às necessidades do código que, de outra forma, eles escreveriam
  • Estavam disponíveis sob uma licença compatível com o modelo de negócios da empresa
  • Testes incluídos
  • Passou por uma revisão de código

Se esses critérios foram cumpridos (e, na minha experiência, a revisão de código é muito flexível, especialmente na presença de bons testes), você não precisa mais "confiar em mais ninguém" - você está confiando em existir, disponível, e preferencialmente código robusto.

Se o código for de código aberto, no pior dos casos, a biblioteca de terceiros ficará sem manutenção. Mas quem se importa? Os testes provam que a biblioteca é adequada às suas necessidades!

Além disso, uma aversão a bibliotecas de terceiros estabelecidas prejudica seriamente a produtividade do programador. Digamos que a empresa estava escrevendo aplicativos da Web e se recusou a usar (por exemplo) o jQuery, então, em vez disso, escreveu sua própria biblioteca alternativa de navegador cruzado para simplificar a manipulação do DOM. Com quase certeza, podemos supor que sua implementação:

  • Terá uma API estrangeira para desenvolvedores já familiarizados com jQuery
  • Não será tão bem documentado como jQuery
  • Não terá resultados relevantes do Google ao encontrar problemas ao usar a biblioteca
  • Não será testado em campo como jQuery

Todos esses pontos são grandes barreiras para a produtividade do programador. Como uma empresa pode desistir dessa produtividade?

Você atualizou sua pergunta para perguntar se isso é apropriado para uma segunda entrevista. Absolutamente é.

Talvez você tenha interpretado erroneamente a resposta do entrevistador na primeira entrevista, ou talvez o entrevistador tenha explicado incorretamente a posição da empresa e um novo entrevistador possa esclarecê-la.

Se você explicar que está preocupado com a posição deles em bibliotecas externas, há pelo menos dois possíveis resultados:

  • Eles estão abertos para mudanças e sua preocupação com o processo deles faz com que você pareça melhor do que alguns outros candidatos.
  • Eles não estão abertos a mudanças e pensam em você como "o tipo de desenvolvedor que não queremos contratar". Não importa, esse não é o tipo de lugar que você quer trabalhar de qualquer maneira.
por 20.04.2013 / 19:05
fonte
34

Isso parece incrivelmente não competitivo. Eu trabalhei em lojas que decidiram pular as bibliotecas padrão de código aberto, como o Hibernate, e rolar suas próprias devido a algum recurso "crítico" ausente. No final, o software era incrivelmente caro para construir e manter. É claro que a despesa da biblioteca interna foi muito subestimada. E enquanto a biblioteca interna era escrita, as bibliotecas padrão avançavam rapidamente, adicionando novos recursos que não estavam disponíveis na biblioteca interna. No final, o trabalho que levaria uma hora usando uma biblioteca padrão levava dois dias. E foi ruim para as carreiras do desenvolvedor, como o mundo passou por eles. Eu evitaria uma loja assim. Eu gosto de entregar e não tenho paciência para reescrever quando posso reutilizá-lo.

    
por 20.04.2013 / 18:55
fonte
20

A loja tem uma doença chamada Não inventada aqui . É uma boa razão para encerrar a entrevista no local e sair imediatamente. Isso só pode ser curado por uma limpeza de casa de cima para baixo que é muito improvável que aconteça.

Para responder à sua pergunta, infelizmente é muito mais comum do que você imagina e é definitivamente um motivo de preocupação.

    
por 20.04.2013 / 19:15
fonte
15

Sim, definitivamente esteja preocupado! Isso cheira a arrogância e (desculpe ser dura) estupidez. Qualquer programador com metade do cérebro usará uma biblioteca como signalR em vez de escrevê-lo você mesmo. Não há absolutamente nenhum ponto em desperdiçar seu tempo resolvendo um problema que já tenha sido resolvido. Eu possivelmente tentaria descobrir mais informações primeiro - elas poderiam ter te entendido mal (pode ser difícil se as entrevistas acabarem!)

    
por 20.04.2013 / 18:56
fonte
11

Eu tenho alguns amigos que trabalharam (brevemente) em casas de software com a síndrome não inventada aqui . Então a mentalidade está lá fora.

Uma observação que ambos fizeram foi em torno da cultura que a abordagem promoveu nas equipes de desenvolvimento. Ambos acabaram trabalhando com pessoas que eram bastante insulares em termos de suas perspectivas de desenvolvimento de software, e pessoas que não eram realmente motivadas a aprender coisas novas e pressionar pela qualidade. Independentemente do estágio em que você está na sua carreira, você sempre gostaria de estar trabalhando em algum lugar onde você tenha a chance de aprender coisas novas com seus colegas. Esse tipo de ambiente, no entanto, parece geralmente não ser encontrado em lugares que desejam lançar tudo sozinhos.

    
por 20.04.2013 / 19:28
fonte
5

Não é comum onde eu moro, e conheço muitas empresas através de colegas. Eu iria tão longe para dizer que é um imediato "não, obrigado" por mim.

Eu não vou regurgitar os bons pontos já feitos, mas vou adicionar uma coisa.

Eles acabaram de tornar a contratação muito mais difícil.

  • Todos os novos contratados têm uma curva de aprendizado ainda mais acentuada do que apenas a parte principal do software / domínio
  • Os melhores candidatos serão rejeitados, pois não querem que suas habilidades sejam utilizadas.
  • As pessoas provavelmente não ficarão por aqui por muito tempo, quando perceberem como é ruim não conseguir usar suas ferramentas favoritas, e a rotatividade de pessoal é cara

Agora, claro, haverá pessoas que gostarão do desafio, mas acho que elas seriam minoria.

E, da mesma forma, haverá algumas empresas que operam em "escala da Internet", Amazon, Facebook, etc., onde têm necessidades personalizadas insanas, mas, novamente, essas são minoria.

    
por 20.04.2013 / 19:56
fonte
4

Eu não acho que uma empresa de software possa sobreviver hoje sem depender de software de terceiros e / ou de código aberto e, para permanecer competitiva, é claro que eles precisam monitorar ativamente novas tecnologias. Muitas vezes, existem boas razões para se ter pelo menos uma visão bastante defensiva.

Como exemplo, se você vende software e afirma oferecer suporte 24 horas por dia, 7 dias por semana e também é legalmente responsável pelo funcionamento correto do software, é necessário ter uma ideia muito precisa do que acontecerá se houver um problema. problema com seu software em, digamos, uma fábrica em que 1 hora de inatividade de produção pode custar vários milhões de dólares, e então um bug sério está na biblioteca de código aberto que você estava usando. Acredite, você fará avaliações muito completas do software em questão.

Pelo que você escreveu, este cenário não parece estar no cerne da questão.

    
por 20.04.2013 / 20:26
fonte
4

Se você é uma empresa de tecnologia de um determinado tamanho, parece que estará desenvolvendo cada vez mais sua própria tecnologia, por exemplo: o google desenvolve muito se não a maioria, se não todo o seu software, enquanto o open source a maior parte na busca para torná-lo um padrão da indústria.

Para empresas menores, pareceria uma perda total de tempo quando elas tentam enviar um produto específico com sua própria lógica de negócios e, em minha experiência, não vi que as pequenas e médias empresas o fazem.

Torna-se mais complicado quando se fala de base de código altamente especializada, por exemplo: algoritmos de criptografia - algumas pessoas têm uma compreensão básica de como funcionam, mas as partes intrincadas da implementação de uma solução parecem disparar no pé, a menos que você contrate um criptógrafo especializado em tais coisas.

Algumas empresas permitem liberdade para criar seus próprios projetos de código aberto, o que parece mais apropriado.

Eu pessoalmente não iria a um lugar com essa cultura.

    
por 21.04.2013 / 15:46
fonte
1

O que você tem é uma boa oportunidade para entrar na segunda entrevista e fazer algumas perguntas difíceis. Eu não sei o que a empresa faz então é difícil dizer por que isso parece uma escolha estranha. Você poderia usar o comentário de @Daniel Pryden com relação ao uso de bibliotecas de terceiros pelo Google.

Qualquer software que você use, seja interno ou de terceiros, tem vantagens e desvantagens. Não usar uma ferramenta porque não é interna, mesmo que seja a melhor ferramenta para o trabalho, mostra uma certa mentalidade fechada e isso nunca encorajará a inovação e a criatividade.

Talvez, talvez, você seja a pessoa a introduzir essa mudança. Boa sorte com tudo.

    
por 23.04.2013 / 22:00
fonte
-3

Claro que você deveria ir embora. Eu não vi isso mencionado aqui, mas a maior razão para passar por cima do trabalho é porque você não vai ganhar muito em habilidades transferíveis.

Imagine na sua próxima entrevista, quando eles perguntarem em quais tecnologias você trabalhou, e você pode mencionar apenas ossos desencapados C ++. Isso soa como nível de pós-graduação

    
por 20.05.2013 / 06:14
fonte
-9

Grandes empresas escrevem tudo sozinhas.

Existem várias vantagens em escrever você mesmo:

  1. Você tem a garantia de possuir o software por conta própria
  2. Você pode calcular corretamente os valores de trabalho que entraram para criá-lo
  3. Repetir seus passos torna-se possível mesmo que da próxima vez as bibliotecas não estejam disponíveis
  4. Reduz seu inchaço de requisitos
  5. Você não está repetindo o que outras pessoas já fizeram
  6. Você tem a garantia de ter pessoas suficientes para mantê-lo
  7. Você pode modificar todas as partes do software
  8. O tamanho do software é limitado pela quantidade de recursos que você tem

Veja como cada um dos pontos se quebra se você usa a biblioteca de outras pessoas:

  1. Alguém possui a lib
  2. Você não sabe quanto esforço foi feito para criar o lib
  3. Sua próxima versão do produto é impossível de criar em uma nova plataforma, já que as mesmas bibliotecas não estão mais disponíveis
  4. A capacidade de implementar o requisito depende de a biblioteca ter implementado anos atrás
  5. Alguém também usa a mesma biblioteca, obtendo as mesmas limitações e recursos
  6. Como você não criou as bibliotecas, você não tem pessoas suficientes para manter todo o software em seu produto
  7. Libs são binários, não modificáveis. Mesmo que a fonte esteja disponível, você não tem pessoas suficientes para modificar essa grande quantidade de código.
  8. Manter o código que você criou + as libs é um esforço maior do que você originalmente estimou
por 20.04.2013 / 19:15
fonte