Dovrei cercare sviluppatori con competenze specifiche o generalisti che devono imparare? [chiuso]

8

Grazie al grande aiuto di questo sito e di SO, sono stato in grado di realizzare un prototipo di un software che voglio vendere ma, sfortunatamente, sebbene il prototipo funzioni, penso che la mia qualità del codice sia molto bassa. Non ho usato molto OOP o schemi di progettazione, quindi anche se il mio codice è comprensibile per me, penso che uno sviluppatore normale sarebbe svenuto se dovessero leggerlo.

Quindi volevo assumere uno sviluppatore per migliorare la qualità e migliorare alcune delle mie implementazioni di API che forse non avevo eseguito correttamente. Comunque sto avendo problemi ad assumere uno sviluppatore.

Ho incontrato 2 sviluppatori e ho chiesto loro di leggere le specifiche del mio software. Il problema è che mancavano della conoscenza del dominio della mia azienda (che è completamente comprensibile e non grossa) ma mancavano anche della conoscenza dei sistemi tecnologici sottostanti che ho usato come Hadoop , Hbase, Cuda, ecc. Ho speso un sacco di tempo per spiegare la mappa / ridurre, i bigtables e le altre tecnologie che ho usato. Ho pensato che fosse una conoscenza comune a causa delle mie interazioni con le persone su questo sito, ma le persone che ho incontrato hanno detto di non aver mai avuto a che fare con queste cose, quindi non lo sapevano.

La mia domanda è, per i progetti software che stanno assumendo gli sviluppatori di appaltatori è un pericolo se lo sviluppatore non ha esperienza con le tecnologie sottostanti? oppure uno sviluppatore generico che si trova in un'altra area può realisticamente raccogliere nuove tecnologie? Ho eseguito un calcolo molto rapido della busta e penso che i costi iniziali sarebbero simili se assumo uno studente o uno sviluppatore senza esperienza nelle mie tecnologie che lavorerà molte ore contro l'assunzione di uno sviluppatore esperto che paga il doppio ma finisce a metà il tempo ma quali altri rischi dovrei considerare o preoccupare? Inoltre, se dovessi assumere un generalista, dovrei pagare per il tempo necessario per imparare il hadoop o il cuda se sono appaltatori (sembra avere senso dal punto di vista commerciale ma non sono sicuro di quanto sia giusto per loro se non usano il abilità di nuovo).

Sono un po 'confuso quindi qualsiasi suggerimento sarebbe ottimo.

    
posta Lostsoul 09.10.2012 - 05:07
fonte

7 risposte

19

is it a danger if the developer does not have experience with the underlying technologies?

Sì. (L'apprendimento richiede tempo e fare errori è spesso parte del processo.)

or can a general developer who is accomplished in another area realistically pick up new technologies?

Sì. (Raccogliere nuove tecnologie è qualcosa che i generalisti fanno sempre. Non duri a lungo come programmatore se non puoi imparare cose nuove.)

I think the upfront costs would be similar if I hire a student or developer with no experience in my technologies who will work many hours versus hiring a highly experienced developer who charges double but finishes in half the time

Si noti che c'è una grande differenza tra "nessuna esperienza con la tecnologia X" e "nessuna esperienza, periodo". Una cosa è dover imparare qualche nuovo framework o linguaggio, e un'altra cosa è iniziare il tuo primo lavoro come sviluppatore e non avere qualcuno con una certa esperienza che ti indichi la direzione giusta.

what other risks should I be considering or worried about?

Le decisioni prese durante il processo di progettazione e sviluppo possono essere difficili e / o costose da cambiare in seguito. Uno sviluppatore esperto e intelligente potrebbe farti risparmiare molto più delle semplici ore di sviluppo. D'altra parte, qualcuno che è veramente bravo in quello che fa sarà in grado di caricare di conseguenza.

I'm a bit confused so any suggestions would be great.

Forse l'articolo di Joel Spolsky aiuterà: Guida per intervistare Guerrilla . In poche parole, Joel dice di cercare due cose: 1) intelligente, 2) fa le cose. Oltre a ciò, suggerirei di cercare qualcuno con cui poter lavorare e che comprenderà ciò che stai cercando di ottenere e lavorare con te.

    
risposta data 09.10.2012 - 05:45
fonte
4

Suppongo che se un novizio può fare esattamente le stesse cose per metà del prezzo in due volte, tutto funziona. Realisticamente, ci saranno problemi che il tuo debuttante non risolverà e insidie che non potranno evitare. Non penso che otterrai codice simile. Finirai per abbassare le tue aspettative.

Questo è più probabile quando si tratta di design. Paga la commissione extra per lo sviluppatore esperto a lavorare sul design. È possibile utilizzare il principiante per aiutare con il volume di codifica se si pensa che sia conveniente.

    
risposta data 09.10.2012 - 16:31
fonte
3

Sì. Tutti e due.

Idealmente, potresti trovare qualcuno nel mezzo che avrebbe bisogno di una gamba, ma non che qualcuno possa portarli su conoscenze tecniche o di dominio. Tuttavia, molte forze influiscono sul problema del personale che stai cercando di risolvere.

Perché esiste una carenza di competenze nel dominio

Gli sviluppatori sono un gruppo itinerante che passa dal dominio delle applicazioni al dominio delle applicazioni come richiesto dal mercato. Se qualcosa è caldo, dieci o forse un centinaio o anche un migliaio di aziende lo inseguiranno fino a quando la concorrenza spinge tutti i giocatori fuori dal mercato. Di conseguenza, gli incentivi per gli sviluppatori per approfondire il pre-noleggio della conoscenza del dominio aziendale sono zip. Se stai facendo qualcosa di abbastanza nuovo, non troverai altri con la conoscenza del dominio. Se hai concorrenti, o in particolare ex concorrenti, non dovresti rinunciare alla tua ricerca per l'esperienza di dominio.

Se assumi uno sviluppatore hot-shot, potrebbero essere più interessati a sviluppare abilità portatili, quindi potresti essere ancora costretto a portare molto peso per la conoscenza del dominio. Forse dovresti prendere in considerazione il fatto che un ingegnere di sistema possa documentare la conoscenza del dominio correlato alle caratteristiche per l'utilizzo da parte dello sviluppatore. Forse tra la furbizia e le cose fatte, sceglierai qualcuno strong nel fare le cose. Se riesci a trovare uno sviluppatore che è interessato a stare con te per un po ', imparando sia la tua attività che la tua tecnologia, che pone le esigenze della tua azienda in modo uguale con il loro, che potrebbe essere migliore a lungo termine rispetto al ragazzo intelligente i cui piani implicano salendo e, piuttosto frequentemente, fuori.

Abilità elevate richieste

Se stai facendo qualcosa che è molto richiesto, devi fare molto di più per attirare i candidati. Se la tua visibilità è bassa e ciò che hai da offrire in cambio è meno stellare rispetto alla concorrenza, potresti dover pagare molto di più o far crescere il talento di cui hai bisogno da un gruppo di candidati con altre competenze.

Abilità del dominio o Abilità tecnologiche?

Nella domanda menziona diverse abilità che i tuoi candidati mancano tra cui Hadoop, Hbase, Cuda, map / reduce e bigtables. Non sono sicuro che chiamerei queste competenze di dominio perché sono basate sulla tecnologia piuttosto che sulle specifiche di un prodotto specifico per i tuoi clienti. Sospetto che ognuna di queste competenze sia portatile e sarà comunque valida dopo che il tuo settore specifico si sarà automatizzato e tu hai dominato, trovato una nicchia o spostato su qualcos'altro.

La crescita delle abilità tecniche attira buoni candidati

Il vantaggio del reclutamento e dell'addestramento per le competenze tecnologiche è che l'intelligente, le cose fatte, uno sviluppatore aggressivo e orientato alla carriera che si allena salterà la possibilità di imparare qualcosa con un futuro lungo e gratificante. Se mantieni le sfide e un nuovo mix di tecnologie gestibili, molti degli sviluppatori che desideri si trasformeranno in un team per vantaggi reciproci a breve e lungo termine.

    
risposta data 09.10.2012 - 13:18
fonte
2

is it a danger if the developer does not have experience with the underlying technologies? or can a general developer who is accomplished in another area realistically pick up new technologies?

Uno sviluppatore può raccogliere tecnologie (e lo faranno, alla fine) ma non penso che soddisfi i tuoi requisiti.

Hai un software funzionante, ma lo vuoi rivedere, refactored e forse anche riscritto. Hai davvero bisogno di un esperto o almeno di qualcuno esperto in un paio di tecnologie per poterlo fare, perché anche se esistono cose come i modelli software, le implementazioni variano tra piattaforme e framework a causa dell'unicità della piattaforma e del framework.

Avevi risolto i problemi aziendali e padronanza del dominio, e hai implementato il software. Ora sei dietro una guida tecnica per consentire alla tua applicazione di scalare e vivere una vita lunga e sana. Vuoi qualcuno che ha fatto questo in un sistema simile, o usando una tecnologia simile.

Diverse piattaforme spesso richiedono mentalità ed esperienze completamente diverse. Immagino che tu stia lavorando su un progetto di tipo big data / calcolo parallelo? Uno sviluppatore web o uno sviluppatore di integrazione dovrebbe essere in grado di riscrivere il tuo prototipo e farlo funzionare, ma perché presumere che potrebbero farlo meglio di te?

Non resistere per la persona perfetta, perché potrebbero non esistere, ma il tuo sviluppatore dovrebbe avere familiarità con almeno alcune delle tecnologie e dei concetti che stai utilizzando, o, come si dice nella pubblicità di lavoro, dimostrare la capacità di apprendere rapidamente nuove tecnologie e concetti . Se non hanno sentito parlare di Hadoop o MapReduce, i campanelli d'allarme dovrebbero essere spenti - gran tempo.

    
risposta data 10.10.2012 - 07:44
fonte
1

Stai davvero chiedendo una revisione del codice e / o una formazione. Soprattutto per la revisione del codice, un gruppo di programmatori esperti con background diversi è il migliore. Quando tutti sono d'accordo, fai quello che ti dicono. Quando hanno tutti un'opinione diversa, stai facendo la cosa giusta. : -)

Se utilizzi mapReduce, CUDA e Hadoop e desideri un singolo revisore, assumi l'esperto. La mia prima scelta sarebbe cercare qualcuno con esperienza oltre a scuola. Considera anche la possibilità di allenarti, di unirti a gruppi di utenti, ecc. Potresti essere in grado di prendere alcune domande chiave individuali e mostrarle agli amici se hai quel tipo di amico.

Programmers.StackExchange consente alle persone di pubblicare il codice per la critica? Se è così, non sceglierei più di una pagina. Scegli qualcosa che sai essere sbagliato, ma non sai perché.

Che linguaggio di programmazione stai usando?

    
risposta data 10.10.2012 - 03:29
fonte
0

Prenderò totale mancanza di familiarità con ciò che Hadoop / MapReduce è anche un segnale di avvertimento che lo sviluppatore potrebbe non fare alcun tentativo per tenersi aggiornato.

Detto questo, è solo un segno, non un no-hire. Dai loro FizzBuzz o qualcosa del genere, e se superano questo mostra loro il tuo codice e chiedi una critica. Forse scegli qualcosa con un bug deliberatamente, ma anche qualcosa che pensi sia ok, in quanto quella discussione sarà più interessante.

    
risposta data 10.10.2012 - 02:07
fonte
0

È difficile dare consigli su questo. Solo alcuni pensieri:

I think the upfront costs would be similar if I hire a student or developer with no experience in my technologies who will work many hours versus hiring a highly experienced developer who charges double but finishes in half the time but what other risks should I be considering or worried about?

Forma ciò che hai scritto nella tua introduzione:

  • my code quality is very low
  • I didn't use much OOP
  • I wanted to hire a developer to make it a bit more better quality and improve some of my implementations

Rispondere a questo dovrebbe essere un no-brain :

Se assumi uno sviluppatore con nessuna esperienza , è molto improbabile , che sei in grado di aumentare la qualità del codice . Un programmatore senza esperienza è nessun aiuto .

Anche se potrebbe essere più economico nell'esecuzione breve , per assumere un novizio , stai pagando più tardi !

what other risks should I be considering or worried about?

Non fare l'errore di calcolare solo i costi, per far funzionare te e il tuo prodotto. Più importanti sono i costi di manutenzione .

Come conseguenza diretta di ciò che ho detto nel paragrafo precedente, devi considerare, ciò che viene chiamato Debito tecnico . Come hai detto tu: il codebase non va bene - per così dire, c'è già debito tecnico . E con l'assunzione di lavoratori non qualificati, si aumenta il debito . Forse tra qualche anno finirai con un codebase non mantenibile e avremo a) di ricominciare e b) perdere finalmente i clienti, che equivale in entrambi i casi: perdita di denaro.

Also, should if I do hire a generalist, should I be paying for the time it takes them to learn hadoop or cuda if they are contractors(seems to make business sense but not sure how fair it is to them if they do not use the skill again).

Chiaramente: sì! Non vedo alcuna ragione, non farlo. Hanno bisogno della conoscenza, ne hai bisogno per averlo - quindi: sì.

Se sono buoni sviluppatori, dovrebbero facilmente ottenere grip su tecnologie nuove o almeno nuove. Le probabilità sono alte, che se prendono sul serio il loro lavoro, hanno tecnologie sul loro radar , cioè, in realtà non hanno fatto nulla di produttivo con la tecnologia, ma sanno come e quando - per usarlo.

Devo ammettere che non ho alcuna conoscenza di Hadoop per me stesso, ma so, quando potrebbe essere una buona soluzione e avere una buona comprensione di come funziona in teoria ; quindi direi che non dovrebbe volerci molto a farmi diventare produttivo.

I have met 2 developers and had them read my software specs.The problem is, they lacked my business's domain knowledge(which is completely understandable and no biggie) but they also lacked knowledge of the underlying tech systems I used such as Hadoop, Hbase, Cuda, etc..I spent alot of time explaining map/reduce, bigtables and other technologies I used.

Per spiegare il tuo business dovrebbe essere la parte più facile per te, dal momento che sai di meglio. Non puoi pretendere che tutti conoscano il tuo business come te o addirittura lo sappiano del tutto.

Lo stesso vale per la tecnologia:

Ci sono migliaia di quadri, linguaggi, toolkit là fuori - è improbabile trovare (m) uno o più sviluppatori che li conoscano tutti

Naturalmente si potrebbe dire: $ Technology_du_jour è pubblicizzato nei media, quindi mi aspetto che ogni sviluppatore abbia una conoscenza operativa. Ma questa non è la realtà.

Per me come sviluppatore il mio lavoro è un compromesso: ho una conoscenza pratica di alcune lingue e di alcune tecnologie. Questo mi rende flessibile in molti modi. Se devo, sono in grado di sviluppare una comprensione approfondita dei miei strumenti attuali, ma man mano che passano le stagioni, gli strumenti e le lingue lo fanno.

tl; dr;

1) Se puoi, assumi un esperto nel tuo dominio e nella tecnologia desiderata

2) Se non puoi,

2a) Cerca un generalista con alcune competenze di progetto , che possono o meno conoscere le tecnologie utilizzate nel tuo progetto

3) Se c'è veramente , davvero nessun altro: assumere uno studente.

Hai un debito tecnico, non aumentarlo!

    
risposta data 23.05.2015 - 20:22
fonte

Leggi altre domande sui tag