Le interviste per le posizioni di programmazione dovrebbero essere incentrate sulla conoscenza del CS o sul comportamento? [chiuso]

5

Sembra che molte domande relative a interviste su questo sito siano focalizzate sulla verifica delle conoscenze tradizionali di CS, come ad esempio:

  • Algoritmi
  • Strutture dati
  • Linguaggio / ambienti di programmazione

Ovviamente il sito è chiamato "programmatori", quindi è normale.

Tuttavia, direi che ci sono molti altri aspetti che potrebbero essere i migliori predittori del successo di un candidato (supponendo che il candidato abbia una laurea in CS da una buona scuola e abbia ottenuto buoni voti):

  • Hanno un amore generale per la programmazione e un continuo interesse nel migliorare le loro capacità?
  • Sono disposti a imparare nuove abilità?
  • Sono disposti a prendersi il tempo per condividere le proprie conoscenze e aiutare gli altri?
  • Hanno un track record di successo?
  • L'intervistato apprezzerà il tipo di lavoro che l'azienda sta facendo e si dedicherà a questo?
  • Lavorarono su progetti simili o per aziende simili prima e li divertirono?
  • Gradiranno la cultura dell'azienda?
  • Si impegnano a vedere i progetti avere successo?

C'è più vantaggio nel testare la conoscenza di CS o aspetti comportamentali, o una combinazione?

    
posta Cliff 13.10.2011 - 18:18
fonte

8 risposte

5

Molti datori di lavoro stanno iniziando a valutare la "mentalità" rispetto allo "skillset". Vedi questo articolo:

link

In realtà non dice se questo si è esteso al settore IT (che è molto focalizzato sulle abilità) ma penso che sia come se non fosse più importante. Ma vorrei andare oltre la volontà di apprendere nuove competenze, penso che dovrebbero anche imparare nuove competenze dalla propria schiena, e portare tale conoscenza nell'impresa. E, naturalmente, l'amore per la programmazione è importante, così come l'amore generale per la risoluzione dei problemi (a loro piace fare puzzle, rilassarsi ad esempio?)

    
risposta data 13.10.2011 - 18:32
fonte
6

Quando chiedi informazioni sul comportamento in un colloquio tecnico, cessa di essere un colloquio tecnico.

Per le interviste in generale, penso che entrambe siano estremamente importanti. Nella mia esperienza, molte aziende hanno un test puramente tecnico (come possono essere più facili da fare in breve tempo per molti candidati) che devi passare per arrivare al vero colloquio, dove fanno domande comportamentali.

    
risposta data 13.10.2011 - 18:26
fonte
3

L'ingegneria del software è MOLTO diversa da altri campi ingegneristici.

Quando costruisci un ponte le leggi della fisica sono costanti e generalmente ci sono solo una manciata di modi accettabili per progettare e costruire un ponte. Esistono migliaia di modi per progettare e sviluppare solo le applicazioni Web, ognuna delle quali richiede un set di competenze diverso.

Tuttavia, la mentalità di un ingegnere del software si sovrappone alle barriere tecnologiche e della piattaforma e consente di visualizzare le esperienze, le attitudini, i comportamenti, le decisioni e le opinioni progettuali di una persona e la capacità di apprendere rapidamente nuove competenze.

La mentalità è di gran lunga molto più importante per me.

    
risposta data 13.10.2011 - 20:00
fonte
2

Anche un colloquio tecnico al 100% è influenzato da come si comporta il candidato quando risponde alle domande.

Tuttavia, è vero che troppe interviste si basano essenzialmente su abilità tecniche e dovrebbero includere le altre abilità essenziali per ogni grande programmatore.

Ho passato molte interviste e c'erano una vasta gamma di generi. Alcune società non mi hanno mai fatto una sola domanda tecnica mentre altre hanno concentrato il loro tempo per garantire che conoscessi le cose più avanzate.

La mia esperienza personale è che le aziende che si concentrano su domande comportamentali tendono ad avere meno hopper di lavoro e persone con competenze essenziali come l'intelligenza emotiva (che è raro per uno sviluppatore).

Quindi direi che dovresti combinare entrambi, ma con maggiore attenzione al comportamento.

    
risposta data 13.10.2011 - 18:44
fonte
0

Una combinazione.

Il problema è che è relativamente facile testare un candidato su algoritmi e programmare la conoscenza del linguaggio, ma è molto difficile scoprire il suo comportamento dopo solo una o poche interviste. Nella maggior parte delle domande che hai sollevato il candidato potrebbe mentire solo perché vuole ottenere il lavoro.

    
risposta data 13.10.2011 - 18:28
fonte
0

Una combinazione sarà usata spesso come la tua risposta può essere tanto importante quanto la risposta stessa . Anche se potrebbe non essere recuperato facilmente, penso che non si dovrebbe dimenticare che ci possono essere due uccelli con una fava nel caso si facciano alcune domande tecniche. Se a qualcuno viene dato un problema con la lavagna, vengono testate varie abilità comunicative, quanto la persona fa domande per chiarire qual è la priorità più alta in una soluzione, quanto bene può articolare il motivo per cui la sua soluzione è buona.

Alcune avvertenze su queste domande che non so se lo prenderesti o meno in quanto ci sono diverse interpretazioni che potresti prendere qui:

  • Hanno un amore generale per la programmazione e un interesse continuo nel migliorare le loro abilità?

Questo può diventare brutto in fretta, perché non sono sicuro che tutti sarebbero entusiasti della programmazione in Assembly se il loro compito sarebbe di fare sviluppo web usando linguaggi di alto livello la maggior parte del tempo. Quel "generale" può essere preso in molti modi che non sono così grandi per la mia mente.

  • Sono disposti a imparare nuove abilità?

Intendi per questo essere così aperto? Non penso che vorrei imparare come skydive o eseguire un intervento a cuore aperto tra molte altre cose che probabilmente non erano ciò a cui avevi pensato nel fare la domanda. Chi vuole imparare come pulire tutti i tipi di sversamenti chimici o sopravvivere a una fusione nucleare? Quanto è appropriato che queste competenze siano una preoccupazione valida qui, specialmente se questo apprendimento è in orario o denaro della società.

  • Sono disposti a prendersi il tempo per condividere le proprie conoscenze e aiutare gli altri?

Questo è dove gli eccessi possono essere brutali. Alcune persone potrebbero avere difficoltà a dire no e quindi il loro lavoro non viene fatto perché qualcuno ha chiesto e dire no qui implicherebbe no a questa domanda generale o è stato pensato per essere una "maggior parte del tempo ma non la spesa di fare le tue scadenze "che è quello che la maggior parte delle persone ha come una grande sfida?

  • Hanno un track record di successo?

Chi sta definendo il "successo" qui? La mia esistenza a questo punto nel tempo si qualifica come un successo? Il fatto di aver raggiunto un luogo di colloquio al momento giusto con vestiti appropriati è considerato un successo? Ci vuole uno sforzo erculeo per fare qualcosa di successo?

  • L'intervistato apprezzerà il tipo di lavoro che l'azienda sta facendo e si dedicherà a questo?

Quanto bene una società può spiegare che cos'è quel lavoro ed essere corretto nell'assegnare vari% s a quanto è in ogni categoria.

  • Lavorarono su progetti simili o per aziende simili prima e li divertirono?

Quanto della società attuale può essere divulgato per farlo correttamente?

  • Gradiranno la cultura dell'azienda?

Anche in questo caso, è probabile che ci siano più culture in quanto la società potrebbe averne una, il reparto ne ha un'altra e la squadra ne porta un'altra in quanto ogni livello può essere eseguito in modo diverso e quindi questa non è davvero una buona domanda se la squadra la cultura è molto diversa dalla società nel suo insieme.

  • Si impegnano a vedere i progetti avere successo?

Quanto impegnato stai volendo qui? Il tipo di persona che impiegherà più di 100 ore e chiamerà tutti i favori con tutti gli amici per rispettare una scadenza, mettendo praticamente a repentaglio la salute di molte persone nel processo? Pensa a quanto lontano vuoi questo e cosa succederebbe se questa persona diventasse un po 'più zelante e volesse che gli altri andassero altrettanto lontano?

In sintesi, potresti dare un'occhiata a queste domande che potrebbero essere utili come sfondo:

risposta data 13.10.2011 - 18:58
fonte
0

Entrambe le categorie sono importanti. Penso che sia anche importante includere domande tecniche che vanno oltre la conoscenza dei linguaggi di programmazione, algoritmi, strutture dati e altri concetti CS. Chiedi informazioni su:

  • Sicurezza (scripting cross-site, SQL injection, password di hashing, crittografia simmetrica vs chiave pubblica / privata, ecc.)
  • Design orientato agli oggetti (SOLID, design pattern, ecc.)
  • Test delle unità, sviluppo basato sui test / comportamento, esperienza con i framework di test / simulazione
  • Vantaggi dell'integrazione continua, controllo della versione, ecc., esperienza con tali strumenti
  • Metodologie di sviluppo del software, ovvero, ciò che rende un processo agile rispetto a cascata, ecc. Solo le idee e il flusso generale. In effetti, essere in grado di spiegare le cose nei loro termini è meglio che rigurgitare la guida di Scrum.
  • Quando / che cosa dovresti ricattenere, qual è il debito tecnico, ecc.
risposta data 13.10.2011 - 19:38
fonte
-1

Should interviews for programming positions be CS knowledge focused or behavioral focused?

Sostituiamo programmazione con sviluppo software . E ora sto per dire qualcosa di veramente pazzo qui: Le interviste per le posizioni di sviluppo del software dovrebbero essere focalizzate sullo sviluppo del software.

Quando cerchi sviluppatori software esperti, cerchi persone che capiscano quanto segue:

  • Fallo funzionare!
    Non mi aspetto che uno sviluppatore di software sia in grado di implementare qualsiasi struttura dati sul posto (garantito, se non è possibile implementare una lista collegata, allora le probabilità sono basse sono utili alla programmazione). Quello che mi aspetto è che, dato un problema, saranno in grado di fornire una soluzione pulita usando le implementazioni da qualsiasi libreria che immaginano. Mi aspetto che siano in grado di spiegare le loro scelte, mostrare potenziali colli di bottiglia e proporre miglioramenti per la scalabilità come richiesto . Voglio vedere adeguato uso di strutture dati complesse e semplici.
  • Le "spalle dei giganti" suonano un campanello?
    Generalmente uno sviluppatore di software dovrebbe essere in grado di mettere insieme le soluzioni rapidamente attraverso il riutilizzo delle librerie disponibili, a meno che una propria implementazione non abbia benefici verificabili. In quasi tutti i casi non ha senso reinventare la ruota quando si scrive codice di produzione. Invece mi aspetto che abbiano una grande capacità di leggere il codice di altri, studiare le API di 3d party e cogliere nuovi approcci. Conoscere l'ecosistema che si muoveranno all'interno è un vantaggio.
  • Gli algoritmi sono eterni. Il software ha cicli di vita.
    Gli sviluppatori di software dovrebbero essere in grado di risolvere problemi completamente diversi da quelli di CS. CS pone problemi ben definiti, isolati, piccoli con vincoli verificabili per le soluzioni. Per cominciare, gli sviluppatori di software devono infatti sviluppare le metriche per misurare effettivamente la qualità della loro soluzione (ci sono molti sviluppatori che lo sottovalutano e il risultato è orribile). Solo per affrontare i problemi, che sono complessi, sfocati, a seconda di un contesto, che - per aumentare il divertimento - sta cambiando nel tempo e hanno bisogno di progettare sistemi in grado di rispondere ai cambiamenti. Tuttavia dovrebbero:
  • Risolvi il problema indicato. Niente di meno, niente di più.
    Non è possibile avere sviluppatori di software che scrivono un framework completamente nuovo e sviluppare una nuova branca di CS attorno ad esso per risolvere i loro problemi. Nel momento in cui il loro codice costruisce alla fine per la prima volta, i requisiti sono già cambiati. Un sacco di codice viene prodotto in nome della riusabilità che non è nemmeno utilizzabile in primo luogo.

Non classificherei questo comportamento. Penso che riguardi la maestria, che è alla fine del percorso che ognuno deve preparare con la propria esperienza.

Quindi cerca di capire fino a che punto sono sulla loro strada. Quanto lo sviluppatore desidererebbe essere lo sviluppatore di cui hai bisogno. Parla di:

  • Che cosa cercano nello sviluppo di software professionale.
  • Che cosa cercano nello sviluppo di software personale.
  • Problemi incontrati, che non sono stati in grado di risolvere per un lungo periodo di tempo o fino ad ora
  • Problemi che hanno superato e soluzioni su misura, di cui sono orgogliosi
  • ...

Naturalmente c'è un aspetto non tecnico nel lavoro. Lavoro di gruppo, scambio di conoscenze, tutoraggio e così via. Ma sono entrambi oltre lo scopo di un colloquio tecnico e questo sito.

Per favore, capisci anche che filtrare i candidati che hanno una conoscenza di base della programmazione e CS può essere fatto facilmente prima delle interviste e quindi dovrebbe essere fatto, per risparmiare tempo prezioso, che puoi usare sui candidati che passano il filtro, e che quelli che non riescono possono usare per scegliere il prossimo passo per il loro miglioramento.

    
risposta data 13.10.2011 - 20:59
fonte

Leggi altre domande sui tag