Pergunta

Uma das empresas requeridas a partir do seu empregado em perspectiva para dar o número de linhas de código escritas no tempo de vida de uma determinada linguagem de programação como Java ou C #. Uma vez que, a maioria de nós têm um número de anos de experiência em diferentes projetos em vários idiomas e que quase não manter registro deste, qual seria a melhor abordagem para calcular essa métrica. Estou certo de que os membros inteligentes de stackoverlow.com terá algumas idéias.

Esta é uma empresa muito respeitada no seu domínio e estou certo de que eles têm alguma boa razão para fazer esta pergunta. Mas o que torna também difícil de resposta é o tipo de código a considerar. Devo incluir apenas o algoritmo difícil que eu implementadas ou qualquer código que escrevi para por exemplo um POJO que tinha 300 propriedades e cujos getters / setters foram gerados usando IDEs!

Foi útil?

Solução

Esta parece ser uma daquelas perguntas como "Quantas bolas de pingue-pongue que você poderia caber em um Boeing 747? Nesse caso, o entrevistador quer ver você demonstrar suas habilidades de resolução de problemas mais do que saber quantas linhas de código que você realmente escrito. Gostaria de ter cuidado para não responder com qualquer crítica da questão e, em vez honestamente tentar resolver o problema; )

Outras dicas

A melhor resposta a tal pergunta a é uma das seguintes opções:

  • Por que você quer saber?
  • Que significado que você atribui a esse número um?
  • Tudo bem se eu apenas levantar e sair apenas sobre agora?

Gostaria de questionar seriamente os motivos por trás ninguém perguntar essa pergunta a qualquer um dos funcionários atuais ou potenciais. É mais provável que o mesmo tipo de empresa que iria começar a fazer revisões de código com foco no número de linhas de código que você digita.

Agora, se eles argumentam que o número de linhas de código é uma medida da experiência de um programador, então eu definitivamente deixar a entrevista naquele ponto.

Soluções simples podem ser encontradas para problemas complexos, e são tipicamente melhor do que apenas jogar linhas suficientes de código para o problema e ele vai se resolver . Como o número de erros produzidos escalas linearmente e acima com o número de declarações, eu diria que o inverso é provavelmente melhor, combinado com o número de problemas que já abordados.

Como um teste de resposta, gostaria de perguntar o seguinte:

Se em um programa que eu sou capaz de resolver o problema de A, B e C em 1000 linhas de código, e outro programador resolve os mesmos problemas em 500 linhas de código, qual de nós é o melhor (e a resposta seria: não há informação suficiente para julgar)


Agora, se você ainda querer estimar o número de linhas, eu simplesmente iria começar a pensar sobre os projetos a pessoa tem escrito, e comparar seu tamanho com uma quantidade conhecida. Por exemplo, eu tenho uma biblioteca de classe que atualmente varia cerca de 130K linhas de código, e eu escrevi coisas semelhantes em Delphi e outras linguagens, além de alguns projetos de aplicação consideráveis, então eu estimaria que eu tenho um bom 10 milhões de linhas de código no meu próprio, pelo menos. É o número significativo? Nem um pouco.

Parece que este é o questionário de D E Shaw?

Dê uma olhada Ohloh . O site mostra métricas de projetos de código aberto.

O site estima que 107,187 linhas de código corresponde a um esforço de 27 de Pessoa Anos (4000 linhas de código por ano).

Um exemplo da tolice de tal uma métrica é que o número é de um projeto que eu estive a brincar com o trabalho fora durante 2 anos.

Existem basicamente três formas de lidar com pedidos ridículos para métricas sem sentido.

  1. se recusar a responder, desafiando o questionador para as suas razões e explicar por que essas razões são tolas.

  2. tempo de reunir todas as informações que puder, e calcular a resposta para o melhor de sua capacidade de gasto.

  3. Fazendo-se uma resposta plausível, e seguir em frente com tão pouco envolvimento emocional possível na estupidez possível.

As primeiras respostas que vejo parecem estar a tomar a primeira linha. Pense se você ainda quer o trabalho, apesar da estupidez de suas demandas. Se a resposta é ainda sim, evitar o número 1.

O segundo método envolveria olhando para os seus repositórios de código antigos de projetos antigos.

Neste caso, eu iria com a terceira via.

Multiplicar o número de anos que você trabalhou em uma linguagem por 200 dias de trabalho por ano, por 20 linhas de código por dia, e uso isso.

Se você está reivindicando mais de um idioma por ano, repartir-lo entre eles.

Se você tem trabalhado mais na análise, design ou gestão, gota a figura em três quartos.

Se você estiver trabalhando em um ambiente de alta cerimônia (defesa, medicina), gota a figura por uma ordem de magnitude.

Se você estiver trabalhando em um ambiente com particularmente baixo cerimônia, aumentá-lo por uma ordem de magnitude.

Em seguida, coloque a estupidez atrás de você e continuar com sua vida tão rapidamente quanto possível

Dependendo do que eles fazem com a resposta, eu não acho que isso é uma má pergunta. Por exemplo, se um candidato coloca JavaScript em seu currículo, eu quero saber quanto JavaScript que realmente escrito. I pode pedir, por exemplo, para o número de linhas no maior projeto de JavaScript que você escreveu. Mas eu só estou procurando um senso de escala, não um número real. É 10, 100, 1000 ou 10.000 linhas?

Quando eu peço, eu vou fazer muito claro que eu só estou procurando um número bruto para medir o tamanho do projeto. Espero que o empregador, no caso da pergunta é, após o mesmo.

É uma métrica interessante para pedir considerando que você poderia escrever muitas muitas linhas de código ruim em vez de escrever apenas alguns espertos.

Só posso supor que eles estão considerando mais linhas para ser melhor do que menos. Seria melhor não plano em tudo e só começar a escrever código, isso seria uma ótima maneira de escrever mais linhas de código, uma vez que pelo menos se eu fizer isso eu geralmente acabam escrevendo tudo, pelo menos duas vezes.

Smart de overflowers pilha, em geral, evitar a organização que pedir esse tipo de pergunta. A menos que a resposta correta é "huh, wtf ??"

Por que se preocupar calcular essa métrica, sem uma boa razão? E alguns empresa aleatória pedindo a métrica realmente não é uma boa razão.

Se a pergunta da empresa é realmente sério, e você acha que a entrevista pode levar a algo interessante, então eu iria escolher apenas um número aleatório a fim de ver onde isso vai dar: -)

Ha, me lembra quando eu assumi uma estrutura de teste C base, que começou como 20K + linhas que acabei entrando em colapso em 1K LOC por factoring para baixo para uma sub-rotina em vez dos 20K linhas de código diarrea originalmente escrito pelo autor original. Infelizmente, Eu fui espancado mais difícil por quaisquer erros no código como o meu KLOC de escrita realmente fui negativo ... Eu iria pensar longo e duro sobre encolher a base de código em uma métrica impulsionado organização ....

Se você tivesse que ser realmente honesto, então você diria que você não sabe porque você nunca a viu como uma métrica válida. Se o entrevistador é uma pessoa razoável / racional, então esta é a resposta que eles estão procurando.

A única outra opção para dizer que você não sabe é que adivinhar, e esse problema não é realmente demonstrando habilidades para resolver.

Mesmo se eu concordar com a maioria em dizer que este não é realmente uma boa métrica, se é um compmany sério, como você diz, eles podem ter as suas razões para fazer esta .. Isto é o que eu provavelmente faria:

Tome um de seu projeto existente, obter o número de linhas e dividi-lo pelo tempo que você levou para o código-lo. Isto lhe dará uma espécie de linhas por hora métrica. Em seguida, tente estimar quanto tempo você trabalhou com que a linguagem específica e multiplicá-lo com o seu já calculado métrica. Eu honestamente não acho que é uma ótima maneira .. mas honesto, isso não é uma grande questão nem .. Também gostaria de dizer a empresa a estratégia que eu usei para chegar a este número .. talvez, talvez, isso é o que eles querem .. para saber sua opinião sobre esta questão e como você respondeu? : P

Ou, eles só querem saber se você tem algumas experiências .. por isso, acho que um número impressionante e anotá-la: D

"Esta é uma empresa muito respeitada no seu domínio e estou certo que eles têm alguma boa razão para fazer esta pergunta"

E eu sou muito certo que não, porque "ser respeitado" não significa "que fazem tudo certo", porque este não é certamente certo, ou se é, então é pelo menos mudo na minha opinião.

O que conta como "linhas de código"? Eu estimo que tenho escrito por volta de 250.000 linhas de código C #, possivelmente muito mais. O problema? 95% era descartável código, e não estava tudo para aprender. Eu ainda me vejo escrevendo um pequeno programa 3-line para a décima vez simplesmente porque é mais fácil de escrever essas três linhas novamente (e alterar um parâmetro) que busca ir para os já existentes.

Além disso, as linhas de meio de código nada . Então, eu tenho dois caras, um tem escrito 20% mais linhas que o outro, mas aqueles 20% a mais eram complicadas linhas desnecessárias, "loop unrolling" e coisas de outra forma inútil que poderia ter sido reformulado para fora.

Então, desculpe, empresa respeitada ou não: Pedir linhas de código é um sinal claro de que eles não têm idéia sobre como medir a eficiência de seus programadores, o que significa que eles têm que confiar em técnicas da idade da pedra, como a medição da Linha de Controlo que são quase tão precisos como calendários em pedra-idade. Que significa que é, possivelmente, um bom lugar para trabalhar em se você gosta de afrouxar e inflar seus números de cada vez em quando.

Ok, isso foi mais um discurso de uma resposta, mas eu realmente vejo absolutamente nenhuma boa razão para este número qualquer.

E ninguém ainda citou o Bill Atkinson -2000 linhas história ...

Na minha tarde sexta-feira (bem, cerca de uma sexta-feira por mês) exercícios de auto-desenvolvimento no trabalho em relação ao ano passado, testes, protótipos e infra-estrutura incluídos, eu provavelmente escrito cerca de 5 kloc. No entanto um projecto demorou uma aplicação 25kloc C / C ++ existente e reimplemented-lo como 1100 linhas de Erlang, e outro levou 15kloc de uma biblioteca C existente e transformou em 1kloc de C ++, de modo que o líquido é severamente negativo. E a única razão que eu tenho esses números era que eu estava olhando para ver como negativo.

Eu sei que este é um post antigo, mas isso pode ser útil para alguém de qualquer maneira ...

Recentemente, transferiu-se de uma empresa que eu trabalhava em por cerca de 9,5 anos como um desenvolvedor Java. Todos os nosso código estava em CVS, em seguida, SVN, com Atlassian Fisheye fornecendo uma visão para ele.

Quando saí, Fisheye estava relatando a minha, LOC total de pessoal como + - 250.000. Aqui está a descrição Fisheye de seu LOC métrica, incluindo a discussão sobre como LOC pessoal de cada usuário SVN é calculado. Observe os problemas com ramificação e mesclagem no SVN, e que LOC deve geralmente só basear-tronco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top