Effetto di ReSharper sulle interviste di codifica [chiuso]


18

Chiunque abbia usato R # o CodeRush sa quanto velocemente puoi mettere insieme semplici costrutti (e refactoring complessi) con una semplice scorciatoia da tastiera. Tuttavia, questi plugin di produttività causano una falsa valutazione delle capacità durante le interviste?

Parte dell'essere uno scrittore di codice produttivo (e fare una buona prima impressione in un'intervista) è scrivere un buon codice - velocemente.

Se avessi due candidati:

  1. Non utilizza plugin. Pensa al problema, si siede a un IDE azionario al PC dell'intervista che assomiglia esattamente al suo e scrive il codice in un minuto o due, come al solito. Fatto. Passaggio.

  2. Utilizza plugin. Pensa al problema, si siede a un IDE azionario sul PC dell'intervista e si rende conto che "fe + tab" non scrive più automaticamente un ciclo foreach e tutte le scorciatoie sono sparite. Quindi si borbotta intorno alla tastiera colpendo i suoi normali tasti di scelta rapida e aprendo finestre strane e agitandosi. Gli ci vogliono 3 minuti per scrivere ciò che normalmente impiegherebbe 30 secondi. Fatto. Sembrava che a volte non sapessero aggirare l'IDE. Deve essere nuovo a questo IDE e quindi non avere molta esperienza con esso o forse la lingua. Passa, ma un segno "meh" accanto al loro nome.

Nella tua esperienza, come gestisci i plugin durante le interviste come intervistatore o intervistato? Quali sono le migliori pratiche per ottenere ciò che il candidato conosce veramente? Possono esserci candidati che non comprendono il codice e usano R # come stampella. Possono esserci anche candidati che conoscono il codice in entrata e in uscita e utilizzano R # perché è semplicemente più veloce dei modelli VS o Eclipse integrati. È meglio non usare affatto un IDE? Lascia che portino il proprio PC? Altri?


4
Sto votando per chiudere questa domanda come fuori tema perché questa domanda riguarda come intervistare bene , che è fuori tema per centro assistenza . Tuttavia, questa domanda ha un componente sull'argomento, ovvero "in che modo strumenti come ReSharper influiscono sulla capacità di codifica senza tale strumento "), ma modificarla per essere tale domanda è troppo aggressiva rispetto a una modifica e invaliderebbe le risposte esistenti.
durron597,

Se dovessi scrivere un codice demo in un IDE standard, sarebbe pieno di :wsegni casuali ovunque.
LindaJeanne,

Risposte:


31

Sono stato candidato 2 in un'intervista di recente . Mi è stata data un'installazione vaniglia dell'IDE su un PC con una tastiera non standard e un framework di test non familiare, e mi è stato chiesto di scrivere una semplice app Fizz-Buzz con unit test. L'ho soffiato. Devo essere sembrato un noob completo, inciampando nel buio cercando di hackerare il codice. Inutile dire che non mi è stata offerta la posizione.

Quello che ho imparato è che faccio molto affidamento sui miei plugin. Non si limitano a digitare il codice più velocemente, ma in realtà modellano il modo in cui penso al codice e il modo in cui procedo alla programmazione. Ad esempio, pensavo molto attentamente ai nomi delle variabili perché potrebbero essere una sofferenza cambiare dopo il fatto. Ora, al contrario, faccio solo un'ipotesi a metà su come userò la variabile, scapperò un po 'di codice, lascerò che la variabile mi dica a cosa serve e quindi premo Refactor-> Rinomina per chiamarlo in modo più appropriato .

Questo mi rende il candidato meno capace? In un certo senso, penso che lo faccia . Qualcuno che può scrivere codice in Blocco note e farlo compilare ed eseguire correttamente ha alcuni vantaggi rispetto a qualcuno come me che ha bisogno di tutta la bontà dell'IDE che può ottenere. Da quel punto di vista, capisco perfettamente il motivo per cui qualsiasi azienda dovrebbe scegliere di non assumere un toolhead come me.

D'altra parte , sono ancora uno sviluppatore senior di talento e capace. Ho imparato cosa funziona per me e pratico il tipo di pigrizia che mi rende produttivo, dati i miei punti deboli e i miei limiti. In breve, sono il tipo di programmatore che potrebbe davvero giovare a un'azienda come quella che mi ha allontanato .

È interessante notare che ho avuto un'altra intervista un paio di settimane fa. A seguito della mia precedente esperienza, ho sollevato la questione di chiedere ulteriori strumenti o budget per acquistarli. Scoprire che non c'erano né mi ha dato un motivo in più per rifiutare l'offerta (piuttosto generosa) che mi hanno fatto .

Quindi, per parafrasare Groucho, " Non vorrei unirmi a nessuna società che avrebbe qualcuno come me come dipendente " .

A meno che non mi facciano usare ReSharper, comunque.


2
Quando intervisto le persone, le faccio scrivere codice su un foglio bianco. Non deve essere carino e non deve essere compilato, ma deve assomigliare alla lingua di destinazione. Non sto cercando un prodotto funzionante; quello che sto cercando è uno schema di pensiero; l'intervistato può pensare ai problemi e risolverli usando il codice?
Robert Harvey,

A proposito, deve essere bello poter rifiutare offerte interessanti nell'attuale clima economico.
Robert Harvey,

12

Lascia che (i candidati, cioè ) usino quello che vogliono. Il vecchio, costruisci un Wal-Mart con un coltellino svizzero solo per dimostrare che puoi avvicinarti è così vecchio. Utilizzeranno tutto ciò che serve nel loro lavoro quotidiano (beh, lo spero con certezza), quindi lasciali usare quello che vogliono in un'intervista. Il risultato finale è tutto ciò che conta. E assumerò molto più volentieri un candidato che sa quali strumenti sono disponibili sul mercato e come usarli in modo efficiente, quindi quello che lo fa tutto manualmente. Questa è un'industria killer.

ps Ad esempio, pensa a Vim (o Emacs): ti piacerebbe utilizzarlo senza impostazioni personalizzate, plugin, ecc.?


1 Del resto, se il vostro compito di codifica in realtà è solo controllando che sanno di foreach mi domanda quanto sia utile davvero (anche qualcosa di simile FizzBuzz sta guardando molto di più di quello). Stavo chattando con qualcuno della comunità Java e mi ha detto che potevi dire chi erano i bravi programmatori .net mentre usavano Resharper. Non sono sicuro che sia preciso al 100%, ma ottieni il punto ...
FinnNk,

1
Ottenere un candidato a scrivere il codice su una lavagna durante il colloquio è MOLTO rivelatore della sua capacità di programmare. Come intervistatore stai facendo una richiesta di giudizio su quanto supporto questa persona ha bisogno per svolgere il ruolo.
Michael Shaw,

8

Direi che strumenti come ReSharper ti rendono davvero un candidato migliore su tutti.

Per prima cosa, qualcosa come ReSharper ti insegnerà i costrutti del linguaggio che potresti non conoscere, nonché i modi migliori per organizzare il codice in modo da pensare a un problema o strutturarlo per la leggibilità. ReSharper, in un certo senso, ti tiene sveglio con le migliori pratiche per il codice di imbragatura, piuttosto che lasciarti ricadere in cattive o obsolete abitudini, o peggio nel cattivo tipo di pigrizia.

Un buon programmatore deve comprendere i costrutti di base, ma non digitarli manualmente. Il buon tipo di pigro lascia che gli strumenti facciano il brontolone, e invece il tempo extra risparmiato viene speso pensando al problema. Questo rende uno sviluppatore migliore nel complesso.

Completerei la linea di ragionamento affermando che se il processo di intervista favorisce bastoni e coltelli di pietra, è fondamentalmente rotto.


1

Questo è uno dei motivi per cui chiedo alle persone di scrivere un codice alla lavagna, non nell'IDE. Livella il campo di gioco. E la gente dice "oh caro, il resharper gestisce questo per me di solito". Diamine, i frammenti integrati gestiscono loop e simili, che la lavagna non può darti. In quel caso dire qualcosa come "Spero che la punteggiatura sia proprio lì; sono un ragazzo R #" è probabilmente tutto ciò che serve per impedirmi di trattenere alcuni problemi di sintassi contro di te.

Ho bisogno di una certa capacità di scrivere un codice comprensibile sulla lavagna in modo da poter avere una riunione in cui scopriamo come faremo le cose. E, naturalmente, voglio vedere se hai mai davvero scritto codice nella tua vita o no. Le tue interviste possono variare.


Capisco perfettamente il motivo per cui vuoi fare l'intera cosa della Lavagna - immagino che eliminerà molti candidati poveri - ma eliminerà anche un grande talento. Ovviamente, questo non deve essere un problema se hai un pool di buone lavagne bianche.
Kramii Ripristina Monica il

2
@Kramii: Sai, i "grandi" talenti dovrebbero essere in grado di spiegare se stessi e il loro codice con una lavagna. Quindi non riesco davvero a capire perché li eliminerebbe.
Spoike,

1

Grande domanda A proposito: ho spesso riflettuto su questo.

La padronanza degli strumenti è un'abilità fondamentale per essere un buon sviluppatore. Ho sempre sentito suonare un campanello d'allarme quando uno sviluppatore afferma di preferire la codifica nel blocco note all'utilizzo di un IDE. Suggerisce che è più interessato al processo rispetto al prodotto.

È come preferire coltivare il terreno con una zappa contro un trattore: va bene se sei un giardiniere per hobby, ma insopportabile come un agricoltore industriale in un'economia competitiva.

Tuttavia, diventiamo dipendenti dai nostri strumenti. Le persone sembrano impazzire su come potremmo affrontare l'ipotetica situazione in cui i nostri strumenti sono stati improvvisamente portati via. C'era la stessa argomentazione su come consentire ai calcolatori di partecipare agli esami.

La realtà è che gli strumenti diventano sempre meglio e sempre più economici ogni anno e non c'è motivo per cui dovresti mai supporre che sarai senza di loro. E gli strumenti sono grandiosi nel fare cose ripetitive con un alto grado di qualità, il che significa che possiamo concentrare tutta la forza dei nostri incredibili intelletti homo-sapien sulle parti difficili (e interessanti).

ReSharper è una fantastica aggiunta a Visual Studio. La mia attuale azienda non aveva ReSharper quando sono stato intervistato, ma ero così evangelico al riguardo nella mia intervista che mi hanno comprato una copia quando ho accettato la posizione, nonché una per lo sviluppatore che mi ha intervistato. Ora viene implementato in tutta l'azienda. I buoni strumenti si ripagano da soli in pochissimo tempo.

Quindi, per rispondere alla domanda: la tua dipendenza dagli strumenti può causare una falsa valutazione delle tue abilità in un'intervista, ma forniranno sempre una valutazione corretta delle abilità dell'intervistatore. Se un'azienda non riconosce il valore del supporto degli strumenti nella tua intervista, devi mostrare loro la luce. E se ancora non lo vedranno, sarei molto preoccupato di accettare una posizione lì.


Sono molto chiaro nelle interviste sugli strumenti con cui sono abituato a lavorare e su cosa mi aspetto dall'azienda. Credi che alcune aziende forniranno ancora un solo monitor per sviluppatore? Non ho problemi a dire a un intervistatore "Sto correndo a metà velocità perché gli strumenti su cui faccio affidamento non sono qui", specialmente quando uso una combinazione di tasti e non funziona. Anche in un IDE nominalmente alla vaniglia personalizzo le cose, perché le mie mani sanno dove sono le cose e non posso essere disturbato dalla riqualificazione. Per una tastiera Dvorak o per scrivere commenti in tedesco o qualsiasi altro handicap vogliano darmi.

@moz - Assolutamente d'accordo che dovresti dire al datore di lavoro che non trarranno il massimo da te senza investire in strumenti. Farei un ulteriore passo avanti e li indurrei a impegnarsi per ottenere gli strumenti giusti. Probabilmente non sarà molto divertente lavorare per loro se non lo faranno. Ogni volta che refactoring manualmente qualcosa, li maledirai per non aver valutato abbastanza il tuo tempo. Lavorare in un posto mediocre può influire anche sul tuo futuro potere di guadagno. Può diventare interessante se si esegue una programmazione in coppia se i due sviluppatori hanno configurazioni di collegamento diverse. Cerco di mantenere il più possibile la configurazione standard.
Sheikhjabootie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.