Come posso estirpare rapidamente i codificatori "copia e incolla"? [chiuso]

15

Ho bisogno di un modo per filtrare i curriculum di persone che si limitano a copiare e incollare il codice, quindi sperano che funzioni e controllarlo se lo fa. Tutto questo accade senza avere una comprensione (o attenzione) per capire il resto del codice nel sistema.

Certo, so che copiare e incollare il codice è parte dell'apprendimento di un nuovo oggetto, controllo, ecc ... ma come si può sapere se questo rappresenta il 70% (o più) della loro carriera di sviluppo?

Mi sono imbattuto in alcuni ragazzi di livello superiore, forse le cui abilità sono così obsolete o irrilevanti per il progetto, che tutto ciò che fanno è google, copia-quindi-incolla del codice senza pensare alla soluzione nel suo complesso. Di conseguenza abbiamo un mismash di JSON, AJAX, callback, ASMX, WCF e postback nello stesso progetto. È chiaro che non c'è coerenza o logica dietro cui ogni tecnologia viene utilizzata.

Nel peggiore dei casi, questo tipo di sviluppatore crea problemi di sicurezza e vettori per l'attacco.

Domanda

Come consiglieresti di filtrare le persone che hanno uno scarso background di programmazione? Posso farlo al livello di ripresa? Altrimenti, come posso farlo durante l'intervista.

    
posta random65537 20.11.2010 - 00:30
fonte

10 risposte

47

I've come across some senior level guys perhaps whose skills are so outdated or irrelevant for the project, that all they do is google, copy-then-paste some code without thinking about the solution as a whole. As a result we have a mismash of JSON, AJAX, callbacks, ASMX, WCF and postbacks in the same project. It is clear there is no consistency or logic behind where each technology is being used.

Non penso che le abilità dei tuoi sviluppatori siano il problema. Il tuo problema si trova altrove, forse un team leader o architetto che non ha la fiducia in se stesso per "incoraggiare" le migliori discipline di codifica, o un management team che non capisce l'importanza della gestione del debito tecnico, e non dà loro gli sviluppatori il tempo e le risorse per farlo. La tua azienda conserva le revisioni del codice?

La leadership potrebbe essere il problema, non gli sviluppatori di copia-incolla.

    
risposta data 20.11.2010 - 00:46
fonte
13

Il modo per eliminare i programmatori che non possono programmare è impostare un esercizio pratico di programmazione come parte della fase di screening o della fase di intervista. (Quest'ultimo è probabilmente migliore perché puoi controllare l'ambiente per evitare imbrogli.)

Ma non penso che questo risolverà il tuo problema.

... we have a mismash of JSON, AJAX, callbacks, ASMX, WCF and postbacks in the same project. It is clear there is no consistency or logic behind where each technology is being used.

IMO, il vero problema qui è che il tuo team non sta facendo abbastanza revisione interna del codice, e non sta sviluppando un "playbook" di soluzioni preferite a problemi noti. Questo è in parte un problema di cultura, in parte un problema di comunicazione e (probabilmente) in parte un problema con le scadenze del progetto.

Un altro problema è che il progetto ha in genere una lunga durata di vita e, nel corso della sua vita, appariranno nuove tecnologie / tecniche, e quelle vecchie rischiano di perdere il favore. Se si desidera evitare l'uso di tecnologie / tecniche di "colazione per cani", è necessario:

  • imposta e applica un elenco di tecnologie / tecniche che possono essere utilizzate per progetto o
  • investire nello sforzo di aggiornamento delle tecnologie utilizzate da un progetto.
risposta data 20.11.2010 - 01:04
fonte
10

Assumi persone in prova per 3 mesi. Spara se succhiano.

Se non si ISPEZIONA non è possibile ASPETTARE. Revisioni del codice, strumenti di controllo. Un server CI può eseguirli automaticamente.

Fai domande reali nelle tue interviste, come nelle domande dal codice reale.

Invitalo a scrivere codice sulla lavagna.

Se sei un manager non tecnico, non sei qualificato per giudicare questo.

Se non si è qualificati, ottenere un consulente professionale senior affidabile per eseguire i test. Chiedi alle tue persone esistenti e ai tuoi concorrenti se conoscono una persona produttiva di 100 volte. Pagali per fare l'intervista.

Se vuoi gestire un ospedale senza un capo di chirurgia, vai avanti.

    
risposta data 20.11.2010 - 01:06
fonte
9

Ho trascorso gli ultimi anni a intervistare persone e scoprire che il 90% dei candidati semplicemente non può programmare. La mia tecnica di intervista per determinare la programmazione è quella di dare al candidato un brief troppo semplice e lasciare che il candidato lo risolva usando un pennarello e una lavagna.

Le modalità di errore includono:

venire con un progetto e poi implementare qualcosa di diverso. Questi candidati vengono respinti perché sono pericolosi in una squadra. non seguire le specifiche, scrivere bug ecc ...

Non essere in grado di inventare un design. Un numero sorprendente di candidati "esperti" ha bisogno di una specifica per includere la progettazione dell'implementazione.

non conoscendo il linguaggio di programmazione, nonostante l'esperienza di rivendita di CV.

Non fare domande aggiuntive per estrarre le specifiche più complete.

Non essere in grado di spiegare le decisioni di progettazione. Questo è importante. Se qualcuno non è in grado di spiegare il perché, allora ogni volta lo faranno in modo diverso, e la coerenza è persa.

Il risultato finale è stato che ho passato molto tempo a intervistare e non a reclutare molto spesso. tuttavia, il team di sviluppo è stato molto bravo e ha avuto il completo rispetto dell'intera azienda e ha consegnato!

    
risposta data 20.11.2010 - 19:26
fonte
5

Suggerirei FizzBuzz che Jeff Atwood menziona nel post al link .

Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".

    
risposta data 20.11.2010 - 00:34
fonte
2

Chiedo tre domande per il colloquio

  1. Scrivi un elenco collegato in grado di memorizzare un tipo numerico in java senza importare nulla dal framework delle raccolte
  2. Scrivi il codice che mostra come puoi aggiungere / rimuovere nodi da quella lista
  3. Scrivi il codice che mostra come puoi ottenere il massimo / minimo da quella lista

Ho visto persone completarlo in 5 minuti e vedere persone che lottano per 30 minuti prima di arrendersi.

    
risposta data 20.11.2010 - 03:32
fonte
2

Non puoi farlo a livello di curriculum dato che in pratica hanno un tempo infinito per scriverlo, ma puoi farlo su un'intervista telefonica se fai alcune domande che richiedono approfondimenti tecnici su ciò che fanno. Questo ti dà sia la risposta (buona o cattiva) sia quanto tempo ci è voluto per arrivarci.

Quando in un'intervista, falli scrivere codice. È l'unico modo in cui puoi dire se possono programmare per davvero. Semplifica il problema, dai loro un computer con una connessione Internet e l'IDE che utilizzi installato, fagli fare qualsiasi domanda (eccetto gimme-hte-codez) e osserva come funzionano.

EDIT: per l'analisi post-mortem sembra che PMD abbia un rilevatore copia / incolla per trovarlo: link

    
risposta data 21.11.2010 - 14:50
fonte
1

semplice

  • (1) Bloccali in una stanza + ossigeno libero.
  • (2) Dai loro un PC con connessione Internet + IDE di scelta + accesso a Cibo.
  • (3) Avere wireshark o un metodo simile per registrare tutto il traffico in entrata e in uscita.
  • (4) Assegnagli un incarico medio.
  • (5) Esamina tutto il traffico HTTP, completamento post assegnazione.
  • (6) Se l'oggetto ha copiato pezzi di grandi dimensioni del codice sorgente, termina Oggetto .....

Modifica

In qualità di produttore di prodotti7, come sottolineato, in termini pratici si potrebbe fare una cattura video (cattura dello schermo).

    
risposta data 21.11.2010 - 14:38
fonte
1

Se vuoi "estirpare" codificatori scadenti puoi provare ad esempio la Matrice di competenza del programmatore (utile ma non si applica per tutte le aree possibili - ovviamente puoi crearne uno) o codility.com (i compiti sono molto buono e risparmia un sacco di tempo).

Generalmente, assumere dei buoni programmatori è difficile e spesso richiede molti anni di pratica. Puoi iniziare il tuo database di domande di interviste, non solo chiedendo informazioni sulla codifica, ma anche con la matematica, la logica, per non parlare delle domande di motivazione.

    
risposta data 27.02.2012 - 00:14
fonte
0

Direi che il problema con i candidati non è che non possono programmare affatto, ma che non hanno la sensazione di utilizzare lo strumento giusto per il lavoro. Il mio suggerimento è una domanda in cui si darebbero requisiti di alto livello per un nuovo sistema e si è chiesto di fornire un'architettura e giustificare le loro scelte di componenti. Ma mantieni il FizzBuzz per i candidati che non riescono a programmare affatto senza un browser.

    
risposta data 20.11.2010 - 00:40
fonte

Leggi altre domande sui tag