Ci sono aziende serie che non usano il controllo delle versioni e l'integrazione continua? Perché?


17

Un mio collega aveva l'impressione che il nostro reparto software fosse altamente avanzato, poiché utilizzavamo sia un server di build con integrazione continua, sia un software di controllo della versione. Questo non corrispondeva al mio punto di vista, poiché conosco solo una società che ha realizzato software serio e che non aveva nemmeno. Tuttavia, la mia esperienza è limitata a poche aziende.

Qualcuno conosce una vera azienda (più grande di 3 programmatori) , che è nel settore del software e non utilizza questi strumenti? Se esiste una società del genere, ci sono buone ragioni per non farlo?


3
Quei fastidiosi attori del software.
Corse di leggerezza con Monica

1
gli attori del software sono diversi dagli sviluppatori di software?
Aditya P,

"Non sono un software ma ne gioco uno in TV !!" - Attori software.
FrustratedWithFormsDesigner

1
C'è Jayne Seymour, è una seria attrice di software .... o almeno ha interpretato Solitare in Live and Let Die :)
Kevin D,

3
Dove ho lavorato dieci anni fa, abbiamo avuto build notturne su tutti i sistemi supportati. Non si sono mai avvicinati alla compilazione. Mai.
David Thornley,

Risposte:


5

Non sono sicuro che li chiameresti un atto serio, ma MySpace è piuttosto povero su questo fronte: vedi http://highscalability.com/blog/2011/3/25/did-the-microsoft-stack-kill- myspace.html .


1
+1 Sono almeno nella lega maggiore. Non pensavo fosse possibile. Un'azienda così grande senza controllo di versione. Vai a capire.
Daramarak,

Pazzo. Non ci avrei creduto, ma quel blog e i riferimenti dell'articolo sono tutti affidabili.
Steve

Dai la colpa al cane.
JeffO,

2
Un sito Web per adolescenti che iniziano una band in un garage è scritto nello stile di un programmatore che lavora dal loro garage. Figure.
quant_dev,

13

Saresti sorpreso di vedere cosa può fare la realtà al buon senso ;-)

Penso che ci siano ancora alcune aziende là fuori che non utilizzano un sistema di controllo della versione. È interessante notare che in tutti i casi che ho visto finora non è perché si oppongono volontariamente all'uso di tali sistemi, ma piuttosto perché non sanno che esiste qualcosa come SVN! Quanto a me: sono totalmente d'accordo con te e non posso immaginare una situazione in cui non voglio usare alcun tipo di controllo di versione. Inferno, sto persino spingendo i miei file personali (documenti word, ecc.) Sul mio PC di casa in un repository GIT.

Nel caso del sistema di integrazione continua è un po 'più comune non impiegarli nelle operazioni quotidiane. A volte anche perché le persone non sanno che tale sistema esiste ma ho anche visto casi in cui la scusa - molto discutibile - per non usarli è che "non siamo abbastanza complessi" o "funziona molto bene senza integrazione continua, allora perché preoccuparsi di aggiungere un'altra tecnologia? " Ovviamente ciò non regge una valutazione realistica, ma per rispondere alla domanda originale: non è poi così raro.


11
È possibile che uno sviluppatore software medio non abbia sentito parlare del software di controllo versione? Da dove vengono queste persone? Il lato oscuro della luna?
daramarak,

7
@daramarak: molti sviluppatori software (se non la maggior parte) non leggono libri, non sfogliano blog di sviluppo e non comunicano affatto con altri sviluppatori (al di fuori della loro azienda). Se entri nello sviluppo insegnando a te stesso con uno di quei libri "impara il visual basic in 21 giorni", è improbabile che tu abbia notizie del controllo della versione. In effetti, non ricordo di aver appreso il controllo delle versioni all'università, solo 10 anni fa.
Joeri Sebrechts,

@joeri - per fortuna non è vero dove lavoro, ma posso crederci in generale.
Steve,

@perdian - dici "un bel po 'di società" ma non dai dettagli ... hai collegamenti ad articoli, blog, ecc. Non sto dicendo che io non ti credo (in realtà io non credo), ma i dati è sempre bene ...
Steve

@Steve Haigh - No, non ho prove "difficili". Ho visto alcune aziende che non usano CI o il controllo della versione (i cui nomi terrò per me stesso g ) e con un po 'di estrapolazione suppongo che ci siano molti più "là fuori". Penso che sia un easiert molto per trovare le aziende che fanno uso CI, semplicemente guardando la lista di riferimento sulla pagina Jenkins per esempio. Ma viceversa? Non ci sono molte persone che pubblicizzano "Ehi, non usiamo la tecnologia X" ;-)
perdian,

12

Quasi tutte le società del mio settore (bancario) attualmente utilizzano il controllo delle versioni. Ma è certamente possibile sviluppare software con successo senza controllo della versione. 20-30 anni fa. abbiamo fatto esattamente questo.

Direi che molte banche, forse anche la maggioranza, non usano un server di build con integrazione continua. Se stai già fornendo software con successo senza integrazione continua, è perfettamente razionale continuare su questa strada.


3
Non sono d'accordo sul fatto che sia perfettamente razionale "continuare su questa strada". Sì, aver consegnato software negli ultimi X anni non significa che non funzionerà nei prossimi anni Y senza alcuna modifica. Tuttavia, dopo aver introdotto CI nei prodotti software esistenti (e abbastanza maturi) c'è sempre qualcosa da guadagnare da questo.
perdian,

1
@perdian: c'è sempre qualcosa da guadagnare da molte iniziative. Quindi devi bilanciare CI contro tutto il resto. Non puoi semplicemente affermare che CI ti offre più vantaggi di tutto il resto. Devi anche misurare i costi delle opportunità.
RoadWarrior,

1
@ SK-logic: RCS all'epoca era completamente sconosciuto nel settore bancario britannico. E abbiamo sviluppato alcuni sistemi molto grandi e robusti senza alcun controllo del codice sorgente.
RoadWarrior,

1
-1: "Quasi ogni azienda" è un'affermazione troppo ampia che è sbagliata. Ho visto l'anno scorso alcune aziende che non utilizzano alcun strumento di controllo della versione, basandosi sulle copie della versione su una directory condivisa. Sì, questo mi ha fatto piangere. Dissero che "svn è troppo difficile da usare". OH MIO DIO. Ma trovo ancora alcune aziende così. Non generalizzare, non tutti nel settore sanno cos'è un sistema di controllo del codice sorgente, né imparano nulla online, né sanno cos'è un'integrazione continua. (Sono d'accordo che è un inferno. Felice di non essere più lì).
Klaim,

1
@ SK-logic - ... quanto affermato da RoadWarrior, tranne nel settore navale / elettrico. Non darò nomi, ma conosco almeno due società che sono dominanti nel loro settore (qualche sviluppo di software specializzato) per le quali credo non abbia mai usato VCS di alcun tipo (nel tuo senso). Avevano i loro modi per distinguere il buon codice dal codice in corso d'opera.
Rook,

7

Giusto per mettere in evidenza la risposta di @ RoadWarrior:

Lavoro per una banca. Ho trascorso gli ultimi 3 anni a implementare il controllo della versione e ora sono riuscito a ottenerlo su circa il 20% della nostra base di codice (che è piuttosto grande, abbiamo circa 20 sviluppatori e abbiamo sviluppato i nostri sistemi per> 16 anni)

Attraverso i miei contatti nel settore (bancario), conosco un sacco di altri istituti finanziari che non hanno ciò che qualsiasi persona sana di mente chiamerebbe controllo di versione.

Sì, il nostro settore (sviluppo software) è molto più triste di quanto la maggior parte vorrebbe ammettere.


Le mie condoglianze. Sembra che almeno in alcune parti del settore manchino seriamente gli strumenti. Immagino sia di nuovo la storia dei bambini calzolai. Potrei chiedere quale persona pazza chiamerebbe il controllo della versione?
daramarak,

6
Presa manuale di una copia del codice prima di modificarlo. Ad esempio, MyProg -> MyProd.old4
Dan McGrath

Purtroppo questa pratica è più comune di quanto si pensi
Craig T

3

controllo versione: nel mio primo lavoro 25 anni fa non esisteva un sistema di controllo versione in quanto tale, ma questo era RSX11 su PDP-11s. Tuttavia, c'era un livello molto alto di controllo di qualità con revisioni formali di progettazione e codice (questo era nell'industria nucleare).

Da allora ogni lavoro ha utilizzato sistemi di controllo della versione, tra cui SCCS, PVC, clearcase, cvs e perforce.

Quindi, nella mia esperienza, l'uso del controllo di versione è praticamente universale nello sviluppo di software serio.

integrazione continua: questo è più un problema, specialmente in luoghi che hanno un sacco di codice legacy che probabilmente non ha nemmeno molto in termini di test automatizzati. Ci vuole un investimento molto grande per spostare il codice esistente in un ambiente CI e, sebbene alla fine probabilmente ripaghi, è difficile convincere la direzione a impegnarsi in un investimento del genere senza guadagno a breve termine.

Ho lavorato in un unico posto (una grande banca) che disponeva di CI per alcuni progetti e sul nostro progetto abbiamo implementato un tipo di sistema di CI che ha reso le cose molto più facili, ma ci sono voluti circa 6 mesi.


Per i luoghi con codice legacy, hanno fatto build automatiche o avevano un piano di costruzione / distribuzione manuale?
daramarak,

3

Immagino che la maggior parte delle aziende non usa queste cose, perché non capiscono i vantaggi e i loro sviluppatori non vogliono imparare o hanno paura di "mescolare il piatto" facendo cose diverse da come sono state fatto prima.


3
Assolutamente! Ho sentito la risposta (o forse dovremmo chiamarla scusa zoppa) "non l'abbiamo usata finora e dato che ha funzionato (in qualche modo) non ne abbiamo bisogno". È un peccato quanto le persone resilienti siano contrarie al cambiamento dei loro strumenti.
perdian,

1
Non sopporto le persone così; purtroppo questo è il tipo di "sviluppatore" che ho incontrato troppo spesso nella mia carriera, e non riesco proprio a gestire la loro ignoranza e cerco sempre di lasciare un'azienda in cui prevalgono questi tipi di sviluppatori. A rischio di sembrare decisamente ostili, quel tipo di persone è un cancro in questa professione.
Wayne Molina,

2

Anche se ora sono un dipendente, ero un lavoratore autonomo come consulente di database. Durante quei tanti, molti anni, mi trovavo in qualche luogo tra le 800 e le 1000 aziende, dal livello mamma-e-pop ai Fortune 100.

Ho visto relativamente pochi posti che hanno fatto un'integrazione continua, ma non ricordo di aver mai visto un'azienda che non utilizzava il controllo delle versioni. Ne ho visti alcuni in cui non esisteva un repository centralizzato per il codice controllato dalla versione. I singoli programmatori utilizzavano il controllo della versione sul proprio computer o mantenevano il codice controllato dalla versione da qualche parte sotto la loro home directory sul server.

Non credo che nessuna di queste aziende fosse nel settore del software, ma i loro programmatori lo erano sicuramente.


1

Un mio collega aveva l'impressione che il nostro reparto software fosse altamente avanzato poiché utilizzavamo sia un server di build con integrazione continua, sia un software di controllo della versione.

No, odio dirlo, ma questo è vero. Negli ultimi due posti in cui ho lavorato (una divisione di una banca e una società finanziaria), sono stato io a implementare il sistema di controllo della versione. Un certo numero di luoghi (in particolare i negozi non software) non capiscono perché sia ​​davvero necessario per lo sviluppo a lungo termine. La squadra normalmente inizia come una o due persone e poi cresce da lì, anche se dolorosamente. Con una o due persone puoi cavartela (non bene) senza di essa perché puoi essere in comunicazione quasi costante l'una con l'altra.

La generazione continua è un caso completamente diverso. Se dovessi indovinare, scommetterei che quasi il 90% dei luoghi in cui viene svolto lo sviluppo non dispone di una soluzione CI. Vado a conferenze e la maggior parte delle persone è sorpresa che un'organizzazione diversa da uno Stato membro o da Google ce l'abbia. Quello che ho scoperto è che il management non vuole spendere la piccola somma di denaro per farlo funzionare, anche se può risparmiare molto tempo.

I principali motivi che ho trovato per questo sono:

  1. Le persone nella direzione sono salite di livello nella stessa organizzazione. Non hanno mai usato e non ne hanno avuto bisogno, perché dovrebbero cambiare adesso? Alcuni che ho trovato hanno solo paura del cambiamento. Qualcosa di nuovo fa paura, e impedirebbe loro di rispolverare il vecchio compilatore e aiuterebbe i più piccoli in caso di necessità. Altre volte (e più spesso), hanno budget che sono sempre limitati e devono prendere decisioni su dove spendere soldi. Per noi l'implementazione di questi è un'esigenza ovvia, ma è perché li abbiamo già usati in precedenza. Conosciamo i benefici, loro no.

  2. I manager sono persone non IT e tutto ciò che qui è è che vuoi spendere soldi per qualcosa che non è stato necessario prima.

La maggior parte degli argomenti che ho sentito dalle persone si concentrano sulle migliori pratiche ecc. E quelle sono vere, ma ciò che la maggior parte degli sviluppatori non capisce è che devi inquadrare in termini di una situazione finanziaria in questo scenario. Con questa somma di denaro che stai per spendere, risparmieremo X quantità di tempo e avrai bisogno di numeri per eseguirne il backup. Questo non è sempre vero, ma è stata la mia esperienza in passato.


Posso immaginare che problemi come questo sorgano quando ci sono cattive comunicazioni dallo sviluppatore e verso l'alto nelle gestioni. Per fortuna non tutte le aziende sono così. Dove lavoro, ci aspettiamo (se non obbligati) di dire alla direzione se qualcosa potrebbe renderci più efficaci.
daramarak,

1

Direi che molte persone non usano il controllo del codice sorgente perché potrebbero codificare da sole e sono abituate a eseguire periodicamente il backup della base di codice su un server centrale o sul disco rigido USB. Mi sono costretto circa un anno fa a iniziare a utilizzare SVN perché sapevo che sarebbe stato utile a lungo termine. Ci è voluto un po 'di tempo per abituarmi, ma ora ho tonnellate di cronologia del codice a cui posso costantemente fare riferimento. Vorrei ora averlo implementato quattro anni fa quando ho iniziato.

Integrazione continua? Usalo solo se ne hai bisogno. Per me, ci sono solo due ingegneri del software, quindi non trarremmo beneficio dall'integrazione continua perché lavoriamo sul nostro software da soli.


1
Si suppone che l'integrazione continua identifichi gli errori quando si verificano. Anche due sviluppatori ne hanno bisogno.
Daramarak,

1
@daramarak: no se i due ingegneri lavorano in modo indipendente su due prodotti separati che non sono integrati.
Brian,

1
CI è una di quelle cose di cui sono disposto a fare a meno. Personalmente mi piacerebbe averlo nel mio lavoro, ma non accadrà presto. Abbiamo build automatiche 1-2 volte al giorno, e questo è davvero sufficiente per le nostre esigenze.
Michael K,

1
Con una build automatizzata sei a metà strada. Il solo fatto di sapere che a volte tutto ciò che è stato compilato può essere una gioia ("Si compila sulla mia macchina")
daramarak

1

Ah, pensi di essere avanzato perché hai SCM e un sistema CI? Lascia che ti dica che è l'ora amatoriale quando si tratta di esso.

Molte aziende fanno il minimo richiesto, perché è tutto ciò di cui ha davvero bisogno . Se funziona e ottieni buone versioni riproducibili senza grandi sforzi, non c'è nulla che debba essere riparato. L'ultima cosa che vuoi fare in tali circostanze è iniziare a "sistemare" le cose, specialmente quando si tratta di togliere le risorse di amministrazione dal loro lavoro per impostare e amministrare i tuoi nuovi server e costruire sistemi.

Tuttavia, alcune aziende richiedono sistemi un po 'più rigorosi, una volta che non solo eseguono la compilazione, ma controllano i requisiti fino alla distribuzione tramite piani di test e risultati dei test, prendendo in esame il codice, procedure di check-in in stile flusso di lavoro e gestione del pacchetto di lavoro designato dal team leader. Questa è la vera gestione della configurazione, ed essere dannatamente felice di non dover lavorare in quel tipo di ambiente!

Ho lavorato in alcune aziende e non riesco a pensare a nessuna che non avesse una qualche forma di SCM. Alcuni erano più completi di altri, ma tutti avevano un sistema che funzionava bene per loro, anche quelli che utilizzavano VSS.


lol! firmato: un professionista.
deadalnix,

Sono d'accordo, SCM e un inseguitore di bug è l'equivalente di sviluppo di indossare pantaloni per funzionare. CI è l'automazione di base di una funzione critica. Come i backup automatici ma per le versioni. Ah, riunioni del CCB. Ogni settimana, come un orologio.
Tim Williscroft,

1

Anche con due programmatori quando lavori su applicazioni complesse e un elenco di attività, può essere difficile non dare una martellata le modifiche reciproche.

Anche il nostro vecchio software di gestione delle versioni mostrava le modifiche fianco a fianco e permetteva di applicarle in entrambe le direzioni. I cambiamenti sarebbero stati persi in più di un'occasione senza di essa.

Vedo una serie di vantaggi che derivano da CI, ma non riesco a immaginare il motivo per cui qualsiasi azienda non farebbe uso del software di controllo della versione.


1

L'ultimo lavoro a cui ho lavorato senza controllo della versione è stato nel 2006 (sono uno sviluppatore Web, FWIW). La società aveva solo circa 2 o 3 sviluppatori prima di assumermi, ma io ero il primo di circa 10 sviluppatori assunti in un paio di mesi. Una delle prime cose che ho fatto quando assunto è stato introdurre il controllo della versione (CVS, perché non sapevo al momento quanto facesse schifo!), Ma molti degli sviluppatori assunti dopo di me non sono riusciti a farlo funzionare sui loro sviluppatori ambienti, quindi non l'ho usato. Oh, ho detto che non avevano nemmeno istanze locali dell'applicazione in esecuzione? Hanno hackerato il codice sul server. E nessun test automatizzato, ovviamente. Mi arrabbio quando ci ripenso.

Prima di allora, ho fatto alcuni lavori di programmazione AS / 400 senza controllo della versione. Non so se un VCS decente fosse disponibile anche per quell'ambiente.

Ora uso Git per tutti i miei progetti personali e anche i miei ultimi lavori lo hanno usato.

L'IC è una questione diversa. È fantastico e lo incoraggio, ma è meno essenziale del controllo di versione, almeno per progetti più piccoli in lingue interpretate. Tuttavia, la maggior parte dei miei lavori recenti ha avuto server CI; tra le altre cose, significa che nessuno può dimenticare di eseguire l'intera suite di test prima della distribuzione.


'CI è una questione diversa. È fantastico e lo incoraggio, ma è meno essenziale del controllo della versione, almeno per i progetti più piccoli in lingue interpretate ". Concordato. L'IC è davvero necessario solo quando si eseguono build frequenti e / o complesse e inizia a richiedere molto tempo, o quando si desidera eseguire una suite di test o si desidera poter mettere in scena più rami, ecc. Se è un progetto PHP con una dozzina di sviluppatori, nessuna suite di test e passi alla produzione una volta alla settimana, probabilmente ti consigliamo di concentrarti su un buon flusso di lavoro di controllo qualità prima di iniziare a preoccuparti di CI.
siliconrockstar,

E probabilmente vorrai concentrarti su una buona suite di test prima di iniziare a preoccuparti del QA o di qualsiasi altra cosa.
Marnen Laibow-Koser,

Forse in teoria, ma se si utilizza un software open source, a meno che non venga fornito con una suite di test, questo è praticamente impossibile. Una volta non ho lavorato a un progetto PHP con una copertura di test adeguata e completa, ma ogni progetto a cui ho lavorato ha avuto un certo livello di QA.
siliconrockstar,

@siliconrockstar Stavo parlando di avere una buona suite di test per il tuo codice; un livello adeguato di test per il codice della libreria è un'altra questione.
Marnen Laibow-Koser,

@siliconrockstar Per quello che vale, la maggior parte dei progetti Rails a cui ho lavorato hanno avuto un'eccellente copertura dei test degli sviluppatori (le eccezioni stavano attivamente cercando di migliorarlo); non tutti hanno avuto un controllo di qualità formale. È molto meno necessario avere un QA formale con buoni test, anche se è ancora un'ottima idea. Tuttavia, lo sviluppo senza test in atto è incredibilmente rischioso, quindi è per questo che dico che il miglioramento dei test dovrebbe essere prioritario rispetto a qualsiasi altra cosa.
Marnen Laibow-Koser,

0

Ne ho sicuramente incontrati alcuni qua e là, ma soprattutto piccole aziende. Il problema che vedo più frequentemente sono le aziende che in realtà hanno SCM, ma ritengono che molti progetti siano troppo piccoli o non importanti per poterli tracciare.

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.