Quanto è importante essere sintatticamente corretto durante un'intervista? [chiuso]

40

Quando chiedi a un candidato intervistato di scrivere un programma sulla lavagna, ti aspetti che il candidato scriva un codice sintatticamente corretto?

Avevo due candidati, uno dei quali ha scritto un programma sintatticamente corretto ma la logica non era all'altezza del bersaglio, e l'altro aveva la logica scritta meglio, ma la sintassi era una schifezza.

Preferisco il primo candidato.

    
posta topgun_ivard 09.09.2011 - 17:45
fonte

18 risposte

124

Preferirei la persona che è stata in grado di ragionare sul problema, trovare una buona soluzione e poi spiegarmi la soluzione. Anche se la loro logica non fosse al 100%, se fossero sulla strada giusta e stessero ragionando sul problema, ponendo le domande giuste e seguendo la strada giusta, quello sarebbe il mio vincitore.

Quando si sviluppa codice sul lavoro, si hanno molti strumenti (IDE, compilatori, analisi statiche, test unitari, test di integrazione e procedure di test di accettazione) per trovare errori di sintassi e logica. Se stai scrivendo su una lavagna bianca, non disponi di questi strumenti e sei destinato a commettere errori di sintassi (dimenticando il nome di un metodo, un punto e virgola, una parentesi graffa) e posso perdonarlo.

La mia unica domanda per te: perché stai scrivendo i tuoi candidati sul codice reale sulla lavagna, invece di concentrarti su algoritmi, strategie di progettazione e pensiero logico? I linguaggi di programmazione cambiano, il problem solving no.

    
risposta data 09.12.2017 - 05:38
fonte
46

Preferirei il secondo candidato. La logica può essere difficile ( molto difficile, a volte) per ottenere esattamente . La sintassi può essere molto facile da ottenere quando l'IDE e il compilatore e altri strumenti assortiti aiutano.

Il primo candidato potrebbe non attivare mai un errore del compilatore, ma se il suo codice fallisce spesso in tutti i tipi di casi limite (e meno strani), sapere dove mettere un punto e virgola non vale più di tanto.

    
risposta data 08.09.2011 - 05:42
fonte
19

A seconda degli errori sintattici effettivi, suppongo che preferirei il secondo candidato , perché di solito controllare la sintassi è meglio lasciare alle macchine .

Errori come il punto e virgola mancante, dimenticando le parentesi di chiusura, dimenticando le virgole negli elenchi di argomenti, ecc., anche errori non sintattici come cambiare l'ordine degli argomenti quando si chiama una funzione di solito vengono catturati dall'evidenziatore della sintassi, dal compilatore o quando viene eseguito il codice la prima volta, tutte le cose che si usano di solito, ma non sono disponibili sulla lavagna.

Tuttavia, ci sono alcuni errori, che, anche se tecnicamente solo gli errori di sintassi, mostrano una profonda incomprensione.

Come esempio un po 'artificiale per ottenere il punto: considerare un programmatore Python che prefigura tutte le sue variabili con $ o scrive il ciclo for come for list as item . Tecnicamente, entrambi sono errori di sintassi, ma anche con un'esposizione limitata a Python si dovrebbe sapere come utilizzare i caratteri legali e il ciclo for. Sarebbe una buona ipotesi che il candidato conosca php (o perl?) E cerchi di bluffare sulle sue abilità di pitone

    
risposta data 08.09.2011 - 11:59
fonte
15

Preferirei il secondo candidato, sulla teoria che una lavagna abbia più impatto sulla sintassi che sulla logica, e che gli errori di sintassi siano più facili da correggere: l'IDE o il compilatore di solito possono farlo.

    
risposta data 08.09.2011 - 02:54
fonte
15

Ho scritto SQL e CSS (le lingue più semplici e basilari che conosco) da quasi 13 anni e non riesco a ricordare sempre la sintassi.

Il mio amico (anche uno sviluppatore) lavora per un hedge fund, non può mai ricordare la sintassi per una dichiarazione di inserimento.

Entrambe finiamo su W3CSchools , immagino che dovremmo essere imbarazzati (lui ha una laurea e io ho un PhD).

Tuttavia, per essere onesti, penso che abbiamo le nostre priorità corrette. La sintassi non è un'abilità importante.

    
risposta data 09.09.2011 - 17:48
fonte
13

Poche riflessioni sugli errori di sintassi ... Mi chiedevo se avessi chiarito a entrambi che la sintassi deve essere corretta. A volte le persone danno per scontato che lo pseudo codice sia OK.

Inoltre, se qualcuno reclama anni di esperienza in una lingua e non può correggere la sintassi di base, dovresti dubitare della richiesta.

Gli errori di sintassi possono variare, quindi se qualcuno dimentica un nome di metodo è OK (per me), ma se qualcuno non sa come fare riferimento a un metodo in una classe (notazione dot) o non conosce un pensiero di base come sintassi per una classe semplice, quindi è probabile che questa persona non abbia usato la lingua per molto tempo.

Per il ragazzo che non ha corretto la sintassi, pensi che i suoi errori avrebbero potuto essere facilmente risolti con l'editor di lingua appropriato? se è così, io voto per lui.

Credo che quello che sto pensando qui è che gli errori di sintassi sono accettabili entro i limiti.

    
risposta data 08.09.2011 - 03:04
fonte
5

Un programmatore assistente o uno strumento software potrebbero essere in grado di trovare e correggere la sintassi errata se la logica è buona. Cattiva logica ... qualsiasi soluzione è molto meno sicura. Tutti i programmatori si rovineranno. Vorrei scegliere quello che è più facile da individuare e correggere.

    
risposta data 08.09.2011 - 07:53
fonte
5

A meno che il problema non sia sottile e la maggior parte delle domande di intervista non lo siano, il primo candidato viene squalificato. È molto più facile imparare la sintassi della lingua che la progettazione dell'algoritmo. Assumerò un programmatore con una storia di lavoro di successo in più lingue, anche se non ha esperienza nella mia attuale tecnologia. Questa non è la strategia migliore se ho bisogno di fare qualcosa oggi, ma se avessi bisogno di molte cose nei prossimi dodici mesi, sceglierò sempre abilità generali su esperienze specifiche.

    
risposta data 08.09.2011 - 11:29
fonte
5

Il controllo della sintassi è a cosa serve un compilatore. Un compilatore non può migliorare la tua logica, ma può dirti come correggere la tua sintassi. Ciò significa che qualsiasi lavoro in cui si scrive codice utilizzando un compilatore, la logica è intrinsecamente molto più preziosa di essere sintatticamente corretta.

    
risposta data 08.09.2011 - 12:13
fonte
5

Le interviste sono sempre situazioni imbarazzanti - lo puoi dire perché quando esci, pensi immediatamente a tutte le cose che dovresti hai detto, o le risposte giuste alle domande e alle cose che volevi chiedergli ma ha dimenticato. Detto questo, aspettarsi un codice perfettamente scritto senza errori di sintassi è irrealistico.

Inoltre, le tue aspettative sul codice perfetto (su una lavagna!) potrebbero non corrispondere agli intervistatori - ad esempio, in un'intervista che ho partecipato mi è stato chiesto di scrivere una lezione, cosa che ho fatto, solo che l'intervistatore mi ha tirato su su non inserire un costruttore di copie. Così ne ho scritto uno in, che non ha fatto altro che impostare a = b, ma questo è stato sufficiente per soddisfarlo. Le mie aspettative sul problema non richiedevano un copy ctor, quindi l'ho lasciato estraneo al problema che si stava risolvendo - non mi aspettavo di dover scrivere codice compilante e completamente conforme (ai suoi standard di codifica nascosti), semplicemente mostrare la mia comprensione della soluzione. (anche a questo stesso intervistatore non piaceva la mia soluzione, non era così che l'avrebbe fatto, quindi ovviamente ho sbagliato, sospiro).

Se vuoi un codice funzionante da un intervistato, dagli un compilatore. Quindi non lamentarti quando ti fatturano:)

Quindi vai per la persona che sa cosa sta facendo, non quella che può pappaggere le parole ma non ne capisce il significato.

    
risposta data 08.09.2011 - 12:28
fonte
3

Durante un'intervista, l'intervista è più interessata a vedere il tuo

  1. Approccio al problema
  2. Abilità utilizzata per risolvere il problema e
  3. Tempo impiegato per dare una soluzione adeguata

La sintassi però non è così importante ma occupa un posto di rilievo durante la risoluzione di un problema, con i principali errori nella sintassi non puoi aspettarti di convincere l'intervistatore.

La logica corretta e la sintassi combinate insieme possono fare il trucco per te in un'intervista.

Un errore piccolo o piccolo non ti costerebbe mai molto se la logica fosse sufficiente.

Più di là ci sono IDE disponibili che potrebbero facilmente sintonizzare anche quelli nella giusta forma. Ma per usare quale metodo dove e quando e, soprattutto, WHY , verrebbe solo riconosciuto a un ragazzo con la logica e la conoscenza corrette del soggetto reale.

Spero e ti esorto a fornire qualcosa di più di una lavagna bianca o un blocco note per scrivere il codice.

Vorrei andare con il secondo candidato ..

    
risposta data 08.09.2011 - 08:00
fonte
2

Beh, alcune persone vogliono grandi sviluppatori Java, fantastici sviluppatori C #, grandi sviluppatori C ++, ecc. Se questo è il tuo caso, allora vai con A e più potere per te. Una preoccupazione che avrei sarebbe se non fossero in grado di risolvere il problema come puoi aspettarti che ragionino e risolvano i tuoi problemi di business?

Altre persone vogliono solo grandi sviluppatori che possano lavorare in qualsiasi lingua sia richiesta. Pensano / modellano il problema e poi lo implementano in qualsiasi lingua. Se all'improvviso decidi che .NET fa schifo e passa a Java o viceversa, questi sono gli sviluppatori che non salteranno la nave o si rifiuteranno di imparare. Inoltre, se si ottiene un tipo di pacchetto di automazione / pacchetto di calcolo che ha un linguaggio proprietario e sono necessarie alcune attività automatizzate, questi sono i tipi di sviluppatori che possono farlo. Esempio di vita reale ... Avevo bisogno di capire un linguaggio di scripting proprietario personalizzato per un pacchetto software di mappatura al fine di estrarre i codici postali per le regioni disegnate su misura per un vecchio datore di lavoro. Un altro esempio .... il mio attuale datore di lavoro ha un sistema proprietario di gestione delle proprietà che contiene un linguaggio personalizzato per scrivere rapporti ... In ogni caso, se si ottiene qualcuno che non può pensare logicamente ma ha familiarità con la sintassi del linguaggio X, si essere nei guai quando emergono situazioni come questa dove hai bisogno che qualcuno lavori in una lingua diversa.

Anche sul tabellone c'è maggiore pressione / nervosismo, quindi nessuno è al meglio. Inoltre, dubito strongmente che quando si scrive il codice si ottenga perfettamente ogni volta. Sospetto che tu stia compilando o semplicemente correndo e trovando alcuni errori. Inoltre dipende dalla lingua. C è abbastanza piccolo da poter probabilmente memorizzare la maggior parte delle librerie linguistiche / di base (anche se non lo richiederei). Java / C # hanno librerie così grandi (con cambiamenti così frequenti) che la memorizzazione della libreria è fuori questione.

Anche conoscere più lingue può funzionare contro di te. C # e Java interferiscono l'un l'altro con me. Ma conoscere più lingue può anche ampliare la tua prospettiva, specialmente se conosci un linguaggio di scripting e un linguaggio funzionale oltre a C # / Java.

Tuttavia, se entrambi i candidati risolvono il problema con la logica corretta, il ragazzo con sintassi corretta probabilmente ha un vantaggio. Se uno risolve il problema e uno non lo fa, personalmente andrei con il ragazzo che può risolvere il problema.

Tuttavia, se qualcuno afferma di essere un esperto in Java e non può dichiarare un array di usare un'istruzione if o while, potrebbe mentire. Ma potrei capire se qualcuno è un esperto di Java, ma ultimamente ha fatto un sacco di C # e prova a fare Map o qualcosa del genere .... Anche se si entra in specifiche della libreria, o qualcuno fa myArray.length al posto di myArray .Length o string.length () / string.Length / string.length invece di string.length () ... Minore roba che vorrei perdonare. O se dimenticano l'ordine degli argomenti di qualche chiamata alla biblioteca. O un typo / semi-colon qui o là ....

    
risposta data 08.09.2011 - 06:08
fonte
1

Non ne prenderò nessuno.

Una buona sintassi è inutile se il programmatore non è bravo a risolvere i problemi. E una sintassi scadente per una determinata lingua significa che il candidato non si sente a suo agio con quel particolare linguaggio, forse per mancanza di esperienza diretta.

In ogni caso, la logica è molto più importante della sintassi.

    
risposta data 08.09.2011 - 07:31
fonte
1

Dipende, come sempre. Se gli errori di sintassi sono relativamente minori, li ignorerei. Se sono tremendamente terrificanti, prestai attenzione a loro e cerco di capire perché sono lì.

Penso che gli errori logici siano peggiori degli errori di sintassi, il secondo può quasi sempre essere catturato meccanicamente, il primo meno (dipende, in una certa misura, da quale linguaggio stai scrivendo, alcune classi di errori logici vengono catturate sufficientemente - inferenza di tipo avanzato e controllo).

    
risposta data 08.09.2011 - 13:47
fonte
1

Dipenderà sicuramente dalla posizione per cui si svolge l'intervista, e probabilmente anche dalla lingua.

Lavorare su C ++, avere un ragazzo che balbetta sulla sintassi è spaventoso. Il C ++ è pieno di angoli bui, le trappole si trovano praticamente dappertutto. Una balbuzie sulla sintassi significa una scarsa esposizione al linguaggio, ei principianti del C ++ fanno un sacco di errori (per non dire che altri non lo fanno di volta in volta).

Per rispondere alla tua domanda, quindi:

  • se ho bisogno di riempire una semplice posizione di sviluppatore, prenderei il ragazzo con una buona conoscenza della sintassi del C ++. Non splenderà, ma non dovrebbe provocare troppe catastrofi.
  • se devo riempire una posizione di sviluppatore principale, non prenderei neanche io. Si suppone che uno sviluppatore principale abbia esperienza e logica.

C'è solo un avvertimento: le persone riconoscono la loro mancanza di esperienza. Idealmente le persone dovrebbero codificare nella loro lingua di scelta, o pseudo-codice se preferiscono (studenti per esempio).

    
risposta data 08.09.2011 - 21:04
fonte
1

La vera storia, dimentico ancora la sintassi degli eventi di C # quando devo scriverli a mano. Succede nelle interviste a volte. Non ho il problema quando eseguo il codice su una tastiera.

Scegli il ragazzo che può codificare, non colui che non può, ma può ricordare la sintassi.

    
risposta data 09.09.2011 - 17:49
fonte
0

Quando sto scrivendo il codice su carta / lavagna, anche per un colloquio di lavoro, in pratica salta un pezzo enorme della sintassi. Non uso i semi-punti, le chiamate al metodo Fudge, ecc. Sono più propenso a scrivere una frase che spiega 4 righe di codice veramente semplice rispetto al codice stesso. In realtà, io uso uno pseudocodice di tipo php e parlo di quello che sto facendo, mentre lo sto facendo, e scrivo commenti veloci per spiegare le cose su cui sovrascrivo (che sono, in teoria, niente di veramente importante per il programma)

Il mio obiettivo durante la codifica in un'intervista è di mostrare come risolvo il problema, non di dettare qualcosa che un dattilografo potrebbe inserire nel Blocco note e aver eseguito.

Per farla breve: penso che dovresti considerare perché il primo programmatore ha una sintassi di schifo. Lo sapeva benissimo ma lo considerava irrilevante per l'intervista e preferiva concentrarsi sulle parti di questo lavoro che sono difficili (logica e risoluzione dei problemi).

    
risposta data 08.09.2011 - 14:55
fonte
0

La persona che non può soddisfare logicamente la risposta non è qualificata. Ci sono troppe persone nel nostro settore che producono codice spazzatura conforme ma che in realtà non fanno ciò che dovrebbero fare o gestire errori o casi limite.

La seconda persona può o non può essere non qualificata a seconda del tipo e del numero di errori e della difficoltà di ciò che si aspetta che scrivano. In termini SQL (la lingua in cui scrivo), la persona che non riesce a ricordare la sintassi per un join esplicito non è qualificata per un lavoro che richiede di interrogare un database, senza eccezioni; colui che non riesce a ricordare come fare a un CTE ricusatore (ma chi sa che esistono e cerca di usarne uno) non lo è. In altre parole, mi aspetto che la sintassi sia più corretta per il codice di base che scrivi continuamente ma non per le cose eseguite solo occasionalmente e non per la sintassi complessa.

Se pensassi a una persona che conoscevo con qualifiche eccellenti in un'area correlata, ma conoscevo solo in minima parte il mio linguaggio specifico, probabilmente sarei più indulgente anche per gli errori di sintassi. Preferirei assumere un grande sviluppatore Oracle piuttosto che un mediocre sviluppatore di server SQl per un lavoro di SQL Server (ovviamente una persona eccezionale di SQL Server sarebbe la cosa migliore) e non aspetterei che quella persona conosca la sintassi di SQL Server se potesse mostrarmi come fallo in Oracle. La stessa cosa con le persone di Java e C #, la persona con eccellenti capacità di problem solving batte quella con eccellenti competenze linguistiche, ma quella con entrambe le vittorie ogni volta (sono difficili da trovare a volte).

    
risposta data 09.09.2011 - 20:45
fonte

Leggi altre domande sui tag