Domanda

In una precedente intervista mi è stata posta la domanda: "Da 0 a 10, come valuti te stesso come programmatore?"

Ho trovato una domanda molto difficile a cui rispondere in quanto non sono a conoscenza di una metrica per misurare quanto sono buone le mie capacità. Inoltre, sapere quanto bene ti comporti sarebbe utile per capire cosa devi migliorare per essere un programmatore migliore.

Quindi c'è un modo per sapere quanto bene fai il tuo lavoro?

È stato utile?

Soluzione

Chiama il tuo precedente datore di lavoro e parla con chiunque abbia ereditato tutto il tuo vecchio codice. Ti diranno quanto sei bravo come programmatore. ;)

Altri suggerimenti

Questa è una domanda difficile. Da un punto di vista puramente introspettivo, penso che una delle migliori metriche di "buona programmazione" è questo: quanto ti piace il tuo mestiere? Ho incontrato molti sviluppatori, alcuni dei quali molto bravi, ma non ho mai conosciuto nessuno che era uno sviluppatore 9-5 e ha gestito qualcosa di meglio dei risultati mediocri.

Certo, guardarsi dentro non è il modo migliore per misurare la competenza. Dovrei pensare che i tuoi colleghi programmatori sarebbero in grado di darti una risposta abbastanza solida. C'è un galateo sociale coinvolto nel formulare una domanda del genere, ma il potenziale è ancora lì. Nella mia esperienza, quelli con cui lavorerai avranno la migliore comprensione di come stai andando bene, anche solo perché sono quelli che devono ripulire il casino se commetti un errore. : -)

Tidbit finale: la programmazione è problem solving, pura e semplice. Pensa a come affronti i problemi difficili che ti vengono incontro. Innanzitutto, come reagisci emotivamente a una sfida difficile? E in secondo luogo, come sarà il tuo codice? Ti fai strada alla cieca attraverso la giungla fino ad arrivare a qualche tipo di risultato, o il tuo approccio è metodico, ben misurato e (soprattutto) fortemente studiato? I programmatori davvero bravi non sono quelli che sanno tutto o che possono implementare l'algoritmo di Dijkstra in otto lingue fredde, sono quelli che passano ore a riversarsi su libri di testo e oscuri blog per trovare quella minuscola pepita di un'idea che accade proprio così essere cruciali per il problema in questione. Se hai la pazienza e la passione per affrontare una sfida profonda, così come l'umiltà di cercare idee per gli altri, allora sei sulla buona strada per quel "10".

10 - Non sai di non sapere davvero nulla.

9 - Ti stai solo vantando e probabilmente non sei bravo come pensi di essere. Anche se sei davvero così bravo, ti mancano le capacità politiche per vedere cosa scegliere un "9" dice di te. Quello, o sei piuttosto conosciuto / adorato nel settore (cioè hai scritto un libro una volta e ha un soprannome come "Il libro ______" o un acronimo che la maggior parte degli sviluppatori riconoscerebbe all'istante), e non ha paura di getta il tuo nome in giro.

8 - Sei dannatamente bravo e lo sai, ma sei abbastanza intelligente da capire lo stigma della raccolta di 9 o 10. Sarà meglio che tu sia in grado di eseguirne il backup.

7 - Sei molto bravo, ma sai che hai molto da imparare.

6 - Sei competente e hai molto da imparare, ma non sei molto sicuro delle tue capacità. Sei sicuro di non essere un 7?

5 - Dev decente junior. Sei appena uscito da scuola e abbastanza intelligente da capire che non sai davvero nulla della programmazione nel mondo reale, ma sai come hackerare insieme il codice.

4 - Mediocre junior dev. Sei appena uscito dalla scuola, ma le tue abilità di programmazione di base lasciano a desiderare. Hai avuto difficoltà a superare la maggior parte delle lezioni di programmazione, ma per qualche motivo hai deciso di voler continuare una carriera nello sviluppo di software. Inoltre non credi davvero in te stesso, quindi perché un intervistatore dovrebbe?

3 o inferiore - Se hai così poca fiducia nelle tue capacità di programmazione, perché ti stai candidando per programmare lavori?

Quindi il " corretto " la risposta è probabilmente 5-7, a seconda del tipo di lavoro che stai intervistando. Un'8 ha abbastanza esperienza da non porre questa domanda.

Questa domanda dell'intervista non riguarda in realtà quanto sei bravo come sviluppatore. Si tratta di quanta consapevolezza di te stesso hai e di quanto giustifichi (per l'intervistatore) qualunque cifra tu abbia presentato.

Il modo giusto di rispondere a questa domanda durante un'intervista (al contrario di una risposta filosofica) è quello di scegliere le tue aree più forti e produrre alcune buone prove per dire che sei tra i primi X% di sviluppatori in quelle aree specifiche.

Ad esempio, potresti dire che nella creazione di software affidabile sei tra le migliori Y% perché è una delle tue specialità. Quindi potresti dare alcuni esempi. In alternativa, potresti dire che un modo ragionevole di giudicare le capacità di sviluppo è quanti soldi si guadagna.

Quello che non dovresti fare è prendere la domanda alla lettera. Normalmente non è quello che vuole l'intervistatore.

Come qualcuno che intervista potenziali sviluppatori, direi che tra 6-8 sarebbe la risposta più sicura a quella domanda. Immagino che la risposta media sia intorno a 7. Penso che sia davvero più per eliminare l'incompetente (0-5) o l'ignorante (9-10). Se decidi di rispondere a 9+, preparati a dimostrarlo.

Se stai davvero cercando di rispondere seriamente alla domanda da solo, direi Matrice delle competenze del programmatore è un ottimo punto di partenza per le aree che tale valutazione dovrebbe comprendere.

Conoscevo qualcuno che ha usato quella domanda per un'intervista per anni. Ha detto che i migliori programmatori tendevano a valutarsi intorno a un 7. In particolare le persone che si sono classificate come 10 erano di solito così sicure delle proprie capacità perché non avevano mai incontrato un programmatore davvero bravo. Ma non avendone mai incontrato uno, da chi avrebbero mai imparato qualche vera abilità? Ci sono, ovviamente, eccezioni. Ma se sei sintonizzato sulla community, probabilmente saprai chi sono le eccezioni.

Questo fenomeno, per inciso, non si limita alla programmazione. L'ho trovato vero in una serie di cose. Le persone che si auto-valutano in 10 su 10 di solito non sono molto buone. Le persone che sono molto brave in X sono brave perché hanno trovato altre persone che sono brave in X, e quindi si confronteranno con un gruppo di pari più difficile e generalmente non si auto-valuteranno a un 10. Ho trovato questo vero per valori di X lontani come giocare a ping-pong o scacchi.

Sembra che ci siano tre livelli di competenza con qualsiasi linguaggio di programmazione:

  1. Correggi gli errori di sintassi immediatamente e senza alcuno sforzo mentale
  2. Puoi leggere il codice di altre persone ed elaborare il loro intento senza "tradurre" il codice in linguaggio naturale (o in qualche altro linguaggio di programmazione)
  3. Una volta compreso un problema, puoi esprimerlo naturalmente nei costrutti forniti dal linguaggio (imperativo, OO, funzionale ...)

Penso che questo ti porti lungo la scala da 1 - > 10

Vale la pena notare che la profonda conoscenza di una lingua può ostacolare l'apprendimento di un'altra. Perché una volta che pensi in termini di lingua 'A' devi ricollegare il tuo cervello per imparare la lingua 'B'. Ovviamente questo vale solo quando si passa a un tipo di programmazione completamente diverso, ad es. C- > C ++, C # - > F #, Java- > Scala ecc ... Quindi non penso che sia possibile essere un "programmatore perfetto" in astratto.

La valutazione del tuo euler del progetto potrebbe dare un'idea (non le tue abilità ma la tua passione di non mollare fino alla fine):

http://projecteuler.net/index.php?section=problems

Un approccio del tutto valido al "come ti giudicheresti da 1 - 10?" è sottolineare il problema inerente all'autovalutazione . Per riassumere i risultati degli esperimenti in quell'affascinante documento:

  1. Quasi tutti si sono classificati al di sopra della media. Almeno il 50% di queste persone era disonesto o illuso.
  2. Le persone che sono in realtà tra i primi 25% si spingono spesso verso il basso tra il 50 e il 75% (ovvero si considerano artificialmente basse).
  3. Le persone che si trovano nella fascia del 50-75% tendevano a valutarsi in modo più accurato.

Potresti ragionevolmente riassumere questo dato che il 50% delle autovalutazioni sono bugie e un altro 25% è sbagliato. Quindi, potresti scegliere di chiedere al drone del colloquio se stanno sprecando il tuo tempo o ti stanno valutando psicologicamente ....

  

Inoltre, sapere quanto bene ti esibirai sarebbe utile per capire cosa devi migliorare per essere un programmatore migliore.

In realtà sapere cosa è necessario migliorare è importante per capire quanto bene si esegue. Basta guardare le persone con cui lavori o interagire e provare a capire quali sono le cose su di loro che ti piacerebbe vederti fare meglio. Ciò ti aiuterà lentamente a diventare un programmatore migliore. Mentre cresci, osserva altri team e codici sorgente (altri progetti open source) per aiutarti a migliorare ulteriormente te stesso.

Penso che un modo migliore per rispondere alla domanda di valutazione te stesso sia dire che mi valuto a x percentile rispetto a tutte le altre persone con cui ho lavorato.

La risposta breve è che ti misuri con i tuoi pari. Cioè, prendi qualcuno che non sa nulla e assegna uno 0, prendi il miglior programmatore che conosci personalmente e assegna un 10 - come ti consideri in confronto a queste due persone? Vicino al meglio? Sarebbe un 8. Medio? sarebbe un 5.

Basta non rispondere a 0 o 10 e cercare di essere obiettivo. Il punto della domanda non è classificarti come programmatore, ma valutare le tue abilità all'autovalutazione. La tua intuizione, cioè.

Esiste solo una metrica per misurare un buon programmatore: LOC / h. Ogni altra metrica è superflua: p

Se le persone si lamentano che non hai nulla sul piatto mentre molti dei tuoi sistemi software sono in produzione, ciò significa semplicemente che i tuoi sistemi erano ben progettati e ben codificati e, a differenza di altre scimmie con codice aziendale, non hai una coda di 6 mesi di ticket di difficoltà che ti tengono occupato.

In questo caso, tamponati sulla schiena. Fai un buon lavoro.

Ricorda, il software non è stato fatto fino a quando non sta facendo soldi.

In qualità di intervistatore, vorrei porre questa domanda per vedere quanto è eloquente un candidato nell'esprimersi.

Inoltre mostra quanto siano autocritici e che tipo di standard fissano per se stessi e i loro colleghi.

non solo ti dice quanto sanno della divina / cattiva programmazione, ma ti dice quanto bene interagirebbero con un cliente per estrarre i requisiti e quanto è buona una partita per il resto della squadra.

Il grado attuale 0-10 è molto meno importante.

Credo che sia importante non sopravvalutare l'importanza della conoscenza della lingua.

Le maggiori competenze che un programmatore può avere sono nelle aree di problem solving e progettazione. Quando inizi a utilizzare effettivamente la lingua che hai scelto, è quasi solo digitando. (accettando che un'area che si spera abbia usato le tue capacità di problem solving e progettazione sia nel layout del tuo codice, per affrontare il problema della leggibilità e della manutenzione)

Quindi la misura di un programmatore è la capacità di riunire una vasta gamma di idee o problemi per risolvere un problema particolare. Più abilità è potenzialmente solo l'aggiunta di aree di conoscenza su cui poter attingere.

Ovviamente nulla di tutto ciò è utile come metrica per determinare la tua abilità, ma altri hanno già detto che è comunque una domanda piuttosto non misurabile. : -)

Se si desidera un byte audio per una risposta:

  

Quando ho iniziato a lavorare professionalmente, probabilmente ero un 2, ora direi che avevo un 7, ma ogni giorno sto lavorando per raggiungere il 10.

Parole al minuto.

Secondo me questa è una domanda difficile (e nel contesto di un'intervista anche una UNFAIR )! Finora ho lavorato per tre diverse aziende. Ogni dove ho incontrato pochissimi programmatori eccellenti (molto meglio di me), molti buoni programmatori e alcuni programmatori che dovrebbero cambiare in meglio. Ma è impossibile metterli in categorie da 0 a 10!

Ci sono molte "dimensioni della bontà" essere un programmatore; il processo di valutazione varierebbe a seconda di quello a cui sei interessato. Ecco alcune idee:

  1. Competenza tecnica: vai a comprare un buon riferimento in stile "libro di cucina" sulla / una lingua che usi principalmente; per ogni compito discusso nel libro, prima scrivi la tua soluzione e poi confrontala con quella (e) offerta (e) nel libro.
  2. Velocità di sviluppo: iscriviti a TopCoder e risolvi i problemi memorizzati o partecipa in tempo reale la concorrenza.
  3. Partecipare a un team di sviluppo: acquista il pranzo per uno dei tuoi collaboratori fidati e chiedigli una valutazione onesta di te stesso come membro del team (ad es. " Quali sono i miei principali punti di forza e di debolezza come un membro del nostro team? Cosa suggeriresti di fare per migliorare? ") [ Se nella tua squadra non c'è nessuno a cui potresti partecipare per una discussione del genere, forse che ti dice qualcosa questo problema. ]
  4. Abilità comunicative: siediti con un collega che non è non uno sviluppatore e chiedi le sue opinioni sul tuo progetto attuale. Fai attenzione; considera quanto bene le sue percezioni corrispondono alle tue.
  5. Stima: ogni mattina prendi nota ( solo per i tuoi occhi ) su ciò che ti aspetti di realizzare quel giorno e quanto tempo ti aspetti che prenda. Alla fine della giornata, confronta quella nota con quello che è successo per vedere quanto eri lontano. Per migliorare in questo settore, pensa alle ragioni delle differenze e a ciò che potresti considerare che avrebbe reso le tue ipotesi più accurate.

Puoi sempre competere con gli altri programmatori e vedere quanto sono buone le tue capacità di pensiero. Puoi provare siti come www.topcoder.com o www.spoj.pl o wwww.codechef.com ti forniscono i ranghi e puoi vedere come stai bene. Tuttavia, questi puramente testano il tuo cervello algoritmico e non il modo in cui codifichi. Se mi facessero questa domanda direi che sono uno studente costante e credo nel fare e correggere errori, non ho paura di autocriticare il mio codice né sono esitante nel chiedere agli altri di sottolineare il mio errore, tu può decidere su quale scala si trova.

Definisci una scala del 100%.

Identificati come se fossi sul segno 100.0.

Identifica le posizioni di altri sviluppatori e personaggi famosi dell'IT.

Calcola quanto stai meglio.

Mi è stata posta questa domanda un paio di volte. Quando sono appena uscito dalla varsità ho detto 7/8. Ora che lavoro da qualche anno, dico 4, anche se penso di essere ora infinitamente migliore.

Non vedo lo 0-10 come un grafico a linee rette. Lo vedo più come un grafico esponenziale. Quindi sicuramente dico ancora 4 su dieci, ma credo di essere migliore del 90% dei programmatori. Ho visto alcuni dei loro lavori e mi spaventa. Ho lavorato su software bancario software SSL ed è spaventoso che funzioni davvero. Quindi ci sono quei 10% di programmatori là fuori che sono meglio di me WAY meglio di me. Non sono sicuro se li raggiungerò mai. Arrivare a 4 secondo me è facile. Molto più difficile arrivare a 5. Da 5 a 6 è incredibilmente spaventoso.

Grandi programmatori che sono degni di un 8, 9 o 10.

L'esperienza. La più ampia gamma di esperienze che hai "meglio è" siete. Sai solo cosa hai vissuto.

Dimensioni e complessità del sistema che hai sviluppato (o lavorato con successo senza corrompere).

Discussione piuttosto preziosa qui. Lo amo. Come intervistato, vorrei rispondere come segue.

Vorrei prima analizzare la domanda.

L'analisi dipende da alcune cose come la lingua, il quadro, la natura del problema, (Sono PHP e Wordpress, quindi la risposta è in questo contesto) 1. patch patch di lavoro, 2. costruendo da zero, 3. utilizzo di api

Il mio approccio comune sarebbe (nella maggior parte dei casi) 1. comprendere l'ambito dato (o già costruito) della funzionalità (rispetto alla dichiarazione del problema corrente) 2. calcolare uno dei modi migliori per risolvere (ci sono sicuramente più di un modo ogni volta & # 8230;) 3. codifica 4. test in scenari in tempo reale (per l'ottimizzazione delle prestazioni) 5. nelle fasi iniziali di qualsiasi programmatore, tutti e quattro i passaggi sono ricorsivi fino ad ottenere la soluzione finale ma man mano che l'esperienza cresce, 1 2 passaggi diventa ricorsivo.

L'attitudine a comprendere la filosofia fondamentale di qualsiasi lingua è imp. Il riposo è un atteggiamento risolutivo.

E in PHP, penso di essere 6.5.

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