È insolito per una piccola azienda (15 sviluppatori) non utilizzare il controllo di origine / versione gestito? [chiuso]


152

Non è davvero una domanda tecnica, ma ci sono molte altre domande qui sul controllo del codice sorgente e sulle migliori pratiche.

La società per cui lavoro (che rimarrà anonima) utilizza una condivisione di rete per ospitare il suo codice sorgente e il codice rilasciato. È responsabilità dello sviluppatore o del gestore spostare manualmente il codice sorgente nella cartella corretta a seconda che sia stato rilasciato, quale versione sia e altro. Abbiamo diversi fogli di calcolo sparsi ovunque in cui registriamo nomi e versioni dei file e cosa è cambiato, e alcuni team mettono anche i dettagli delle diverse versioni nella parte superiore di ogni file. Ogni squadra (2-3 squadre) sembra fare diversamente all'interno dell'azienda. Come puoi immaginare, è un disastro organizzato - organizzato, perché le "persone giuste" sanno dove si trovano le loro cose, ma un disastro perché è tutto diverso e si basa sul fatto che le persone ricordano cosa fare in qualsiasi momento.

Ho cercato di spingere per qualche tipo di controllo del codice sorgente gestito per un po ', ma non riesco a ottenere abbastanza supporto per esso all'interno dell'azienda. I miei argomenti principali sono:

  • Siamo attualmente vulnerabili; in qualsiasi momento qualcuno potrebbe dimenticare di fare una delle tante azioni di rilascio che dobbiamo fare, il che potrebbe significare che intere versioni non sono memorizzate correttamente. Se necessario, potrebbero essere necessarie ore o addirittura giorni per ricostruire una versione
  • Stiamo sviluppando nuove funzionalità insieme a correzioni di bug e spesso dobbiamo ritardare il rilascio dell'uno o dell'altro perché alcuni lavori non sono ancora stati completati. Dobbiamo anche costringere i clienti a prendere versioni che includono nuove funzionalità anche se vogliono solo una correzione di bug, perché c'è davvero solo una versione su cui stiamo tutti lavorando
  • Stiamo riscontrando problemi con Visual Studio perché più sviluppatori utilizzano gli stessi progetti contemporaneamente (non gli stessi file, ma continuano a causare problemi)
  • Ci sono solo 15 sviluppatori, ma facciamo tutti cose diversamente; non sarebbe meglio avere un approccio standard a livello aziendale che tutti dobbiamo seguire?

Le mie domande sono:

  1. È normale che un gruppo di queste dimensioni non abbia il controllo del codice sorgente?
  2. Finora mi sono state fornite solo vaghe ragioni per non avere il controllo del codice sorgente - quali ragioni suggeriresti potrebbero essere valide per non implementare il controllo del codice sorgente, date le informazioni di cui sopra?
  3. Ci sono altre ragioni per il controllo del codice sorgente che potrei aggiungere al mio arsenale?

Chiedo principalmente di avere un'idea del perché ho avuto così tanta resistenza, quindi per favore rispondi onestamente.

Darò la risposta alla persona che credo abbia adottato l'approccio più equilibrato e abbia risposto a tutte e tre le domande.

Grazie in anticipo


3
Sembra che non siano molto lontani dal lavorare con un DVCS come Mercurial. Le persone che trascinano i piedi potrebbero ancora "usare" Mercurial se la cartella esistente fosse effettivamente trasformata in un repository. Dal loro punto di vista sembrerebbe quasi lo stesso e, se non lo facessero, potresti commettere i cambiamenti.
John Fisher,

19
AGGIORNAMENTO (Quasi un anno dopo che ho posto questa domanda): Nel corso dell'ultimo anno, ho fatto una campagna elettorale, ho cercato e supplicato e sibilato fino a quando sono arrivato al punto in cui mi sono quasi fatto licenziare per insubordinazione alcune volte. Sono lieto di dire che la società in questione sta finalmente esaminando seriamente il controllo del codice sorgente, al fine di implementare TFS dopo un periodo di prova di circa un mese o giù di lì, mentre garantiamo che tutti gli sviluppatori siano soddisfatti dei nuovi processi. È stata in gran parte la risposta positiva che ho avuto da questa domanda ai programmatori.SE che mi ha dato la fiducia necessaria per perseguirla. Saluti.
oliver-clare,

10
Gli sviluppatori che non utilizzano il controllo del codice sorgente equivalgono a chirurghi che non si lavano le mani o utilizzano utensili sporchi per operare. È professionalmente incompetente e non ci sono scuse per questo tipo di negligenza.
Tim

1
Anche se l'elettricità è stata inventata molto tempo fa ed è pervasiva nella nostra vita di tutti i giorni alcune persone scelgono ancora di lavorare a lume di candela scribacchiando codice su una tavola cerata usando un bastoncino appuntito.
Newtopian,

2
15 sviluppatori non è certo un piccolo negozio.
Louis Kottmann,

Risposte:


108
  1. Potrebbe non essere normale , ma come dice Treb , probabilmente non è così insolito
  2. Come altri hanno già detto, non ci sono ragioni valide per non avere il controllo del codice sorgente in un'azienda delle tue dimensioni. Quindi è necessario identificare e attaccare i motivi non validi :

    a) quello principale è lo status quo : "se non è rotto, non aggiustarlo". Questo è difficile: potresti iniziare a sottolineare tutte le cose che non funzionano come dovrebbero (che possono rapidamente farti etichettare come una "persona negativa"), oppure aspettare semplicemente che scoppi qualcosa (che potrebbe mai accadere), oppure potresti enfatizzare tutte le cose che potrebbero andare storte. Purtroppo i responsabili delle piccole aziende sono relativamente impervi di "cose ​​che potrebbero andare male" fino a quando non si sbagliano davvero ...

    b) ignoranza / paura / incertezza : "non capiamo veramente quale sia il controllo del codice sorgente; non sappiamo come usarlo; non sappiamo quale strumento scegliere; sta per restringere il nostro stile" . Questo è uno dei motivi per cui sicuramente non li manderei qui! Potrebbe essere un ordine abbastanza alto per te da solo, ma penso che per massimizzare le tue possibilità devi presentare una soluzione "chiavi in ​​mano" e non troppe varianti o alternative. Hai bisogno di una chiara idea di: come vuoi adattare / trasformare il tuo processo di lavoro per lavorare con lo strumento dato; come / se si prevede di eseguire il back-port del codice esistente; quanto velocemente pensi di poter "addestrare" gli utenti e metterli in funzione; come è possibile gestire il periodo di transizione (se presente); quanto può "costare" (in ore, se non in dollari).

    c) potrebbero esserci altri motivi (ad esempio precedenti esperienze negative con VSS o aver letto "storie dell'orrore" su strumenti presumibilmente troppo complicati), ma dovrai scoprirli singolarmente quando li scopri.

  3. Vi sono molte ragioni per il controllo del codice sorgente delineate nelle altre risposte. Il mio consiglio sarebbe di scegliere i principali 2 o 3 che potrebbero davvero fare la differenza per la tua azienda, perfezionarli e presentarli in una riunione al maggior numero possibile di colleghi. Prova a provocare una discussione: anche se non li convincerai immediatamente, otterrai informazioni su quali potrebbero essere i punti critici.

(Hai letto / sentito parlare di The Change Function ?)


2
Grazie per la (purtroppo) neccessaria distinzione tra normale e insolito. +1
keppla

29
+1 per ignoranza / fud. Se sei uno sviluppatore di software professionale, non usi SCM, non lo sei. periodo.
Chris Thornton,

2
Solo per curiosità, chi pagherebbe $ 300 a persona per il controllo del codice sorgente (Valut, secondo il tuo link wiki), quando ci sono innumerevoli applicazioni gratuite?
Rob,

11
al punto 2: non vedo alcun motivo valido per un team di qualsiasi dimensione (includa un team di 1) per non utilizzare il controllo del codice sorgente ...?
James Khoury,

1
Un altro motivo per cui alcuni piccoli gruppi non hanno il controllo della versione - c'è un sovraccarico e l'apprendimento coinvolti nella configurazione. È necessario un server per ospitare la base di codice. È necessario amministrare il server e il software VC su quel server. È necessario eseguire il backup del database VC, creare e testare un piano di ripristino e monitorare i backup per assicurarsi che il backup / ripristino sia ancora valido. Tutta questa amministrazione richiede tempo. Nelle organizzazioni con una cattiva gestione del software, il tempo che gli sviluppatori impiegano per amministrare il sistema VC può essere punito piuttosto che premiato.
Jay Elston,

185

Non è assolutamente normale che un gruppo di quelle dimensioni funzioni senza il controllo del codice sorgente: il gruppo più grande di programmatori che può lavorare in modo efficace senza il controllo del codice sorgente è inferiore o uguale a uno. È assolutamente ingiustificabile lavorare senza controllo della versione per un team di professionisti di qualsiasi dimensione, e forse non mi sento creativo, ma non riesco a trovare alcun motivo per cui vorresti rinunciare.

Il controllo della versione è solo un altro strumento, particolarmente potente e che offre enormi vantaggi rispetto al suo costo minimo. Ti dà il potere di gestire con precisione tutte le tue modifiche in modo organizzato, con tutti i tipi di altre cose utili come la ramificazione, l'unione automatica, l'etichettatura e così via. Se hai bisogno di costruire una versione da mille versioni fa, puoi controllare il codice da quel momento in poi e costruire solo senza dover saltare altri cerchi.

Ancora più importante, se è necessario scrivere un bugfix, è possibile unirlo in un aggiornamento senza dover fornire le nuove funzionalità su cui si sta lavorando, perché si trovano su un altro ramo e per quanto riguarda il resto dello sviluppo preoccupati, non esistono ancora.

Stai vivendo resistenza perché stai sfidando la cultura dell'azienda. Ci vorrà del tempo per adattarsi, qualunque cosa tu dica. Il meglio che puoi fare è continuare a spingere per questo, e se la società non si muoverà davvero, trova un altro lavoro che sia più adatto al tuo livello di sviluppatore.


45
Purtroppo, ingiustificabile non equivale a insolito ...
Marjan Venema,

6
Per non parlare del fatto che esistono fornitori GRATUITI di controllo del codice sorgente, quindi non è come se fosse un corso d'azione costoso.
Mantorok,

9
Può essere costoso per indurre le persone a cambiare abitudini, flusso di lavoro e procedure.
user1936

4
@Rook: assolutamente. Ma preferirei avere una rete di sicurezza di cui non ho bisogno di quella di cui non ho bisogno. Stavo programmando molto prima di sapere cosa fosse un sistema di controllo della versione. Anche se non è una necessità, privarti di un buon strumento è stupido.
Jon Purdy,

12
Non potevo immaginare di sviluppare senza il controllo del codice sorgente anche quando sono l' unico sviluppatore.
webbiedave

34

È normale che un gruppo di queste dimensioni non abbia il controllo del codice sorgente?

Nella mia esperienza, non è la norma, ma non è del tutto insolito come suggeriscono altre risposte qui. La maggior parte delle piccole aziende utilizza il controllo del codice sorgente, ma sfortunatamente un numero significativo non lo fa.

Finora mi sono state fornite solo vaghe ragioni per non avere il controllo del codice sorgente - quali ragioni suggeriresti potrebbero essere valide per non implementare il controllo del codice sorgente, date le informazioni di cui sopra?

Vedi questa domanda su SO per una buona discussione. La risposta accettata dice:
"Non ci sono buoni motivi per non usare il controllo versione. Neanche uno."

Ci sono altre ragioni per il controllo del codice sorgente che potrei aggiungere al mio arsenale?

Il consenso tra tutti gli sviluppatori e i project manager che ho incontrato, e ovviamente qui su programmatori e SO è che il controllo del codice sorgente è un must. È una best practice accettata . Se qualcuno decide di ignorarlo, deve avere degli argomenti molto forti e convincenti sul perché questa è la decisione giusta per lui (cioè un po 'più di "non ne abbiamo mai avuto bisogno, quindi perché dovremmo averne bisogno in futuro"). Gli argomenti che hai presentato finora sono focalizzati su questioni specifiche, forse dovresti provare un approccio più ampio sulla falsariga di 'tutti lo fanno, quindi perché non lo facciamo anche noi?


"un numero significativo non" ... hmm ... con 15 sviluppatori sulla stessa base di codice? Dove sono io, abbiamo aggiunto SCC quando eravamo ... 5 + 2 sviluppatori sulla stessa base di codice e abbiamo pensato che fosse alta tempo per farlo. Spero davvero che 15 sviluppatori e nessun SCC sulla stessa base di codice siano molto insoliti :-)
Martin Ba

3
@ Martin: Non è che raro trovare 15 persone che hanno tutti soffrono per la non inventato qui la sindrome ... Direi che forse il 5% di tutte le piccole (20 dipendenti) <aziende non hanno alcun controllo del codice sorgente. Spero per te che la tua esperienza differisca dalla mia ;-)
Treb

+1 per non insolito, purtroppo.
Jonas,

6
+1 per non insolito. Alcune persone semplicemente non capiscono che i vantaggi del controllo del codice sorgente superano i costi. Temono il costo e si integrano copiando file o patch in uno spazio di lavoro di unione "centrale" per la "build"; principalmente perché è quello che hanno capito avrebbe funzionato, e nessuno investe nell'ambiente di sviluppo. In genere questo è dovuto alla percezione che hanno così tanto lavoro da fare sul codice, che non possono perdere tempo di sviluppo sull'ambiente. Trovo il tempo risparmiato con un ambiente più efficiente che ripaga dell'investimento di uno sviluppatore che ci sta lavorando
Edwin Buck,

27

Il controllo del codice sorgente è valido anche per un singolo team di sviluppatori. Qualsiasi sistema di controllo del codice sorgente è fondamentalmente un sistema di controllo della versione che tiene traccia delle modifiche. Immagina un singolo sviluppatore, che potrebbe aver rimosso del codice e ritiene che il codice sia ora richiesto. Può riavere il vecchio codice?

Scegli uno strumento che ti aiuti. Le dimensioni non contano ovunque. La qualità conta ovunque.


4
+1, sono attualmente un team di sviluppatori e utilizzo il controllo del codice sorgente. Uso persino il controllo del codice sorgente a casa per gestire documenti personali non correlati allo sviluppo di software, come ricette di cucina e curriculum.
maple_shaft

1
+1, Molti piccoli negozi iniziano a utilizzare i file zip come archivio. Pensando "Potrei tornare a questo punto, quindi comprenderò tutto". Non è lo stesso, per niente. Una volta che avrai acquisito familiarità con SCM e i fantastici strumenti che sono costruiti in cima (log, diff, biasimo, ecc.), Non tornerai mai indietro.
Chris Thornton,

5
Un altro grande uso di SCM: entro lunedì, mi chiedo che diamine stavo lavorando venerdì scorso. Faccio solo una diff o guardo l'ultimo registro di check-in e torno subito nella zona.
Chris Thornton,

1
Imagine of a single developer, who might have removed some code and feels that the code is now required. Can he get the old code back?Sì, utilizzo solo l'ultimo backup eseguito manualmente, alcune settimane fa, e eseguo backup ogni volta che voglio apportare una modifica sostanziale. Non mi ha ancora deluso da qualche anno e non ho mai avuto bisogno (o mi sentivo come se avrei dovuto usare) il controllo del codice sorgente ...
Mehrdad,

Sono l'unico che fa sviluppo presso la nostra azienda (faccio anche cose IT), e quando ho iniziato, non ho usato il controllo del codice sorgente, non c'è mai stato un disastro, ma alla fine ho capito quanto fossimo al limite. Ho installato Mercuarial un po 'più tardi, senza averlo mai usato prima e con l'interfaccia utente di Windows, è diventato un grande aiuto.
Tony Peterson,

17

Sembra che tu stia già utilizzando un sistema di controllo della versione, ma non molto valido. Le persone sembrano già riconoscere la necessità del controllo della versione. Devi solo introdurli al livello successivo: il controllo della versione del software.

Se fossi in me, introdurrei SCM come una versione migliorata di ciò che stanno già facendo. Vorrei sottolineare come l'uso di un buon strumento automatizzerà gran parte del lavoro già in corso.

  • Invece di registrare le modifiche in un foglio di calcolo, il sistema SCM tiene traccia non solo di ciò che è cambiato, ma di chi è stato modificato e del perché.

  • Come bonus, puoi tornare a qualsiasi punto della vita del codice e vedere cosa c'era effettivamente lì.

  • Invece di avere versioni diverse di codice in cartelle diverse e di dover spostare / unire le cose tra le cartelle per effettuare il port di una modifica, puoi tenere tutto nello stesso posto e (cosa ancora più importante), lasciare che lo strumento faccia l'unione.

Come altri hanno già detto, mi aspetterei un po 'di resistenza, quindi prototiperei il sistema usandolo sulle cose che sto facendo.

(A proposito, in realtà ho messo il mio curriculum e altri documenti sotto SVN. Poi di nuovo, mi hanno recitato più volte i ruoli di Configuration and Integration Manager.)


9

Finora mi sono state fornite solo vaghe ragioni per non avere il controllo del codice sorgente - quali ragioni suggeriresti potrebbero essere valide per non implementare il controllo del codice sorgente, date le informazioni di cui sopra?

  • Il prodotto che stai sviluppando è un sistema di controllo della versione; i manager sono preoccupati di impedire che i prodotti esistenti influenzino la progettazione e l'implementazione del nuovo prodotto.

  • Tra i fine settimana di BASE saltando e correndo con i tori, i manager in cerca di brivido si divertono a guidare al lavoro chiedendosi se tutto è ancora andato all'inferno.

  • Evita acquisizioni ostili. Chi vorrebbe acquisire un corredo di sviluppo software gestito in questo modo?

Ci sono altre ragioni per il controllo del codice sorgente che potrei aggiungere al mio arsenale?

  • Stai già eseguendo il controllo della versione, ma attualmente lo stai facendo nel modo meno efficiente, più laborioso e più soggetto a errori immaginabile. L'uso di un VCS consente di risparmiare denaro, risparmiare tempo e migliorare la qualità.

  • Risparmia spazio su disco. La maggior parte dei sistemi di controllo versione salva solo i delta tra i file. Attualmente, stai salvando un'intera copia di ogni versione di ogni file. (Il backup di tutte quelle copie deve richiedere molto tempo e spazio!)

  • Diversi sviluppatori possono lavorare sullo stesso file contemporaneamente e conciliare le differenze senza troppi problemi. Unire i cambiamenti è ovviamente possibile senza un VCS, ma è quasi impossibile tenere traccia di chi ha cambiato cosa, quando e perché in quel caso.

  • Offre agli sviluppatori la libertà di provare nuove idee sapendo che possono recuperare qualsiasi versione in qualsiasi momento.

  • Un processo migliore semplifica l'assunzione e il mantenimento di sviluppatori di talento.


1
Sul secondo punto, molti VCS salvano delta, ma Git salva l'intero file per ogni hash univoco del file. Ma in realtà non importa; lo spazio su disco è economico e il codice sorgente è minuscolo. gitready.com/beginner/2009/02/17/how-git-stores-your-data.html
James

8

È normale che un gruppo di queste dimensioni non abbia il controllo del codice sorgente?

No sicuramente no. Quando ho iniziato con la mia attuale azienda, c'era una persona a cui dovresti inviare il tuo codice modificato e lo avrebbe unito. Potrei convincere tutti in pochi giorni a usare SVN.

Finora mi sono state fornite solo vaghe ragioni per non avere il controllo del codice sorgente - quali ragioni suggeriresti potrebbero essere valide per non implementare il controllo del codice sorgente, date le informazioni di cui sopra?

Penso che il motivo per cui hai sentito solo vaghi motivi sia perché non ci sono motivi validi per non utilizzare il controllo versione.

Ci sono altre ragioni per il controllo del codice sorgente che potrei aggiungere al mio arsenale?

Sì, ci sono molte ragioni.

  1. La diramazione ti dà la possibilità di sviluppare nuove funzionalità senza interferire con altri sviluppi.
  2. Ogni commit ti fornisce le informazioni su cosa è stato esattamente cambiato, chi ha fatto quel cambiamento e quando è stato fatto quel cambiamento.
  3. Puoi facilmente commettere correzioni di bug e distribuirle ai clienti ed escludere la nuova funzionalità incompleta.
  4. Puoi mantenere versioni diverse, se i clienti hanno paura di passare a una versione più recente.
  5. Puoi lavorare sullo stesso progetto (anche gli stessi file sorgente!) Con facilità.
  6. Puoi facilmente ripristinare un errore, conservando le modifiche dopo quell'errore commesso.

"c'era una persona a cui dovresti inviare il tuo codice modificato e lo unirebbe" - Non suona così male. Molti progetti opensource funzionano in questo modo. Si inviano patch al manutentore. Ma questo non si scalerà ovviamente per grandi squadre.
Alex Jasmin,

6

Alcune persone hanno difficoltà a rendersi conto di quanto sia grave lo status quo fino a quando non vedono qualcosa di meglio per se stessi. Ciò di cui hai bisogno è una buona demo . Mostra alcuni esempi reali di attività che potrebbe migliorare. "Mi ci sono volute 4 ore per rintracciare il nostro sistema attuale, ma questo comando di controllo del codice sorgente mi ha detto all'istante."


Anche questo trarrebbe beneficio. Ho letto solo dei vantaggi del controllo del codice sorgente, ma non l'ho mai provato da solo. Ho pensato di installare SVN a casa (ma attualmente sto facendo la mia casa e non ho molto tempo ..!)
oliver-clare,

5

Non usare il controllo del codice sorgente è chiedere problemi, anche per uno sviluppatore solista. Il semplice fatto che puoi modificare spietatamente senza rischiare di perdere qualcosa compensa lo sforzo di apprendimento in settimane o giorni.

Detto questo, se non riesci a convincere i tuoi manager a introdurre il controllo del codice sorgente, fatti un favore e almeno usa qualcosa come git o mercurial localmente - se le cose esplodono a causa della mancanza di controllo del codice sorgente, almeno non sarai il uno che l'ha fatto.


4
sì, nessun motivo per non usarlo da soli, quindi per coincidenza mostra il suo potere a un collega quando meno se lo aspetta.
gtrak,

5

La mia azienda utilizza GIT per il controllo della versione. La compagnia è composta da uno sviluppatore, un amministratore delegato, una guardia giurata, una donna delle pulizie e un ricevente. Sono tutti io. Il controllo della versione di origine è DEVE sempre.



4

Eravamo in una posizione simile con un team di 6 persone alcuni anni fa. Uno degli sviluppatori ha fatto il passo dell'installazione di SVN su un server di sviluppo in cui si trovava la cartella condivisa e ha appena iniziato a usarla.

Tutti ne seguirono l'esempio e non passò molto tempo prima che implementassimo CI ( CruiseControl ) e rivoluzionammo il nostro processo di costruzione e rilascio includendo automazione e controlli di qualità.


4

WTF ?! Questa potrebbe essere la domanda più ridicola che abbia mai visto. Devi trovare un nuovo lavoro. 15 sviluppatori ?! Pensi che sia una piccola squadra? Questo è folle. Manager dovrebbe essere immediatamente terminato. Onestamente, avrò degli incubi dopo aver letto questa domanda. Ti preghiamo di comunicarci il prodotto che vendi, quindi sappiamo tutti di non acquistarlo! Non so cosa sia più spaventoso, questa domanda o le risposte dicendo che questo non è insolito!


3

Non riesco a immaginare come 15 sviluppatori possano lavorare senza alcun controllo del codice sorgente. Tuttavia, da:

(...) utilizza una condivisione di rete per ospitare il suo codice sorgente (...)

Suppongo che tu abbia creato il controllo della versione del tuo povero come VSS (anche basato sulla cartella condivisa). È rischioso e non efficiente.

Spiega al tuo capo quanto è brutto, investi in qualche training SVN o GIT di 2 giorni e inizia a utilizzare il sistema di controllo della versione reale mentre hai ancora il codice in una forma ragionevole.


2
Non sono sicuro che hai bisogno di due giorni per imparare SVN. Con 15 sviluppatori, non possono essere tutti "appena usciti dalla scuola". Sicuramente metà l'ha usato da qualche parte prima.
Michael Blackburn,

1
@MichaelBlackburn: sono d'accordo. Non mi sono chiarito. Stavo pensando a 2 giorni per l'allenamento e l'impostazione (installazione repository, codice di importazione, ecc.)
Michał Šrajer,

3

Se non mi impegno più volte al giorno, o almeno prima di partire per casa, mi sento come ... qualcosa che manca, qualcosa di sbagliato.

Una volta ho lavorato in un'azienda con solo 2 sviluppatori (io + un ragazzo con i capelli lunghi), nel 1998. Anche allora abbiamo usato svn. È così conveniente.

Diverse volte nella mia carriera ho perso un giorno di lavoro perché ho fatto qualcosa come mv invece di cp e poi rm -rf. Mi ha fatto piangere e vagare per le strade della città, disperato.

Ho lavorato in 5 aziende durante i miei 13 anni in SE, ho partecipato ad alcune conferenze e non ho mai incontrato un'azienda che non utilizzava il controllo delle versioni.

Tuttavia, la mia società di interior design preferita, 20 dipendenti, utilizza una lavagna bianca per la gestione del progetto + collaborazione. Sanno che è chiaramente sbagliato, ma non sembrano trovare il tempo per l'aggiornamento. In qualche modo funziona però. Non chiedermi come.


1
svnnon esisteva nel 1998.
Faheem Mitha,

3

Sii un leader. Essere un leader significa fare ciò che è giusto; risoluzione proattiva dei problemi. La leadership non sta facendo nulla perché non c'è abbastanza consenso. E un buon leader impara a riconoscere le situazioni in cui si dovrebbe creare consenso e quando farlo. Questa è chiaramente una situazione positiva. La mancanza di controllo del codice esploderà in faccia prima o poi.

I leader spesso non ricoprono posizioni dirigenziali ufficiali. Le persone seguiranno leader buoni e decisi indipendentemente dal titolo.

Se i tuoi sforzi decisivi vengono bloccati, soprattutto se provengono dalla direzione, allora è un chiaro segno per te di andartene da lì. È un freno per il tuo sviluppo professionale; e gli sviluppatori competenti e la gestione incompetente non si mescolano e un incompetente con il potere ti rovinerà.

OK, i flashback mi stanno arrivando. Firmando. In bocca al lupo.


Grazie compagno. Mi piace la definizione di "fare la cosa giusta", che differisce dalla definizione di "fare le cose nel modo giusto". Cioè il manager sta facendo quello che sta facendo nel modo giusto, ma potrebbe non essere la cosa giusta da fare. Il leader fa la cosa giusta, ma spesso ha bisogno di un manager per farlo bene. Vale sicuramente un +1 :)
oliver-clare il

2
  1. Ottieni un cronometro,
    • Conta il tempo speso nel foglio di calcolo solo per sincronizzare le versioni
    • Conta il tempo impiegato a riparare le versioni non funzionanti
    • conta il numero di volte che le persone gridano nel corridoio " sto modificando main.c !, solo per assicurarmi che nessun altro sia in questo momento!" .
    • contare il numero di reclami ricevuti dai clienti perché la loro correzione di bug conteneva altre modifiche
    • contare il ritardo del rilascio solo perché non è stato possibile sincronizzare le versioni
  2. Crea un powerpoint con questi dati, confronta con come funzionerebbe vcs.
  3. Mostra gestione

2

Questo è solo un incidente in attesa di accadere. Non hai una cronologia del codice e in un attimo uno dei tuoi sviluppatori potrebbe cancellare mesi di lavoro. Come piccola azienda non puoi permetterti questo tipo di battute d'arresto.

Sei anche molto esposto su quell'unità di condivisione. Anche con un buon backup, per quanto tempo puoi permetterti di non funzionare. 1 ora, 1 giorno, 1 settimana. Quanto tempo ci vorrebbe per installare un nuovo server, ripristinarlo dal backup, ecc. Ancora una volta, come piccola azienda, probabilmente non hai hardware aggiuntivo in standby e potresti non essere in grado di far cadere facilmente i soldi per ottenere spedizioni rapide ecc.

Pensa anche allo storage fuori sede. Un'alluvione o un incendio non è poi così insolito. Cosa accadrebbe se ci fosse un incendio nell'edificio dopo ore. Quanti mesi di lavoro andrebbero persi. Un repository di codice gestito come github sarebbe utile per questo. Anche l'utilizzo di un semplice server SVN su un servizio ospitato sarebbe un passo avanti in quest'area.


2

LordScree, sono in una situazione quasi identica a te, il mio team immediato è composto da circa 15 sviluppatori. Sono incredulo (quasi horror) che il controllo del codice sorgente non venga utilizzato. La mia risposta iniziale a "dovremmo usare il controllo del codice sorgente" è stata "non abbiamo tempo di implementare". Per me, come indossare biancheria intima, il controllo del codice sorgente non è facoltativo. Dopo alcuni mesi, anch'io ho l'approvazione per implementare TFS, scelto dall'organizzazione perché è MS e viene fornito con una prova di 90 giorni. In conclusione, è molto difficile convincere un'organizzazione della necessità del controllo del codice sorgente quando si sono dileguati senza di essa. Dico agli sviluppatori che ogni volta che ti ritrovi a eseguire il backup dei file, in particolare con una data nel nome o nella directory del backup, è un esempio di quando metti qualcosa nel controllo del codice sorgente. Io non Non ho risposte brillanti per te, ma credo che questo sia raro. Sto combattendo la stessa battaglia e ti terrò aggiornato sui progressi. E, si spera, ci saranno progressi altrimenti potrei cercare altrove perché non posso lavorare nel caos!


Penso che il mio argomento più forte per il controllo del codice sorgente sia stato il rischio per l'azienda di non averlo. Un rilascio di un prodotto andato storto potrebbe costare l'orario di lavoro o addirittura i giorni di tempo per essere risolto, per non parlare del rapporto danneggiato con il cliente. Questo è un rischio reale senza controllo del codice sorgente gestito a causa del numero di passaggi manuali necessari per rilasciare il software e tenere traccia di cose come le versioni per ciascun cliente. Cerca di rendere il tuo approccio dal punto di vista aziendale, poiché i manager hanno maggiori probabilità di ascoltare questi argomenti piuttosto che semplicemente "tutti lo usano, quindi dovremmo essere".
oliver-clare,

Un altro fattore che ha contribuito è stato che l' accreditamento ISO 9001 che il mio posto di lavoro sta esaminando segna le aziende IT in calo per non avere il controllo del codice sorgente. L'accreditamento è utile per fare offerte per nuovi progetti e partenariati commerciali, in quanto è spesso cercato nei documenti di gara. Buona fortuna con la tua lotta!
oliver-clare,

1

abbiamo 3 membri del personale di sviluppo e utilizziamo il controllo del codice sorgente. Sui miei progetti personali ho uno sviluppatore e utilizzo il controllo del codice sorgente. Non è solo utile per la gestione del team, è utile per essere in grado di fare un lavoro sperimentale senza temere che tu stia distruggendo qualcosa.

Il modo più semplice per convincere il management? Ci sono meno rischi per il prodotto complessivo e aumenterà la produttività degli sviluppatori a lungo termine. Entrambi sono anche veri ed entrambi fanno appello ai manager.


1

Non è affatto uno scenario normale e penso che dovresti combattere duramente per ottenere questa configurazione nella tua azienda. Ha benefici di vasta portata e non ha senso realizzarlo quando ti avvicini al giorno del giudizio e non è la situazione che cade Se non è rotto, non aggiustarlo

Qualsiasi motivo per non implementarlo potrebbe essere solo una scusa per un cattivo lavoro o un errore in attesa di accadere.

Dì loro quanto è bello trovare l'app il 1 gennaio di quest'anno

che ne dici di ehi questa funzionalità è stata aggiunta a marzo, penso che dobbiamo espandere un po 'di più su questo.

Wow, questo bug 154256 è stato corretto in questo commit.

posso diramare l'app e inviare la distribuzione senza problemi ragazzi, potete continuare a lavorare.

Questo può continuare all'infinito ... (ricordati di aggiungere commenti sugli commit in seguito che verrebbero inseriti come un'altra domanda)


1

Uso il controllo della versione per i miei progetti personali e per i miei progetti di lavoro, in cui abbiamo più di 30-40 persone che lavorano contemporaneamente sullo stesso codice. Il controllo della versione ha i suoi vantaggi organizzativi, ma la possibilità di ripristinare file e riporre le modifiche può davvero eliminare il mal di testa dalla gestione del codice ... e alla fine questo è lo scenario migliore per un programmatore, quindi possono concentrarsi solo sulla codifica.


1

I motivi per cui non si utilizza il controllo versione sono abbastanza limitati. Tutto quello a cui riesco a pensare è l'aspetto tecnico delle cose.

  • C'è troppo di una curva di apprendimento per convertire l'intero flusso di lavoro del personale per incorporare un sistema di controllo delle versioni per essere conveniente.
  • Il project manager non ritiene che sarebbe utile introdurre l'overhead nel flusso di lavoro di gestione e manutenzione di un repository. (Principalmente un problema con i vecchi sistemi di versioning)

Esistono molti motivi per utilizzare un sistema di controllo delle versioni. Per lo meno smetti di muovere le cose. Lavora con le patch. I sistemi di versioning possono fare esattamente quello che dici di fare.

  • Puoi lavorare alla versione successiva contemporaneamente a correzioni di bug e rilasciarle separatamente.
  • Invece di spostare i file da una posizione all'altra per lavorarci sopra, puoi creare un ramo e unirlo al master al completamento.
  • Ogni sviluppatore può avere la propria copia del codice sorgente per impedire che i problemi con lo stesso progetto si aprano su più macchine.
  • Gli incidenti accadono, se il codice viene gravemente violato tutto ciò che serve per eseguire il rollback all'ultimo numero di revisione funzionante.
  • Il controllo della versione funziona bene abbinato a bug tracker e sistemi di integrazione continua.

Personalmente, come team di una sola persona utilizzo il controllo delle versioni, il monitoraggio dei bug, l'integrazione continua, la revisione del codice, il controllo della coerenza del codice, il test dell'unità, i test del selenio, l'analisi del codice sorgente e potrebbero essercene altri che sto dimenticando. Lo ammetto, c'è una leggera curva di apprendimento. C'è anche un compromesso di tempo di amministrazione aggiuntivo necessario per i passaggi aggiuntivi che automatizzi. Nella mia esperienza, lo sforzo risparmiato supera i tempi di amministrazione aggiuntivi.


1

Nel mio primo lavoro serio nel 1990 ero l'unico sviluppatore che lavorava nel mio dipartimento e non sapevo usare il controllo del codice sorgente.

Poco dopo ho appreso, da allora in poi non ho mai visto un progetto che non lo rendesse una delle prime cose che hanno creato.

Ho quasi perso tutto il mio lavoro in quel lavoro perché ho eliminato una cartella al livello sbagliato. Fortunatamente avevo portato una copia a casa su un floppy da 5 "la settimana prima e sono stato in grado di ricreare le settimane di lavoro in pochi lunghi giorni.

Quindi immagino che lo riterrei accettabile se fosse il primo progetto per tutti i membri del team e nessuno lo sapesse meglio, ma se anche una sola persona potesse effettivamente spiegare i vantaggi e il team non ascolterebbe ancora, riclassificare il mio l'opinione del gruppo da "ingenua" a "pericolosamente incompetente" (la resistenza all'uso di uno strumento con tali benefici ampiamente dimostrati è quasi criminale - è come se la tua squadra non si fidasse dei "compilatori" e insistesse nel fare tutto in linguaggio assembly ).


1

L'ho incantato molto ... in piccole società di ingegneria / elettroniche dove fanno molto software / hardware incorporato.

In questi luoghi SCM non fa parte della cultura dell'ingegneria elettronica. Di solito hanno un ingegnere per progetto, che deve solo eseguire il backup dell'ultima versione.

Quindi ramificare / unire e persino condividere il codice è considerato irrilevante. Inoltre, queste società sono probabilmente ISO9000, quindi il processo, albiet strano, è probabilmente documentato.

In ogni caso I / altri sviluppatori hanno appena iniziato a utilizzare SCM personalmente.


0

Dove lavoro, abbiamo lo stesso problema. Attualmente sto cercando di far scorrere il controllo della sorgente in "under the radar" per aggirare gli stessi problemi che hai. Uso i fossili per i progetti che sviluppo personalmente.

Di recente ho installato un server fossile sulla LAN aziendale, quindi ora è ancora più conveniente. Spero che, quando dimostrerò l'utilità su alcuni progetti più piccoli, minerò la resistenza e ci allontaneremo dallo status quo delle cartelle di rete.

I motivi principali che ho sentito per non usare fossili o altri VCS sono:

  1. Molti dei "programmatori" sono kiddie di script e non capiranno come usarlo
  2. Coloro che potrebbero imparare, pensano che sia una seccatura da usare
  3. Queste persone sono la vecchia guardia, a proprio agio con le cartelle di rete, quindi tutti dovrebbero esserlo
  4. Nessuno ha il tempo di configurarlo nel modo giusto o imparare a usarlo
  5. Sebbene le funzionalità possano essere eccezionali, nessuna di esse è necessaria

Come puoi vedere, sto cercando di aggirare questi dimostrando che è semplice da usare, già configurato, facile da imparare e le funzionalità ne valgono la pena.

Infine, anche se non riesci a farli usare il controllo del codice sorgente, è tutto in un albero di rete. Fossil può eseguire la versione di tutto nell'intero albero e puoi configurarlo per l'esecuzione ogni volta che si verifica una modifica del file o almeno ogni ora. L'ho fatto per alcuni dei nostri progetti che "non avevano bisogno del controllo del codice sorgente" e alla fine mi hanno permesso di tornare a una buona versione quando qualcosa è andato storto.

Fallo nel modo giusto e non sapranno nemmeno che l'hai fatto. Quindi puoi essere l'eroe che ripristina la build rotta e dimostra quanto sia utile il tuo strumento.


0

Ora che strumenti DVCS come Git e Mercurial sono disponibili e incredibilmente facili da configurare e utilizzare, non c'è davvero alcuna scusa anche per una squadra di 1 (!) Non usare il controllo del codice sorgente. Non si tratta di dimensioni del team, si tratta di avere una cronologia commentata delle modifiche e la capacità di supportare flussi di lavoro come risolvere problemi di produzione mentre si lavora su una nuova versione e tenere traccia dello stato del codice sorgente per diverse versioni.

Se mi fosse offerto un lavoro in un team che era arrivato a quella dimensione, e nessuno degli sviluppatori mi aveva suggerito di usare un VCS, o se la "gestione" li avesse impediti, l'avrei rifiutato. Al momento non è un modo accettabile di lavorare.


Il controllo della versione era facile da configurare utilizzando Source Safe e SVN. Anche CVS. (Git NON è facile da configurare e utilizzare in un ambiente Windows)
Tim

0

Dovresti procurarti immediatamente un controllo della versione GIT. Puoi usarlo anche da Google Code Project Hosting. Quando gli altri ti vedono impegnare le modifiche in un solo clic mentre copiano manualmente le cose, forse cambiano idea.


Sono totalmente d'accordo. Il programma di installazione di Git è incredibilmente facile da usare e sei pronto per l'uso in pochi minuti. Le funzioni avanzate possono attendere, il controllo della versione di base non può attendere. cd topleveldirectory; git init; git add *; git commit -m "initial commit"
polvere

0

Wow solo Wow. Anche se non penso che sia il modo migliore per gestire il controllo del codice, non è del tutto insolito che abbia lavorato in un'azienda con 6 sviluppatori e non è stato utilizzato alcun controllo del codice sorgente, in qualche modo avevano il loro modo interno di gestire i file, un gestore delle versioni e ciò che non sovrintenderebbe a tutte le modifiche. In realtà il mantra era che si potevano aggiungere nuove funzionalità ai progetti purché una sorta di interruttore fosse avvolto attorno alla funzionalità.

Ad esempio, stavamo lavorando su un social network di livello ab scritto in PHP e il cliente desiderava che la funzionalità fosse in grado di iscriversi a un profilo utente. Fondamentalmente la funzionalità è stata racchiusa in un segno di spunta come questo se (ENABLE_SUBSCRIBE_FUNCTIONALITY == true) {quindi esegui il codice}

Il posto in cui ho lavorato non ha mai avuto più di uno sviluppatore alla volta che lavorava su un determinato file, per lo più tutto era modulare quindi in quel caso non era necessario il controllo del codice sorgente. Tuttavia, credo che i vantaggi del controllo del codice sorgente superino di gran lunga gli svantaggi di non averlo nella maggior parte dei casi.

Il fatto stesso che la tua azienda stia ricorrendo a fogli di calcolo che documentano le modifiche ai file e ciò che è stato cambiato quando qualcosa come Git o Subversion può gestirlo per te è assolutamente ridicolo.


0

Sembra che tu sia un po 'convinto, ma qualcuno nell'organizzazione non ti autorizza a farlo. Come puoi leggere dagli altri commenti, dovresti farlo.

Puoi trovare alcune informazioni qui: http://www.internetcontact.be/scm/?page_id=358

Il fattore più importante è che i tuoi clienti sono costretti all'ultima filiale "instabile" e se i tuoi contratti con i tuoi clienti ti rendono responsabile dell'implementazione di versioni instabili, la tua azienda sta perdendo denaro. Dovresti davvero concentrarti sulla stabilità di rilascio qui. Questo è il motivo principale per il controllo del codice sorgente e come sembra il tuo errore principale. Gli altri non saranno migliorati così tanto usando il controllo del codice sorgente in quanto disponi già di sistemi alternativi.

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.