Quando essere un genio tecnico non è abbastanza per essere uno sviluppatore di successo? [chiuso]


18

Ci sono state molte discussioni intorno all'eccellente domanda "L' elevata reputazione in Stack Overflow aiuterà a ottenere un buon lavoro? ". Ho immediatamente concordato con JoshK che sostanzialmente diceva " No " (spiegherò perché), ma Joel ha risposto con molti fatti convincenti che mi hanno fatto votare anche lui.

La mia domanda è quali altre abilità (oltre ad essere un genio tecnico) sono richieste da uno sviluppatore? Per ottenere il lavoro o per mantenerlo .

Credo che essere un genio sia tutt'altro che sufficiente. Ho incontrato molti geni tecnici in varie aziende per cui ho lavorato che mi hanno impressionato molto, ma purtroppo in molti casi, sono stati semplicemente sparati dopo pochi mesi o messi in torri d'avorio (principalmente a causa dell'ammutinamento interno di altri sviluppatori). Ne ho visti molti nell'angoscia personale come risultato di ciò che capisco.

Ecco perché sono un grande fan di domande non tecniche per posizioni tecniche. Mi piace sapere come il candidato interagirà con gli altri (compresi i dipendenti non tecnici), quanta considerazione avrà per l'azienda, se lavorerà per il risultato desiderato e così via.

Vorrei sapere che cosa hai bisogno dai tuoi sviluppatori e PERCHÉ è importante (dopo tutto, assumi qualcuno per scrivere codice, non è vero? Perché vorresti che fosse assertivo?) . Idealmente, vorrei che ti venisse una domanda di esempio da porre durante le interviste a sostegno della tua risposta.


La mia compagnia è carica di torri d'avorio con stipendi d'avorio per i loro residenti :(
dr Hannibal Lecter,

La vista è bella dalla cima della torre d'avorio :)

Un'alta reputazione qui mi ha fatto un invito a mettere un profilo sulle carriere StackOverflow che ha portato a una chiamata da un reclutatore che ha portato a un'offerta per trasferirsi a Seattle :-)
Kevin Cline,

Risposte:


22

Ottime capacità comunicative.

Se i tuoi colleghi non sono in grado di leggere direttamente il tuo cervello, dovrai essere in grado di dire loro cosa ne pensi. Preferibilmente sia verbalmente che scritto.


EDIT: Un modo per vederli al momento dell'intervista potrebbe essere quello di chiedere loro qual è il loro framework preferito per fare X, e quindi dire che devono lavorare su un progetto in cui X potrebbe essere usato, ma è una decisione politica usare la tecnologia Y (che è chiaramente più vecchio e ha alcune limitazioni che X risolve).

Se questo finisce in una discussione sul perché la decisione politica è sbagliata, hai una forte indicazione che questa persona non sta andando bene con decisioni pragmatiche.


Aggiungerai maggiori dettagli su come comunicare con ragazzi non tecnici (come dirigenti o clienti) su cose altamente tecniche? Attualmente sto leggendo un libro eccellente sull'argomento intitolato "Anche un geek può parlare".

Bene, essenzialmente è solo una domanda se riesci a pensare nella LORO mentalità. Una volta ho scoperto che spiegare lo sviluppo del software come "scriviamo ricette per maglieria" si adatta bene alla mentalità delle nonne.

3
Ho sempre una preferenza per i candidati che hanno un'ottima padronanza dell'inglese e la volontà di dedicare del tempo extra a lavorare sulle loro capacità di comunicazione scritta e orale. D'altra parte, se lui o lei parla o scrive come se la vita fosse solo un'altra applicazione distribuita su Twitter, farò del mio meglio per essere educato mentre mostrerò loro la porta.
Adam Crossland,

@Pierre, questo libro è disponibile online? Non sono riuscito a trovarlo su Safari.

1
@ Pierre303 potresti trovare interessante "The Nerd Handbook". randsinrepose.com/archives/2007/11/11/the_nerd_handbook.html . L'autore ha un blog molto interessante.

15

Lavoro di gruppo / comunicazione:

  • per essere in grado di spiegare le tue soluzioni o i tuoi problemi
  • essere in grado di lavorare con altre persone senza farle stare male (in alcun modo) - farle sentire lavorare con te è piacevole

Senza queste competenze, non puoi lavorare in gruppo e, se non puoi, non sarai in grado di entrare in un'azienda che lo richiede (e quasi tutti richiedono un lavoro di squadra, naturalmente). Potresti comunque essere freelance e lavorare su progetti su cui non ci sono altre persone su cui lavorare, ma devi comunque comunicare con persone di altre aziende.

Anche per l'apprendimento, se non riesci a comunicare con molte persone diverse, come sul web, potresti non essere in grado di fare meglio nella vita reale e nella società (qualunque sia il lavoro) è un handicap.

modifica> Nell'intervista, il lavoro di gruppo / socializzazione / comunicazione è davvero facile da controllare, potrebbe essere la cosa più semplice. Devi solo fare alcune domande, non tecniche, domande a cui è facile rispondere o semplicemente domande su cosa pensa il candidato di qualcosa o cosa piace o non piace al candidato in un dominio o in un altro. Fallo parlare. Vedrai.


15

La persistenza è un'abilità che non vedo molto menzionata. Ed è un'abilità: la capacità di farti risolvere un problema, anche se non riesci a vedere la fine. Molte persone non lo fanno; lavorano solo sullo slancio, o semplicemente fanno il minimo per cavarsela. Sfortunatamente, non c'è modo di dire se una persona ha questo tratto parlando con loro. Devi davvero essere in grado di parlare con altri che hanno lavorato con la persona. I riferimenti possono farlo, ma quell'opzione non è sempre disponibile.


+1 per il commento di persistenza - Mi chiedo se un rappresentante SO alto sarebbe correlato alla persistenza?
Gary Rowe,

@Gary - Suppongo che potrebbe, se fosse guadagnato dalle risposte alle domande che richiedevano un po 'di lavoro per risolvere, non dalle domande dei principianti che mancano di un punto e virgola o qualcosa del genere. ;)
Michael K,

12

Questi sono più tratti che abilità, ma probabilmente suggerirei che vale ancora la pena trovarli in qualcuno per essere uno sviluppatore di successo:

La versatilità sarebbe un'altra caratteristica che avrei messo lì. A volte uno sviluppatore potrebbe dover ricoprire ruoli al di fuori del puro sviluppo, ad esempio analista aziendale, architetto o tester. So di avere avuto varie parti di progetti in cui sto facendo qualcosa di diverso dalla progettazione o scrittura di codice e questo dovrebbe essere qualcosa da vedere in un altro. Non tutti possono accettare di assumere quegli altri ruoli. Chiedi quali tipi di situazioni ha avuto lo sviluppatore in passato in cui ha dovuto ricoprire un altro ruolo e come si è rivelato.

L'umiltà sarebbe un'altra cosa che probabilmente avrei messo come requisito. L'ego può causare molti problemi in alcuni luoghi e non tutti possono accettare che ci possa essere qualcuno migliore di loro. Se qualcun altro ha un'idea migliore, lascia che sia quello che viene fatto. Potresti avere un campione del codice dello sviluppatore che chiedi loro di criticare e vedere come possono correggersi o meno.

L'orgoglio sarebbe un altro da mettere laggiù. Questo è in qualche modo in contrasto con la qualità precedente, ma se qualcuno non ha un senso di orgoglio nel proprio lavoro che tipo di qualità pensi che sia? Non essere soddisfatto qui è leggermente diverso, poiché probabilmente molti sviluppatori possono essere perfezionisti. Chiedi di quale progetto passato si sentono più orgogliosi?

L'automotivazione sarebbe anche un'abilità importante da vedere. Cosa li spinge? Quanto possono articolarlo? "Office Space" ha questa linea di Peter Gibbons:

Otto, Bob. Ciò significa che quando commetto un errore, ho otto persone diverse che vengono a parlarmene. Questa è la mia unica vera motivazione non essere seccata, quella e la paura di perdere il lavoro. Ma sai, Bob, questo farà solo lavorare sodo abbastanza da non essere licenziato.

Questo è qualcosa a cui sospetto che molti sviluppatori e non sviluppatori possano fare riferimento. Perché stai facendo il lavoro che fai? Questa può essere una buona domanda, ma cerca la sincerità e l'autenticità nella risposta poiché a volte possono capitare risposte fisse che bisogna individuare.

La curiosità sarebbe l'ultima nella mia lista da aggiungere. Il desiderio di vedere come funziona qualcosa, apprendere nuove tecnologie e uscire dalla propria zona di comfort, sono altri indicatori per questo che possono essere trovati negli sviluppatori di successo. Una breve storia su come si entra nello sviluppo può essere un modo per vedere questo tratto, anche se un altro è quello di chiedere loro qualcosa che non hanno visto e vedere se hanno un "Beh, potrebbe essere interessante da esplorare" o un " Oh fratello, non ancora, "tipo di sguardo.


Grazie mille, mentre ci sono già alcune risposte brillanti, la tua era quella che stavo cercando. Spero che più persone vengano qui con più competenze che possiamo sviluppare per essere un programmatore migliore. (Non posso più votare per oggi, scusate)

7

1) La comunicazione è probabilmente l'abilità più importante per chiunque, compresi i tipi di ingegneria del software. Queste abilità comunicative sono ugualmente importanti per trattare con manager e clienti come lo sono per trattare con colleghi.

2) Il lavoro di squadra è un'abilità leggermente diversa che dipende fortemente dalla prima. In sostanza, devo determinare se la persona che sto cercando di assumere gioverà alla squadra nel suo insieme, o ci saranno alcuni conflitti di personalità che sto potenzialmente assumendo. Nessuno può predire il futuro, ma non puoi nemmeno ignorare i segnali di avvertimento nell'intervista.

Una tattica che uso durante il processo di intervista è chiedere alla persona di descrivere uno dei problemi tecnici più difficili (di cui possono parlare) e come li ha risolti. Mentre parlano attraverso il loro processo di ragionamento e come hanno scoperto il problema, puoi avere un'idea migliore di quanto possano comunicare su cose potenzialmente complicate. Se cercano un aiuto aggiuntivo nel processo, lo vedo come un vantaggio. Nessuno di noi è un perfetto tecnologo. Se il problema che hanno scelto finiva per essere uno scontro di personalità (che è successo solo una volta), puoi passare o sondare un po 'più a fondo.

In molti modi il processo di intervista è come andare ad un appuntamento al buio. Entrambe le persone stanno mettendo la loro faccia migliore, cercando di capire se vogliono passare più tempo con l'altra parte. Più riesci a far fluire l'intervista come una conversazione, più rilassato sarà l'intervistato; e di conseguenza meglio vedrai se sono adatti.


6

Anche se è una qualità che può essere più applicabile al team che ai singoli sviluppatori, penso che ci sia molto dietro il detto "I grandi ingegneri spediscono".

È qualcosa che sarebbe difficile da dimostrare in un'intervista per la maggior parte della gente, ma se intervistassi un candidato che, ad esempio, aveva creato e distribuito una sostanziale applicazione, libreria o framework open source e poteva parlare eloquentemente di qualcosa in più che ci vuole davvero per finire un progetto non banale, dovrei dare a quella persona un vantaggio rispetto alla sua competizione.

Al contrario, se un potenziale candidato mi indicasse il suo account Github e vedessi che era pieno di progetti completati a metà, con errori, trascurati o scarsamente documentati, avrei buone ragioni per ignorare la sua candidatura.

"Il caffè è per chiudi", come ha detto un uomo in un film.


4

Le capacità di comunicazione e lavoro di squadra sono importanti, ma aggiungerei che anche la mia esperienza è stata fondamentale per comprendere le esigenze del cliente e acquisire conoscenze nel dominio aziendale.


2

Concordo sul fatto che le comunicazioni siano di primaria importanza, ma ho riscontrato un errore in un programmatore eccellente che non mostrerebbe agli altri ingegneri l'uso dei suoi processi. Sono stato in grado di duplicare i suoi processi e mostrarli agli altri, ma senza il suo aiuto. Fu licenziato perché non avrebbe insegnato.


1

Non è mai abbastanza.

Buon senso. Problem Solving. Interesse per la tecnologia nel suo insieme. Atteggiamento nel fare le cose nel modo giusto. Persistenza. Gioco di squadra / Comunicazione.

Valuta ogni abilità su 1-5. Se hai almeno 3 e in media 20+. Avrai una buona vita come sviluppatore. 25+ saranno sviluppatori di successo. Meno di 10 anni e devi pensare seriamente a una carriera nello sviluppo di software.

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.