Dichiarazione di non responsabilità: in nessun modo gli sviluppatori sono stati danneggiati nel processo di ricerca di questo articolo.

Alcuni giorni stanno cercando di spremere ridicole somme di denaro da te. Altri giorni, sono i tuoi fratelli maggiori e protettivi che risolvono i tuoi problemi disinteressatamente. Trattali in modo equo e potrebbero anche essere disposti a lavorare gratuitamente per te. Sono una razza interessante e per qualsiasi azienda tecnologica sono indispensabili. Quindi, come assumere e successivamente lavorare con gli sviluppatori?

 

La mia incursione nello sviluppo

Inizialmente ho imparato frammenti e pezzi di sviluppo software come interesse per la tecnologia, ma si è trasformato anche in un interesse per le persone che si occupano di sviluppo. Meno male, perché il tempo che ho passato a imparare a programmare ha ripagato molto la mia capacità di comunicare tra il lato commerciale e quello tecnico dell'azienda. In CityFALCON, siamo stati fortunati ad avere un team di sviluppatori con i piedi per terra che era anche disposto ad aprire la strada alla comunicazione bidirezionale, e la mia capacità iniziale di iniziare una conversazione con un'idea chiara di come pensano gli sviluppatori probabilmente ha contribuito in modo significativo a quell'apertura di comunicazione.

 

Le richieste dello sviluppatore

Durante il processo di assunzione, gli imprenditori avranno il loro primo assaggio della specie. Per coloro che non hanno mai lavorato nella tecnologia e non conoscono la cultura nello sviluppo del software, potrebbe essere un po' uno shock. Ma per chi ha letto questo articolo, lo shock dovrebbe essere smorzato. Ci saranno alcune variazioni tra le generazioni, ma probabilmente non saranno così pronunciate come il divario generazionale in alcune altre professioni.

Condizioni comuni osservate attraverso ripetute sperimentazioni durante il processo di assunzione: Niente straordinari. Nessun lavoro in loco. Nessun orario prestabilito. Nessuna scadenza rigida. Sì paga alta. Sì, orario festivo flessibile. Sì, una scelta di progetti. Sì alta autonomia.

Queste sono alcune richieste di esempio che potresti incontrare come agente di assunzione. Sì, in qualità di agente di assunzione, durante il colloquio, ti potrebbe essere chiesto se la tua azienda fornirà questi vantaggi. A volte il requisito dell'assenza di straordinari e di una retribuzione elevata può essere un punto critico. Per i migliori sviluppatori, sanno di poterlo richiedere, quindi se hai qualcuno seduto di fronte a te, che richiede con molta sicurezza queste condizioni, probabilmente hai un buon sviluppatore a portata di mano.

Questo potrebbe essere uno shock, in quanto probabilmente è leggermente diverso dalle richieste di altri dipendenti, che di solito chiedono stipendi alti, forse un po' di ferie e benefici accessori, come abbonamenti a palestre e caffè gratis. Ovviamente, probabilmente anche agli sviluppatori piacerebbero quei vantaggi, ma hanno le loro ragioni per chiedere ciò che richiedono.

È interessante notare che, una volta che l'esemplare si è integrato nel gruppo, e specialmente nelle aziende con culture affiatate, diventano come una famiglia. Questo è quando molte di queste richieste (temporaneamente) escono dalla finestra e lo sviluppatore diventa come il fratello maggiore che ti aiuta a prescindere dal costo. Ovviamente, se spingi troppo forte per troppo tempo, salteranno semplicemente la nave alla compagnia successiva (e forse migliore).

 

Le motivazioni dello sviluppatore

Le esigenze espresse nella sezione precedente derivano dalle particolari motivazioni dello sviluppatore. Naturalmente, proprio come qualsiasi lavoratore umano - qui ci teniamo a escludere i lavoratori robotici che tendono a non chiedere nulla tranne petrolio, elettricità e l'occasionale aggiornamento del software - lo sviluppatore vuole una bella vita, accettazione sociale, lavoro interessante, e così via.

Mentre molte persone cercano semplicemente soldi per entrare nella cultura del consumo, gli sviluppatori tendono ad essere più interessati al progresso intellettuale e ai risultati. Ha senso e deriva naturalmente dal loro lavoro, dal momento che il loro campo prescelto è un grande sforzo ad alta intensità di conoscenza.

Ovviamente anche loro chiedono soldi, perché hanno bisogno di vivere. Ma dopo un certo punto, i soldi sono meno importanti di altri fattori, come una cultura del lavoro e un management che li capisca.

Altre motivazioni includono:

Apprendimento – non vogliono davvero essere le persone più intelligenti nella stanza, perché in tal caso non potrebbero imparare e migliorare se stessi. Onestamente parlando, la maggior parte degli sviluppatori si diverte a sapere molto sulla propria area di competenza e la ostenterà quando si presenta, ma ascolteranno anche attentamente quando parlano persone con conoscenze in altre aree in modo che possano conoscere quelle aree. Come una spugna cerebrale che assorbe informazioni per successive conquiste.

Sii preso sul serio – se danno un suggerimento, vogliono essere presi sul serio dalla direzione. Questa è una motivazione di base dei dipendenti, ma per qualche ragione, quando gli sviluppatori danno voce ai loro suggerimenti, molti manager la considerano "solo una cosa da tecnici". Non molto fa ribollire il sangue di uno sviluppatore come una persona non tecnica che afferma "è solo una cosa da tecnici". Sorprendente per nessuno, la stragrande maggioranza delle aziende funziona almeno alcuni tecnologia in questi giorni, rendendo in effetti ogni azienda almeno in qualche modo "una cosa tecnologica"

Inteso – anche loro vogliono essere capiti. Analogamente all'essere presi sul serio, questo è anche un desiderio fondamentale dei dipendenti. E ancora, gli sviluppatori tendono a essere meno compresi rispetto ai team che si confrontano con i clienti o con i partner. Quest'ultimo lavora con gli umani e le interazioni umane tutto il giorno mentre gli sviluppatori lavorano con i sistemi. A volte ci vuole un piccolo sforzo in più per capire gli sviluppatori rispetto ai ruoli incentrati sull'uomo, ma ne vale la pena.

 

Interagire con la specie

Ora che hai catturato uno sviluppatore (presumibilmente assumendo e non con trappole per orsi), dovrai sapere come gestire le interazioni. Ovviamente non ti strapperanno la faccia come un orso in trappola, ma diverse cattive interazioni e potresti vedere siti web più lenti e una produttività ridotta: chi vuole lavorare in un posto con una cultura oppressiva?

 

Dare e ricevere consigli

Un'area in cui emergono molti problemi è durante il dare e ricevere consigli. I dipendenti che non si occupano di tecnologia dell'azienda potrebbero credere che qualcosa sia perfettamente facile da fare, ma potrebbe non esserlo. Tendono a dare consigli come "oh, fai solo X e funzionerà". Certo, potrebbe funzionare dal punto di vista dell'utente, ma fare X rompe tre cose sul back-end e abbatte un sistema integrale che gli utenti non vedono ma su cui si affidano completamente.

C'è anche il problema della condiscendenza. Si potrebbe dire "non dovrebbe essere così difficile..." Ma se lo sviluppatore sta dicendo che è difficile, probabilmente è difficile. La tecnologia non è un dispositivo magico e gli sviluppatori non sono maghi. Non possono far accadere le cose se non possono far accadere le cose, e usare un linguaggio come "non dovrebbe essere così difficile" è un modo infallibile per causare blocchi stradali.

Per questi motivi, gli sviluppatori spesso non accettano consigli da nessuno tranne che da altri sviluppatori. In un certo senso, ha senso: le uniche persone che possiedono una profonda conoscenza dei sistemi sono altri sviluppatori. Gli esperti danno consigli ad altri esperti, proprio perché è lì che risiede la loro competenza. I laici di solito non portano molto in tavola. Non vorresti che il tuo idraulico dicesse al tuo chirurgo cardiotoracico come fare un intervento al cuore, solo perché entrambi funzionano con tubi e valvole, vero?

Allo stesso modo, gli sviluppatori potrebbero spingere per determinate soluzioni che non sono fattibili dal punto di vista operativo o pubblico. Hai una soluzione per automatizzare 75% dei lavori ma raggiunge solo la precisione 81%? Beh, potrebbe essere una meraviglia tecnica, ma non funzionerà dal punto di vista del business e del servizio clienti. Per non parlare dell'incubo delle pubbliche relazioni di licenziare tre quarti della forza lavoro. Per questa analogia, non vorresti che il tuo cardiochirurgo riparasse il tuo tubo rotto in caso di emergenza se non ha mai sperimentato prima emergenze di pressione dell'acqua di 80 PSI.

 

Gestione delle aspettative

Quelli in prima linea nel business avranno visioni, ma troppo spesso credono che gli sviluppatori siano maghi. Loro non sono. Possono essere intelligenti, possono essere in grado di fare alcuni trucchi di prestigio, ma tutto si basa sulla fisica e sull'informatica. Ciò significa che non ci sono magie e non tutte le visioni aziendali possono essere implementate in modo fattibile. O forse è possibile, ma al reparto IT viene assegnato solo un determinato budget e la visione sarebbe troppo costosa in termini di risorse computazionali.

Il modo peggiore per gestire le aspettative è coinvolgere gli sviluppatori nella conversazione nelle fasi successive dello sviluppo. Non farlo. Se vuoi che qualcosa venga sviluppato, dovresti portare lo sviluppatore in anticipo. Ciò garantirà che sia effettivamente tecnicamente fattibile.

Gli sviluppatori non sono nemmeno automi senza cervello. Sono interattivi, fintanto che parli con loro e loro (di solito) rispondono. Ti diranno cosa è possibile e lavoreranno anche per trovare soluzioni se pensano che esistano. Probabilmente aiuteranno anche a guidare il processo di sviluppo con un punto di vista tecnico. Non vuoi che il tuo intero progetto sia costruito su un singolo presupposto per scoprire solo, dopo 3 mesi di pianificazione, che il tuo presupposto non è possibile sulla base delle risorse informatiche dell'azienda.

 

Promozione e responsabilità

Gli sviluppatori vogliono codificare e progettare sistemi. Questo è il motivo per cui sono entrati in questa linea di lavoro in primo luogo. Molti non vogliono nemmeno seguire il tradizionale percorso di progressione di carriera. Gli sviluppatori (e molti altri lavoratori tecnici) sono spesso trasformati in manager, ma molti di loro non vogliono davvero le responsabilità extra né l'aspetto della gestione umana. Gli esseri umani sono complessi e spesso illogici, a differenza dei sistemi informatici. Ciò può essere estremamente frustrante per le persone abituate a lavorare con sistemi logici. Inoltre, non si può demolire completamente un essere umano e ricostruirlo in un ambiente virtuale, quindi c'è anche quello.

D'altra parte, alcuni sviluppatori in realtà vorrebbero essere manager. Oppure sono abbastanza aperti a nuove idee per almeno provarci. Se a loro non piace, assicurati di avere un modo per riportarli a ruoli meno manageriali dopo un breve periodo. Se non lo fai, potrebbero abbandonare la nave. I lavori di sviluppo esclusivamente tecnologici sono abbondanti e pagano molto bene.

 

Tempo da solo e socialità

C'è uno stereotipo degli sviluppatori come abitanti delle stanze dei server, seduti al freddo e al buio, che non parlano mai con nessuno se non attraverso i programmi di chat, non lasciano mai la stanza se non per tornare a casa, e qualsiasi interruzione è del tutto sgradita. Questo è solo parzialmente vero.

Gli sviluppatori, proprio come chiunque altro, vogliono davvero tempo ininterrotto per lavorare ai loro progetti. Spesso gli sviluppatori devono destreggiarsi tra le varie parti di un sistema nella loro testa e cercare di integrare nuove idee senza rompere nessuna delle altre parti. La memoria umana non è affidabile come la memoria del computer e le interruzioni possono causare rapidamente il collasso di quell'atto. Ci vuole molta energia per ricominciare la giocoleria, e questo è il motivo per cui agli sviluppatori non piace essere interrotti.

Tuttavia, sono socievoli quanto chiunque altro nel gruppo. Cerca di includerli nelle tue uscite o nelle tue buffonate in ufficio (puoi tralasciare la politica dell'ufficio, però). Assicurati solo di non farlo subito prima di una grande uscita. Invece, fallo subito dopo e congratulati con loro per il loro lavoro. Lo apprezzeranno, ti ingrazierai a loro e potresti persino imparare una o due cose sui tuoi sistemi tecnologici lungo la strada.

 

La questione delle scadenze

Questo è sempre permaloso. Le scadenze mancate sono approssimative, ma si verificano con una frequenza snervante nello sviluppo del software. Gli sviluppatori vogliono rilasciare prodotti di prim'ordine, ma ci sono molti problemi che potrebbero sorgere. Inoltre, non vogliono essere responsabili se tutto si blocca, né vogliono riparare cinque buchi di sicurezza sul server di produzione se possono risolverli prima che il prodotto venga rilasciato.

Una fonte comune di un problema imprevisto è il codice di terze parti. Molti sistemi si basano su codice di terze parti e talvolta quel codice non funziona bene con altro codice di terze parti. Tale conflitto potrebbe non essere scoperto fino alla fine di un progetto, quindi la scadenza deve essere anticipata di un mese mentre il codice proprietario viene scritto per risolvere il problema o il nuovo codice di terze parti viene trovato e integrato. Un'altra fonte comune di superamento della scadenza è un grave bug nelle basi del sistema che causa problemi per il nuovo codice, il che significa che più di un progetto deve essere rivisto prima del rilascio.

Poiché i sistemi possono diventare rapidamente così complessi che nessuna singola persona sa come funziona il tutto, le scadenze spesso vengono perse. Questa è la vita dello sviluppo del software. Puoi fissare delle scadenze, ma assicurati che i tuoi tecnici sappiano che un prodotto solido è più importante di una scadenza arbitraria. In realtà, se non colleghi la scadenza a un evento importante, gli sviluppatori potrebbero semplicemente ignorarlo del tutto.

Quindi, emetti delle scadenze, ma radicale nelle conseguenze del mondo reale, come se il tuo concorrente fosse il primo a entrare nel mercato e l'intera tua attività fallisse. Ciò aiuterà il team di sviluppo a stabilire le priorità. Sii flessibile, perché le scadenze verranno perse. E assicurati di gestire le tue aspettative, altrimenti le tue scadenze non saranno allineate con le capacità degli sviluppatori e ci mancheranno.

Infine, se uno sviluppatore dice di non rilasciare il software, non rilasciarlo. Non c'è niente di peggio per le relazioni con i clienti di un aggiornamento software che si rompe o crea una falla di sicurezza. Mancare una scadenza di pochi giorni è infinitamente meglio che perdere qualche giorno di entrate a causa di un codice difettoso e del colpo di reputazione che ne deriverà.

 

Osservazioni conclusive

Proprio come ogni buon articolo (non) scientifico, vogliamo concludere con un breve riassunto e conclusione.

In tutto l'articolo abbiamo parlato degli sviluppatori come di una specie, quasi estranea ai people manager. Ma anche gli sviluppatori sono solo esseri umani e dovrebbero essere gestiti come tali. Se hai un po' di tempo, come imprenditore che sta cercando un team di sviluppo, ti consiglio caldamente di imparare almeno un po' di programmazione, come funzionano i tuoi sistemi e cosa sta facendo il tuo team. Farà molto per comunicare senza intoppi e potrebbe persino farti guadagnare un paio di fratelli più grandi e protettivi.

Conoscere i limiti dei tuoi sistemi e del tuo team assicurerà che tutti siano sulla stessa pagina e che non si verifichino esplosioni o esaurimenti. Spinge la squadra in avanti come una squadra di canottaggio ben orchestrata invece di una squadra in difficoltà che rende tutti infelici. E gli sviluppatori sono più richiesti che mai, quindi premere continuamente i pulsanti sbagliati farà sì che questa specie cerchi pascoli più verdi. La lealtà aziendale è morta solo per le aziende sleali, quindi non cadere vittima della perdita di un grande sviluppatore e potenzialmente dell'intera infrastruttura tecnica.

 

Avevamo solo un'anima coraggiosa disposta a mettere la sua faccia là fuori come una delle specie attuali, quindi ecco quell'anima coraggiosa (è il nostro DBA e ragazzo delle infrastrutture):

E poiché nessun altro si è offerto volontario (a volte gli sviluppatori possono essere un po' timidi e introversi), ecco una foto di una parte del nostro team. Ad essere onesti, è difficile trovarli in un posto alla volta; la cultura del lavoro a distanza degli sviluppatori infetta davvero un'intera startup, anche quelli che non sono sviluppatori.

E tutti in ufficio, non solo gli sviluppatori di software, sembra che lo facciano tutto il tempo (fissando i computer)