Cosa si può fare quando "dare l'esempio" non funziona? [chiuso]


40

Lavoro per una grande azienda (8000+ dipendenti) da quasi 2 anni e sono stato assunto subito dopo aver finito il mio corso di studio.

Tutti qui hanno a che fare quotidianamente con il codice legacy che è spesso mal progettato e pieno di hack. All'inizio, ho mantenuto un profilo basso, cercando di non criticare troppo le cose. Ma la situazione, così com'è, è diventata molto difficile da convivere e sembra che nessuno sia disposto a migliorare / sostituire gli strumenti che usiamo.

Per essere più espliciti abbiamo:

  • Uno strumento di controllo del codice sorgente obsoleto (Visual SourceSafe)
  • Vecchi makefile semplici che supportano solo la ricostruzione completa
  • .def file che devono essere gestiti manualmente e separatamente per tutte le architetture esistenti
  • file e progetti di intestazioni monolitici con pochissimi file diversi (ma ognuno ha circa 3000 righe di codice, che a volte si occupa di compiti molto diversi)
  • nessun uso delle "nuove" strutture linguistiche (beh std::stringnon è così nuovo ma nessuno tranne me lo usa)

Ho deciso, qualche mese fa, di fare qualcosa al riguardo, progettando un nuovo ambiente di compilazione. Potrei ottenere build incrementali per lavorare in modo affidabile, tempi di compilazione più rapidi, progetti meglio strutturati, .defgenerazione automatica di file. Ho persino creato un bridge da / a Git a / da Visual SourceSafe.

Ho mostrato i miei risultati a diversi colleghi e al nostro capo, ma era come se a nessuno importasse. Erano tutti come "Beh ... le persone sono abituate a farlo in questo modo adesso. Perché dovremmo cambiare le cose?"

Le modifiche che ho suggerito sono state progettate in modo da consentire una transizione graduale dal vecchio sistema a quello nuovo. Ogni miglioramento potrebbe essere applicato separatamente e in sicurezza.

Ho anche cercato di coinvolgere alcuni dei miei colleghi nelle modifiche. Ma finora, nessun successo.

Hai già affrontato una situazione simile? Cosa si può fare quando "dare l'esempio" non funziona?


10
"Ho deciso, qualche mese fa, di fare qualcosa al riguardo," ... "Ho mostrato il risultato al mio capo". Sembra che tu abbia sbagliato l'ordine lì.

3
@ ThorbjørnRavnAndersen: Non sono sicuro di ottenerlo: come dovrei mostrare qualcosa che non ho ancora fatto? O forse volevi dire che avrei dovuto chiedere prima di farlo?
Il

21
Sono stato lì, e IMO, devi andartene, perché, come dice il proverbio, "un idiota ti batterà sempre - prima ti stupirà fino al suo livello e poi ti batterà con la sua esperienza ". Se le persone non riconoscono la necessità di aggiornare, questa è una stagnazione professionale e la stagnazione nel nostro campo è la morte. Puoi mettere le cose che hai fatto sul tuo CV e se sei bravo, probabilmente otterrai comunque un buon lavoro entro un mese.
TC1,

8
Vacca sacra, 8000 sviluppatori? Per chi lavori, Facebook? Google? Microsoft?
Kyralessa,

5
@Kyralessa: non penso che Facebook né Google utilizzino VSS.
Jake Berger,

Risposte:


46

Punta alla testa : "Dare l'esempio" dovrebbe avere in mente un miglioramento, ma dovrebbe essere mirato alle persone che non sono tecnologiche. Forse hai investito troppo tempo nel miglioramento della tecnologia, ma non abbastanza tempo in quello che succede nella loro testa. Pensa ai fattori trainanti per cui c'è un'opposizione per cose nuove. In molti casi temono solo dei rischi. Identificare quei rischi e trovare controargumenti per loro.

Prendi la carne fresca : è più facile conquistare i dipendenti che vogliono cambiare le cose. Li noti immediatamente quando li vedi.

Evita la carne marcia : alcuni non simpatizzeranno mai con le tue idee. Lasciali da parte.

Cresci fino a raggiungere una massa critica : trova persone che simpatizzano con le tue idee. Vinci l'uno per uno. Ad un certo punto se viene raggiunta una massa critica, sempre più persone seguiranno il tuo esempio volontariamente.

Vocabolario del management : i manager non sono interessati a progetti migliori. La loro lingua è denaro e tempo. Chiarisci quante ore uomo sono sprecate per i bug. Chiarire che i clienti insoddisfatti che incontrano bug non sono redditizi. Dimostrare quanto più velocemente è possibile implementare una nuova funzionalità. Devi scegliere un altro vocabolario per i manager.

Si tratta di processi : tecnologie migliori non rendono programmatori e programmi migliori. Se hai buoni processi in esecuzione, anche le tecnologie obsolete portano a buoni risultati. Pensa a dove fatica e tempo sono sprecati. Forse non è la tecnologia, ma qualcosa nei processi sta andando terribilmente storto. Nella maggior parte dei casi è una mancanza di comunicazione.

Trova una nuova azienda : hai già fatto molto. Puoi ancora provare a migliorare le cose, ma spetta anche a te decidere per quanto tempo vuoi provarlo e quanta energia vuoi investire. Ricorda: anche se non puoi ottenere molti miglioramenti, imparerai molto dai tuoi sforzi. Ad un certo punto devi andare avanti.


3
Relativo a "crescere massa critica": youtube.com/watch?v=V74AxCqOTvg
back2dos

2
@Farmor se non riesci a convincerli senza dire "vai a leggere una pagina web", forse sei tu quello che deve rispolverare le abilità comunicative.

1
Voglio dire se sono testardi e non ascoltano i giovani. Puoi fare il tuo punto facendo riferimento alla documentazione. Ad esempio, se dicono che i tuoi punti non sono corretti e quasi tutti gli esperti di versioning scrivono il tuo punto, saranno costretti a presentare. E mi piace stuzzicare l'arrogante, ad esempio se a loro piace Torvalds puoi dire che Torvals dice "Se ti piace SVN sei stupido e brutto" come ha fatto nel suo discorso su Google. Non capisco perché fare riferimento alla documentazione quando una persona testarda non crederà che sia la cosa sbagliata. Potresti persino farlo sul tuo telefono e mostrarlo subito.
Farmor

6
-1 per l'età. A volte devi ascoltare attentamente l '"esperto di fossili" e concederti un po' di umiltà. Quindi con le conoscenze acquisite rendi la tua idea ancora migliore. Mettere da parte gli altri solo perché sono vecchi è un modo sicuro per perdere prezioso know-how e il supporto di influenti sviluppatori senior.
Doug T.

1
@Lundin: i manager dovrebbero avere competenze tecniche, ma più si sale sulla scala più denaro e tempo diventano importanti. Non c'è nulla di sbagliato in questo, perché qualcuno deve tenere traccia degli aspetti commerciali di un'azienda. È fondamentale dare ai manager le giuste argomentazioni nelle loro mani in modo che possano giustificare le loro decisioni ai loro manager. Come sviluppatore puoi conquistare un manager se gli offri gli argomenti giusti.
Theo Lenndorff,

30

Ti sei mai fermato a considerare che potresti avere torto?

Quindi leggi alcuni libri di disegni e modelli a scuola e non hai diritto a quelle che sembrano pratiche relativamente antiquate in cui lavori. Senza dubbio sono probabilmente idee migliori e nuovi progetti dovrebbero iniziare con questi in mente, ma sembra che tu sia a un livello completamente diverso.

Mandare gli sviluppatori è come cercare di radunare i gatti, che hanno intrinsecamente una propria mente e un modo preferito di fare le cose, sia giusto che no. Ho difficoltà a far rispettare le best practice e gestire un team di 2 sviluppatori, ma lavori per un'azienda con 8000.

Questo è un numero incredibilmente enorme. Anche un semplice cambiamento di processo che afferma che tutti gli sviluppatori devono pianificare le riunioni e il tempo fuori sede nel calendario pubblico diventa una politica estremamente complessa e difficile da implementare su tutta la linea. Ciò richiederebbe anche una spinta significativa da parte della direzione per assicurarsi che la politica sia accettata e adottata su tutta la linea.

Potresti non pensarlo, ma qualcosa di semplice come passare dal monolitico a più file di intestazione o spostare il controllo della versione da SourceSafe a Git richiede uno sforzo e un investimento enormi da parte di tutti i soggetti coinvolti. Richiederebbe:

  • Significativo supporto gestionale

  • Ampia accettazione dell'azienda

  • Investimento delle ore di incontro per tutti gli sviluppatori per informarli delle nuove iniziative (Le riunioni costano ore uomo, ore uomo costo denaro)

  • La formazione deve essere pianificata e stabilita per assicurarsi che anche gli sviluppatori più stupidi sappiano cosa stanno facendo

  • Anche ipotizzando un'ora di formazione, attraverso 8000 sviluppatori x € 50 / ora = € 400000 di costo di formazione. Questo è più denaro di quanto il mio unico team di sviluppo software venga preventivato in un anno intero per stipendio, software e hardware. Questo è un investimento eccezionale che stai proponendo.

Ma stai dicendo: "Pensa a tutto il tempo che potrebbe essere salvato aumentando la produttività". Giustamente, ma un investimento significativo è un rischio significativo, quindi è meglio essere sicuri che tu abbia ragione su questo prima di firmare. Se nessuno dei ragazzi senior ti sta sostenendo, non posso giustificare la spesa. Alla fine potremmo essere inefficienti, ma siamo coerenti e con 8000 sviluppatori in tutta l'azienda, la coerenza è la più importante.

Per fare ciò è necessario disconnettersi da più persone di livello senior ed è necessario trovare in modo accurato e oggettivo un modo per misurare il tempo perso dello sviluppatore verso l'inefficienza. Quel tempo equivale a dollari e solo dollari e politica ti aiuteranno a vincere questa battaglia.


4
Grazie. Ad essere sincero, all'inizio, quando sono arrivato, per alcune settimane sono stato tutto: "Che diavolo, questi ragazzi non ne hanno idea!" poi ho capito quanto mi sbagliavo su molti punti. Ma dopo due anni, sono abbastanza sicuro che alcuni processi possano essere migliorati e che possa risolvere molti dei reclami che ho sentito. Capisco che è anche una questione di opinione, ma se qualcuno venisse da me con la prova che sto facendo qualcosa di inefficiente, almeno ascolterei il ragazzo perché mi sta facendo un favore. Il mio dipartimento è composto solo da 40 persone e solo noi facciamo questo tipo di sviluppo.
Il

1
Sono sicuro che possono migliorare, ma come ho detto, è diverso per me cambiare i miei comportamenti e le mie pratiche per migliorare, piuttosto che addestrare e costringere 40 sviluppatori a farlo. Un manager non tecnico non ti ascolterà senza che persone senior politicamente importanti sostengano l'idea.
maple_shaft

Non è solo "le cose potrebbero essere fatte meglio?". La sostituzione di un repository di origine è un cambiamento enorme. ci sono grandi costi per effettuare il passaggio, non da ultimo la riqualificazione di tutto il personale. Quindi c'è il rischio. Sei sicuro al 100% che non ci saranno alcune funzionalità di cui il vecchio repository di codice sorgente ha bisogno, di cui non sei a conoscenza e che il nuovo non avrebbe?
DJClayworth,

@DJClayworth: il repository VSS viene utilizzato solo come sistema di archiviazione di base. Nessuno guarda mai la storia e di solito cancellano tutto prima di copiare di nuovo l'intera directory.
Il

1
@ereOn Ricorda che lavori per un'azienda e che un'azienda deve fare soldi, non codice. A meno che non sia un no profit. In ogni caso, il tuo valore principale per i tuoi clienti probabilmente non è "ti forniremo il codice con i makefile di compilazione più veloci del settore". Dovresti capire cosa conta per il tuo capo (es. Tagliare i costi) e poi calcolare i costi. Fattore di persone e costi degli strumenti.
Jasonk,

7

Quello che hai descritto non sembra "dare l'esempio" per me, sembra che tu abbia fatto una proposta e tu sia stato respinto. Per dare l'esempio devi mostrare alle persone che la tua strada è migliore. Tra i problemi che hai elencato ne vedo tre che puoi iniziare a utilizzare tu stesso le tue modifiche.

Vecchi makefile semplici che supportano solo la ricostruzione completa.

Crea i tuoi makefile localmente e mostra quanto più efficacemente sei in grado di lavorare con loro.

file e progetti di intestazioni monolitici con pochissimi file diversi (ma ognuno ha circa 3000 righe di codice, che a volte si occupa di compiti molto diversi)

Rompi quelli esistenti quando li tocchi (senza interrompere la generazione) o introduci file di intestazione più piccoli quando scrivi un nuovo codice. Quando le persone iniziano a lavorare con loro, si renderanno conto di non aver bisogno della duplicazione.

nessun uso delle "nuove" strutture linguistiche (bene std :: string non è così nuovo ma nessuno tranne me lo usa)

Continua a introdurre nuove funzionalità linguistiche ogni volta che tocchi il vecchio codice o introduci un nuovo codice. Assicurati di semplificare le cose. Non scoraggiarti da questo. Molti di noi sono pigri. Se vediamo che una nuova funzionalità linguistica semplifica le cose, la adotteremo.

Dopo alcuni mesi, se altri sviluppatori iniziano ad adottare i tuoi miglioramenti, puoi nuovamente rivolgerti al tuo capo su cambiamenti più radicali come l'aggiornamento del sistema di controllo del codice sorgente. Devi assicurarti che gli altri sviluppatori vedano il vantaggio, o non lo passeranno mai. Un modo per avvicinarsi potrebbe essere quello di suggerire di provare Git su un piccolo progetto su cui solo pochi sviluppatori sono attivi. In questo modo è possibile promuoverlo come una valutazione, non una transizione su vasta scala a un sistema sconosciuto.

Infine, se dopo diversi mesi di tentativi nessuno sembra interessato a migliorare il modo in cui le cose vengono fatte nella tua azienda, devi davvero considerare se è adatto a te.


5

Oltre a Lionel Barret (che concordo maggiormente), considera anche la possibile motivazione alla resistenza.

  • Valuta il costo del processo effettivo
  • Valuta il costo del processo in quanto sarà come il tuo

Ma anche:

  • Valutare il costo della modifica in termini di
    • Soldi da spendere per configurare il nuovo ambiente per chiunque
    • Tempo da dedicare alla formazione di tutti per abituarsi alla nuova modalità (potrebbe essere facile per te, ma non così facile per le persone che non sono consapevoli di ciò che stai facendo)
    • Tempo trascorso necessario per gestire la modifica in modo non distruttivo.

Ho un sospetto: quanti sono nella tua compagnia le persone come te in termini di età e cultura (io uomini "scuola" e "tipo di scuola")? Quante persone come te dovrebbero essere assunte nei prossimi 2/3 anni e quante andranno in pensione o cambieranno il loro ruolo nell'organizzazione?

Il mio sospetto è che tu sia in una posizione con non abbastanza forza per cambiare la compagnia. In quella situazione, o la compagnia ti cambierà o ti "espellerà" (nel senso che diventerà il tuo desiderio di andare via), se non sei in grado di aspettare più tempo.

Ma è possibile che la società stia valutando che i costi aggiuntivi che ti ho detto possono essere risparmiati permettendo che il processo di cambiamento avvenga spontaneamente aspettando che avvenga la sostituzione naturale delle persone. Sei solo all'inizio di un processo che non puoi vedere perché non ha nulla (ancora) dietro di te.


1
Le tue ipotesi sono esatte: sono davvero uno dei più giovani nel mio dipartimento. Alcuni sembrano rendersi conto che, nonostante la mia giovane età, ho delle conoscenze preziose. So e capisco che ho ancora molto da imparare (e credo che lo sarà fino al giorno in cui morirò), ma molti sembrano offesi da cose che non conoscono. Non voglio spingerli via o rubare il loro lavoro o altro: voglio solo migliorare le cose in modo che tutti possano lavorare / vivere meglio. Dovrò aspettare di essere più grande per ingrassare?
Il

1
@ereOn: la tua guida è così nobile, ogni persona sana di mente dovrebbe voler lavorare con te.
o0 '.

@ereOn: "Dovrò aspettare di essere più grande per guadagnare un po 'di peso?" Non necessariamente. L'età è un valore in termini di esperienza nella gestione della complessità. Non è un valore nel comprendere cose nuove (sono nuove per chiunque e non avere arretrati può essere un vantaggio). Non è un problema "personale". È un problema di "massa critica". Fino a quando le persone che desiderano il cambiamento saranno inferiori al 20% saranno soffocate. Se lo sono di più, la leadership diventa visibile (e non è una questione di età). Se un leader può raggiungere il 40% di una popolazione, la "cosa nuova" avrà la cittadinanza adeguata. Dal 60% il cambiamento è spontaneo.
Emilio Garavaglia,

3

A questo punto posso solo aggiungere un riferimento all'articolo Joel. Come fare le cose quando sei solo un grugnito . Le sezioni includono:

Strategia 1 Fallo e basta

Strategia 2 Sfrutta il potere del marketing virale

Strategia 3 Crea una tasca di eccellenza

Strategia 4 Neutralizza i Bozos

Strategia 5 Allontanati dalle interruzioni

Strategia 6 Diventa prezioso

Riassumerei l'articolo come "Il cambiamento deve iniziare con te".


2
Ho trovato GTDWYOG non molto utile. Secondo me, almeno il titolo è fuorviante: qualcuno che "è coinvolto nelle assunzioni" o ha la libertà di ignorare il resto del mondo mentre lavora in mensa non è un grugnito. Un grugnito è qualcuno che deve fare come detto, con poco o nessun controllo sulle circostanze in cui si trova. Nella mia esperienza, nonostante l'immagine idealistica dipinta qui su StackExchange, questo è il caso per la maggior parte degli sviluppatori. E per quelli, GTDWYOG è più una ricetta per essere licenziato per disobbedienza.
keppla,

1

Purtroppo le persone restano bloccate in una carreggiata e sviluppano la mentalità che "funziona, tutti lo usano bene, perché cambiarlo" E diventa esasperante.

Hai fatto la cosa giusta non solo lamentandoti, ma sviluppando una soluzione praticabile in sostituzione, ora hai solo bisogno di un buy-in.

Mostra il tuo manager di linea diretta (o lead tecnico). Se non sono interessati, hai qualcuno incaricato del controllo delle modifiche o dell'innovazione?

Potenzialmente, le tue idee e il tuo lavoro potrebbero essere ignorati e la situazione rimarrà così com'è.


2
ah, ma il numero di volte che ho sentito "permette di riscriverlo, sarà molto meglio e più fresco nella nuova tecnologia x" solo per scoprire che quello nuovo non era migliore del vecchio (e in molti casi peggiore). Abbastanza spesso, fino a quando non è necessario , è meglio non rompere qualcosa che funzioni.
gbjbaanb,

1

Devi dichiarare il tuo caso in modo che il tuo capo sia dalla tua parte. A proposito, questo tipo di cambiamento è proposto da un direttore tecnico o da un project manager, quindi dovrai impegnarti nel progetto. (Come percorso alternativo, puoi proporre un audit tecnico, è probabile che un estraneo dica le tue stesse cose ma avrà più peso.)

Finora, non vede la necessità di cambiare, sembra che i cosmetici cambino per lui: costoso senza evidenti benefici se non per soddisfare la fantasia di un dev. Per lui contano solo due cose: il flusso di denaro e una squadra stabile. La tecnologia è una scatola nera, se funziona, è abbastanza.

Per prima cosa, devi dimostrare che la configurazione attuale gli sta costando dei soldi. Qual è il costo / ora di uno sviluppatore e quante ore più veloci i tempi di compilazione gli farebbero risparmiare? Fai i conti. Inoltre, compilare articoli o testimonianze sui rischi dell'attuale pipeline di codici e mostrargli numeri spaventosi: "a causa di SourceSafe / Bad Coding Practices, la nostra azienda ha perso $ XXXK".

Secondo il team, il tuo capo potrebbe essere bloccato con vecchi programmatori scontrosi che non vogliono cambiare strada. Se viene stabilito il primo punto, è inoltre necessario proporre una soluzione a questo problema. Quanti siete ? Potrebbe essere interessante sottolineare che sarà difficile sostituire qualcuno perché l'attuale pipeline di codifica è bizantina. Devi proporre un piano per aggiornare il team. Impara le migliori pratiche del settore e verifica che stiano seguendo le nuove regole.

Infine, è necessario proporre un piano per modificare la base di codice, suddivisa in piccoli progetti, con pietre miliari e allocazione delle risorse. In effetti, ti stai vendendo come project manager e le modifiche sono obbligatorie per avere una pipeline di codice solida.


Grazie per i tuoi consigli. Il fatto è che la persona in carica sembra apprezzare moltissimo tutti i vecchi sviluppatori (perché alla fine ottengono il lavoro fatto e non contano le ore). Sento di avere pochissimo peso perché sono giovane. Diverse persone nel mio dipartimento vengono a chiedermi cose sulle buone pratiche, ma anche quando spiego le cose molto umilmente, a un certo punto non vogliono dimostrare di non sapere molto e cercano di difendere i loro vecchi modi.
Il

1

Lavori in un'organizzazione che crede di fare bene le cose, l'efficienza e l'innovazione portano al successo e alla redditività; o che il perseguimento delle entrate e la concentrazione sul mantenimento delle vendite sono gli inquilini del successo?

Le aziende che si comportano come stai descrivendo sono tecnologicamente radicate. In un mercato competitivo non sarebbero in grado di competere con un'azienda focalizzata su individui e innovazione.

Se sei la persona che dici di essere, allora lavora da qualche parte che onora e premia il tuo spirito. Alla fine, dopo anni di insediamento, inizierai a scendere a compromessi per la stessa filosofia che i tuoi superiori abbracciano. Vai a lavorare altrove (probabilmente un'organizzazione più piccola) che valorizza il duro lavoro, l'ispirazione, la creatività e il progresso.

Se non corri un rischio e lo farai presto, alla fine ti accontenterai e non sarai in grado di continuare a nutrire la tua curiosità e creatività perché è filosoficamente opposta al tuo attuale gruppo di pari.

L'eccellenza è un atteggiamento e una visione del mondo.

Sappi solo che questa esperienza ti ha dato l'intuizione di sapere cosa evitare, tieni d'occhio il compiacimento e il protezionismo in modo da poterlo rilevare presto.

Nella tua prossima intervista poni domande come "Che tipo di innovazioni provengono dai tuoi dipendenti", "Quali sono alcuni cambiamenti che derivano dalla creatività individuale?", "Quali talenti individuali posso portare a questo team?", "Cosa guida il successo delle tue organizzazioni ? "," In che modo la tua organizzazione abbraccia continuamente l'innovazione tecnologica? "... Le risposte a domande come questa sono estremamente significative. Molte organizzazioni non hanno visione o quelle che hanno creato la visione sono sparite e l'organizzazione è gestita da ragionieri. Se stai intervistando il direttore della tecnologia, chiedigli se vede l'organizzazione come una società tecnologica.


-1

Se non ti piace l'ambiente in cui stai lavorando, stai facendo un disservizio a te stesso. Devi essere circondato da persone che hanno interessi e obiettivi simili a quelli che fai professionalmente. So che a volte è più facile a dirsi che a farsi, ma la sensazione di guardare indietro di diversi anni e sentirsi come se avessi perso tempo è peggiore della paura di rischiare.

In alternativa, se vuoi sviluppare un sistema o un ambiente che utilizza tecnologie e / o metodologie specifiche, ti suggerisco di trovare un progetto al di fuori del lavoro a cui puoi contribuire. Per lo meno la varietà di lavorare su entrambi i sistemi soddisferà la necessità di qualcosa di diverso mentre trovi dove appartieni.

Mi sembra che tu sia un pesce fuor d'acqua. Vai a trovare il tuo corpo oceanico e nuota!

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.