La descrizione della situazione da parte dell'OP è probabilmente unilaterale. Va bene così.
Sono un anziano sviluppatore (~54 yo) portato in un'azienda per non governare, ma per fornire un po’ di esperienza. (Il capo dell'IT in realtà ha detto “capelli grigi”, lol.) Lo staff di sviluppo era molto più abile, a conti fatti, di qualsiasi altro team con cui avessi lavorato in precedenza. Mi hanno insegnato molto, soprattutto sull'umiltà! Ma abbiamo trovato dei posti dove la loro stregoneria tecnologica non risolveva i problemi e in alcuni casi li nascondeva, peggiorandoli alla fine. È qui che sono stato in grado di dare il mio contributo.
Il vostro piombo sembra fortemente autocratico. Sembra che gli sia stato dato un mandato dal proprietario. Il proprietario è insoddisfatto dello staff dello sviluppo e ha fatto entrare questo tipo “duro e senza fronzoli” per migliorare la velocità di consegna.
Prima di tutto, guardate il vostro staff. Avete dei deboli - sviluppatori che non “vedono Matrix”? Se sì, trovategli nuove posizioni all'interno dell'azienda o date loro una buona referenza per un datore di lavoro che ha bisogno delle loro competenze uniche.
Odia gli IDE
Ne conosco alcuni che lo fanno. Mi fa roteare gli occhi, ma alla fine non mi interessa. Se la gente produce usando vi
, allora va bene. Amo le mie IDE.
Non rifatta il codice, e non si preoccupa dello stile (che è incoerente nel suo codice)
Bandiera rossa sulla prima parte. È un copy-paster? Sono anche colpevole di non curarmi dello stile, ma questo perché uso il mio IDE per rendere immediatamente il mio codice Python PEP8 conforme. Ma non usa un IDE…
Come nota a margine, lo stile è stato precedentemente controllato da una build notturna, che ha iniziato a fallire dall'arrivo del nuovo lead.
Rifiuta l'idea di una build notturna, così come i test automatizzati. Secondo lui, “qualsiasi sviluppatore professionista testa il suo codice comunque a mano, quindi non c'è motivo di perdere tempo a scrivere test automatizzati”. Anche la costruzione notturna è una perdita di tempo, secondo lui.
Anche questo fa scattare un campanello d'allarme, ma per motivi diversi da quelli che ci si potrebbe aspettare. Prima che questo tizio venisse assunto, quante volte al proprietario è stato detto che non poteva fare X (dare una dimostrazione, usare il sistema, ecc.) perché la costruzione notturna non è riuscita? E se il proprietario percepisce che il problema è la costruzione notturna? Cosa pensi che direbbe al Lead di fare?
Ma ho delle preoccupazioni sull'atteggiamento del Lead; i test automatizzati sono incredibili. Come prima, il capo potrebbe non capire il valore dei test, ma di sicuro sa che è l'Y% dello stipendio dello staff del Dev a pagarli. Quando sono arrivato nella mia attuale azienda, la “mafia della copertura del 100% dei test” aveva preso in carico lo staff di sviluppo e ha fatto lievitare i costi. Una mela marcia in seguito e lo staff di dev stava facendo di nuovo le fusa.
Pensa che il controllo delle versioni sia per lo più inutile…
Questa è una bandiera rossa di altissimo livello. Si sbaglia il più possibile. Si sta comportando in modo irresponsabile con i soldi del proprietario.
Sopravvaluta l'importanza dell'ottimizzazione del codice.
Ai tempi, l'ottimizzazione del codice poteva fare la differenza. Ora le macchine sono così veloci che è meno importante. Ora dobbiamo invece preoccuparci delle prestazioni del database e del throughput della rete. Ma la sua abitudine di “ottimizzazione del codice” è un'abitudine difficile da rompere, credetemi. Devo fare in modo di non preottimizzarmi. Almeno il suo comportamento in questo caso non è distruttivo, se non per il tempo impiegato. (Hai i numeri per la sua “metà del suo tempo” o è un'iperbole? Se stai criticando il tuo supervisore, nessuna iperbole può essere ammessa. Devi essere patologicamente obiettivo).)
Scrive tutto l'SQL a mano, e rifiuta l'idea di un ORM.
Colpevole! Non capisco la paura della gente per l'SQL. Non capisco seppellire l'SQL, che è semplice, sotto strati di ORM che offusca. Non posso aiutarti qui :-D Ma per favore, scarica tutto il tuo SQL in un unico posto - non distribuirlo tutto nel tuo codice.
e due dei cinque sviluppatori non hanno mai usato l'SQL prima.
Questo è inaccettabile. Siamo nel 2016. Hanno bisogno di competenze.
Rifiuta i framework e le librerie di terze parti, considerando che è molto più facile scrivere roba da zero.
Non potrebbe essere più sbagliato. Dubito che la sua azienda sia così speciale che le sue utilità debbano essere scritte internamente. Avevamo alcuni sviluppatori che abbracciavano strumenti di terze parti - fino a quando non hanno fatto qualcosa che non piaceva allo sviluppo. Era una scusa per buttare via lo strumento e scrivere il proprio. Questo non fa altro che aumentare il carico di lavoro dello staff dello sviluppo, rallentandolo ulteriormente. Questo codice inutile è costoso da scrivere, testare, eseguire il debug e mantenere. Abbiamo speso così tanti soldi per -zero- benefici. Questi sviluppatori se ne sono andati.
Ha deciso di abbandonare tutte le librerie JavaScript e i framework ad eccezione di jQuery, sostenendo che quando ha iniziato a programmare in JavaScript quindici anni fa, non c'erano framework, e la vita era molto più facile.
Questo non è così chiaro. La ragione è che la vita era molto più facile 15 anni fa è che la domanda d'affari era molto più semplice. Ecco da dove è venuto il problema. Il web è stato inventato come sistema batch (compilare un modulo, inviarlo, ottenere una risposta, ripetere) e ora stiamo cercando di scrivere applicazioni web che si comportano come applicazioni desktop. La sua osservazione è giusta, le cose sono difficili ora. Ma non si rende conto del perché. La complessità degli strumenti è la risposta a una domanda di business più complicata. Così fa scelte sbagliate.
Stiamo usando AngularJS e sembra essere decente. Come tutti gli strumenti potenti, può essere usato per il bene o per il male.
Pensa che i dispositivi mobili (compresi i tablet) siano solo una montatura, quindi non c'è motivo di perdere tempo prezioso per garantire la compatibilità del sito con questi dispositivi e per fare un design reattivo. Il prodotto è un'applicazione web pubblica che non ci si aspetta che venga utilizzata molto dai dispositivi mobili.
Si sbaglia di nuovo. Non sono un'illusione. Sono qui per restare perché sono utili. Ma il business non ne ha bisogno. Non sviluppate cose di cui non avete bisogno. È costoso.
Il design reattivo, tuttavia, potrebbe essere molto interessante da avere per questa app,…
È così interessante che pagheresti personalmente per lo sviluppo? Se questa è una buona idea, dovreste essere in grado di vendere l'idea al proprietario. Altrimenti, non spendeteci un centesimo.
Chiede al team di smettere di usare internet (specialmente StackOverflow) e di affidarsi al cervello, alla documentazione offline (non sapevo nemmeno che Microsoft vendesse ancora CD MSDN!) e ai libri.
Si sbaglia. Internet è ottimo per questo. Se lo staff di Dev sta copiando da Stackoverflow senza capire come funziona il codice, allora anche loro si sbagliano. C'è tempo per la formazione e il miglioramento personale nel programma di sviluppo? È difficile non copiare-incollare roboticamente quando si è sempre sotto tiro.
Anche se ho informazioni limitate, ci sono molti problemi qui. Sembra che il proprietario non abbia ottenuto il codice che sta pagando così velocemente come si aspetta. Sembra che abbia sentito un sacco di scuse su cose di cui non gli importa nulla; è concentrato sul risultato. Se ho ragione, ha una ferita autoinflitta e l'ha riaperta più di una volta. Questo piombo è la soluzione del proprietario al problema che lo staff del Dev ha posto, e date le sue informazioni limitate, è comprensibile.
Scommetto anche che stai gestendo un negozio non agile e hai una definizione dei requisiti scadente che cambia con il vento. Non c'è uno strato di isolamento tra lo staff dello sviluppo e il proprietario. Ad eccezione di questo Lead.
Ora, cosa potete fare?
1) Istruire il lead che l'uso di test automatizzati e la gestione del codice è la strada da seguire. Potrebbe essere necessario del tempo per guadagnare credibilità con lui - probabilmente il proprietario gli ha detto che il personale è difettoso. Vedete se riuscite ad impedirgli di fare mandati radicali come “cancellare tutte quelle inutili stronzate di test e riutilizzare il server SVN”. Questo vi darà il tempo di mostrare il valore.
2) Continuare ad usare la gestione del codice a livello personale. Almeno così potrete recuperare dai vostri errori. Non ditegli che lo state facendo, ma non mentitegli nemmeno.
3) Continuate a eseguire test automatizzati (test unitari, se non altro) a livello personale. Come prima, non menzionatelo, ma non nascondeteglielo.
4) Lavorate con il Piombo per determinare quali sono i problemi effettivamente percepiti. Siate di mentalità aperta; scommetto che ci sono problemi reali con il personale. Lavorare con il piombo per affrontare i problemi, non i sintomi.
5) Discutere con il piombo vari argomenti di sviluppo, come i benefici della cascata e dell'agilità. Nessuno dei due è perfetto. Ponetegli domande come: “In quali circostanze i test automatizzati sarebbero utili”? Se dà una risposta dubbia, chiedetegli quanto le aziende di successo come Google sono riuscite a prosperare nonostante ciò.
Quindi potete vedere che sono tutto preso dal coinvolgimento del Lead e vedere dove sta la sua testa. Costruire la fiducia. Concordare su questioni e sintomi. Non è sempre facile, soprattutto quando senti che è come Godzilla e che sta facendo a pezzi il tuo lavoro.
C'è la possibilità che non riesca a scendere a compromessi. Schiaccerà i test automatizzati. La gestione del codice è per le persone disattente. My Way o l'Autostrada.
Se è arrivato a questo punto, però, sarà il momento di andarsene. Lavorare in un negozio senza strumenti, e intendo dire software e strumenti di ingegneria del software - non costruisce il vostro curriculum. Comincerete a marcire nello stesso modo in cui è marcio il Piombo. In questo caso, andate avanti.