Domanda

Una delle aziende ha richiesto al suo potenziale dipendente di fornire il numero di righe di codice scritte nel tempo di vita in un determinato linguaggio di programmazione come Java o C #. Da allora, la maggior parte di noi ha una serie di anni di esperienza in diversi progetti in più lingue e difficilmente ne teniamo traccia, quale sarebbe l'approccio migliore per calcolare queste metriche. Sono sicuro che i membri intelligenti di stackoverlow.com avranno alcune idee.

Questa è una società molto rispettata nel suo dominio e sono sicuro che abbiano delle ottime ragioni per porre questa domanda. Ma ciò che rende anche difficile rispondere è il tipo di codice da considerare. Dovrei includere solo l'algoritmo difficile che ho implementato o qualsiasi codice per cui ho scritto, ad es. un POJO che aveva 300 proprietà e i cui getter / setter sono stati generati usando IDE!

È stato utile?

Soluzione

Questa sembra una di quelle domande come 'Quante palle da ping-pong potresti inserire in un Boeing 747?' In tal caso, l'interrogante vuole vederti dimostrare le tue capacità di problem solving più che sapere quante righe di codice hai effettivamente scritto. Starei attento a non rispondere con alcuna critica alla domanda, e invece cerco onestamente di risolvere il problema; )

Altri suggerimenti

La migliore risposta a tale domanda è una delle seguenti:

  • Perché vuoi saperlo?
  • Quale significato attribuiresti a tale numero?
  • Va bene se mi alzo e me ne vado subito?

Vorrei seriamente mettere in discussione le motivazioni alla base di chiunque abbia posto una simile domanda sia ai dipendenti attuali che a quelli potenziali. È molto probabilmente lo stesso tipo di azienda che inizia a fare revisioni del codice concentrandosi sul numero di righe di codice digitate.

Ora, se sostengono che il numero di righe di codice è una misura dell'esperienza di un programmatore, allora lascerei sicuramente l'intervista a quel punto.

È possibile trovare soluzioni semplici per problemi complessi, e in genere sono meglio di basta inviare abbastanza righe di codice al problema e si risolverà da sé . Dato che il numero di bug ha prodotto una scala lineare e superiore con il numero di affermazioni, direi che l'inverso è probabilmente migliore, combinato con il numero di problemi che hanno affrontato.

Come risposta al test, chiederei questo:

  

Se in un programma sono in grado di risolvere il problema A, B e C in 1000 righe di codice e un altro programmatore risolve gli stessi problemi in 500 righe di codice, quale di noi è il migliore (e la risposta sarebbe: informazioni insufficienti per giudicare)


Ora, se ancora vuoi stimare il numero di righe, inizierei semplicemente a pensare ai progetti scritti dalla persona e confronterò le loro dimensioni con una quantità nota. Ad esempio, ho una libreria di classi che attualmente varia circa 130.000 righe di codice e ho scritto cose simili in Delphi e in altre lingue, oltre ad alcuni progetti applicativi considerevoli, quindi stimerei di avere ben 10 milioni di righe di codice da solo almeno. Il numero è significativo? Non per niente.

Sembra che questo sia il questionario di D E Shaw?

Dai un'occhiata a ohloh . Il sito mostra metriche da progetti open source.

Il sito stima che 107.187 righe di codice corrispondono a uno sforzo di 27 persone (4000 righe di codice all'anno).

Un esempio della stupidità di una tale metrica è che il numero proviene da un progetto con cui ho lavorato in esterno per 2 anni.

Esistono sostanzialmente tre modi per gestire richieste ridicole di metriche insignificanti.

  1. Rifiuta di rispondere, sfidando l'interrogante per le sue ragioni e spiegando perché quelle ragioni sono sciocche.

  2. Trascorrere del tempo a raccogliere tutte le informazioni possibili e a calcolare la risposta al meglio delle tue capacità.

  3. Preparare una risposta plausibile e andare avanti con il minor coinvolgimento emotivo possibile nella stupidità possibile.

Le prime risposte che vedo sembrano prendere la prima riga. Pensa se vuoi ancora il lavoro nonostante la stupidità delle loro richieste. Se la risposta è ancora Sì, evita il numero 1.

Il secondo metodo implicherebbe esaminare i vecchi repository di codice da vecchi progetti.

In questo caso, andrei con la terza via.

Moltiplica il numero di anni in cui hai lavorato su una lingua per 200 giorni lavorativi all'anno, per 20 righe di codice al giorno e usalo.

Se rivendichi più di una lingua all'anno, suddividila tra loro.

Se hai lavorato di più su analisi, progettazione o gestione, abbassa la cifra di tre quarti.

Se hai lavorato in un ambiente di alta cerimonia (difesa, medicina), lascia cadere la figura di un ordine di grandezza.

Se hai lavorato su un ambiente con una cerimonia particolarmente bassa, aumentalo di un ordine di grandezza.

Quindi metti la stupidità dietro di te e vai avanti con la tua vita il più rapidamente possibile

A seconda di cosa fanno con la risposta, non penso che questa sia una cattiva domanda. Ad esempio, se un candidato inserisce JavaScript nel proprio curriculum, voglio sapere quanto JavaScript ha effettivamente scritto. Potrei chiedere, ad esempio, il numero di righe nel più grande progetto JavaScript che hanno scritto. Ma sto solo cercando un senso di scala, non un numero reale. Sono 10, 100, 1000 o 10.000 righe?

Quando chiederò, chiarirò che sto solo cercando un numero grezzo per valutare la dimensione del progetto. Spero che il datore di lavoro nel caso dell'interrogatore sia lo stesso.

È una metrica interessante da chiedere considerando che potresti scrivere molte righe di codice errato invece di scriverne solo alcune intelligenti.

Posso solo supporre che stiano considerando che più linee sono migliori di meno. Sarebbe meglio non pianificare affatto e iniziare a scrivere codice, sarebbe un ottimo modo per scrivere più righe di codice, poiché almeno se lo faccio di solito finisco per scrivere tutto almeno due volte.

Gli smartflow dello stack overflow eviterebbero in genere le organizzazioni che fanno questo tipo di domande. A meno che la risposta corretta sia " huh, wtf ?? "

Perché preoccuparsi di calcolare questa metrica senza una buona ragione? E alcune società casuali che chiedono la metrica davvero non sono una buona ragione.

Se la domanda dell'azienda è in realtà seria e pensi che l'intervista possa portare a qualcosa di interessante, sceglierei un numero casuale per vedere dove questo porta :-)

Ah, mi ricorda quando ho acquisito un framework di test basato su C, che era iniziato come 20K + le righe che ho finito per collassare in 1K LOC considerando invece un sottoprogramma delle 20K righe del codice diarrea originariamente scritto dall'autore originale. Sfortunatamente, Sono stato sculacciato più duramente per eventuali errori nel codice man mano che il mio KLOC è stato scritto negativo ... Penserei a lungo e intensamente a ridurre la base di codice in un'organizzazione basata sulle metriche ....

Se dovessi essere veramente onesto, diresti che non lo sai perché non l'hai mai visto come una metrica valida. Se l'intervistatore è una persona ragionevole / razionale, questa è la risposta che stanno cercando.

L'unica altra opzione per dire che non sai è di indovinare, e che in realtà non sta dimostrando abilità di problem solving.

Anche se sono d'accordo con la maggioranza nel dire che questa non è una metrica davvero buona, se è una società seria, come dici tu, potrebbero avere i loro motivi per chiederlo .. Questo è quello che probabilmente farei:

Prendi uno dei tuoi progetti esistenti, ottieni il numero di righe e dividilo per il tempo impiegato per codificarlo. Questo ti darà una sorta di metrica di linee all'ora. Quindi, prova a stimare quante volte hai lavorato con quella lingua specifica e moltiplicalo per la metrica già calcolata. Onestamente non penso sia un ottimo modo .. ma onestamente, questa non è una grande domanda né .. Direi anche alla società la strategia che ho usato per elaborare questo numero .. forse, FORSE, questo è quello vogliono ... conoscere la tua opinione su questa domanda e come risponderesti? : P

Oppure, vogliono solo sapere se hai delle esperienze ... quindi, indovina un numero impressionante e scrivilo: D

  

" Questa è una società molto rispettata nel suo dominio e sono sicuro che hanno delle ottime ragioni per porre questa domanda "

E sono molto sicuro che non lo facciano, perché " essere rispettato " non significa "fanno tutto bene", perché questo non è certamente giusto, o se lo è, almeno secondo me è stupido.

Cosa conta come " Righe di codice " ;? Stimo di aver scritto circa 250.000 righe di codice C #, probabilmente molto di più. Il problema? Il 95% era un codice usa e getta e non tutto era per l'apprendimento. Mi ritrovo ancora a scrivere un piccolo programma a 3 righe per la decima volta semplicemente perché è più facile scrivere di nuovo quelle tre righe (e modificare un parametro) piuttosto che cercare quelle esistenti.

Inoltre, le righe di codice significano niente . Quindi ho due ragazzi, uno ha scritto il 20% in più di righe rispetto all'altro, ma quel 20% in più erano righe complicate non necessarie, "loop-Unrolling". e altrimenti cose inutili che avrebbero potuto essere rifattorizzate.

Mi dispiace, azienda rispettata o meno: chiedere righe di codice è un segno sicuro che non hanno idea di misurare l'efficienza dei loro programmatori, il che significa che devono fare affidamento su tecniche dell'età della pietra come la misurazione del LoC che sono circa accurati come i calendari nell'età della pietra. Ciò significa che è probabilmente un buon posto in cui lavorare se ti piace rilassarti e gonfiare i tuoi numeri ogni tanto.

Okay, era più una risposta piuttosto che una risposta, ma non vedo assolutamente nessuna buona ragione per questo numero.

E nessuno ha ancora citato la storia di Bill Atkinson -2000 righe ...

Nel mio venerdì pomeriggio (beh, circa un venerdì al mese) esercizi di auto-sviluppo al lavoro nell'ultimo anno, test, prototipi e infrastrutture inclusi, probabilmente ho scritto circa 5 kloc. Tuttavia un progetto ha preso un'applicazione C / C ++ 25kloc esistente e l'ha reimplementata come 1100 linee di Erlang, e un altro ha preso 15kloc di una libreria C esistente e l'ha trasformata in 1kloc di C ++, quindi la rete è gravemente negativa. E l'unica ragione per cui ho quei numeri è che stavo cercando di vedere quanto negativo.

So che questo è un vecchio post, ma potrebbe essere utile a qualcuno comunque ...

Di recente sono passato da un'azienda in cui ho lavorato per circa 9,5 anni come sviluppatore Java. Tutto il nostro codice era in CVS, poi in SVN, con Atlassian Fisheye che ne forniva una visione.

Quando me ne sono andato, Fisheye riportava il mio LOC personale totale come + - 250.000. Ecco la descrizione Fisheye della sua metrica LOC , compresa la discussione su come viene calcolata la LOC personale di ciascun utente SVN. Nota i problemi con la ramificazione e l'unione in SVN e che LOC dovrebbe di solito basarsi solo su TRUNK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top