È possibile che un buon programmatore non abbia mai usato il controllo della versione? [chiuso]


73

Sto cercando un programmatore esperto per aiutare a risolvere una situazione difficile.

Finora le interviste sono state sorprendentemente deludenti. Il miglior candidato finora è un programmatore di grande esperienza che non ha mai usato un software di controllo versione.

Il problema in sé potrebbe non essere troppo grave perché è qualcosa che può essere appreso in breve tempo.

Ma c'è un aspetto più profondo, che mi preoccupa:

Come è possibile sviluppare attivamente software per 10-15 anni senza mai aver bisogno del controllo della versione?

Il fatto stesso di non cercare una soluzione al problema di tracciare i cambiamenti è un segno di un atteggiamento sbagliato nei confronti della programmazione?


25
Chi dice che non aveva bisogno del controllo della versione? Ne aveva bisogno e immagino lo abbia fatto manualmente. Detto questo, un programmatore che fa questo sembra essere molto resistente contro l'apprendimento di qualcosa di nuovo - sii preparato per questo.
Doc Brown,

6
@ e-MEE dipende, potresti imparare l'aggiornamento / risolvere / eseguire il commit in 30-60 minuti ma nessuno impara come funziona un (d) vcs in un'ora. La maggior parte delle persone che lo usano da anni ancora non lo capiscono davvero.
atamanroman,

3
@ConradFrix Carrot Cake :)
Chad Harrison,

7
È possibile che un buon programmatore non abbia mai usato il controllo della versione, se il calendario dice che oggi è il 1981.
Kaz

7
Sembra un classico caso di qualcuno che non ha 10 anni di esperienza, ma piuttosto 1 anno di esperienza ripetuta 10 volte.
Jeanne Pindar,

Risposte:


90

Ho lavorato per circa 11 anni in aziende che non utilizzavano il controllo del codice sorgente. Siamo riusciti (principalmente commentando le modifiche e conservando il codice su un server centrale che potrebbe essere recuperato in qualsiasi data). Non abbiamo mai veramente chiesto se esistesse un modo migliore. Detto questo, questo era anche nei giorni in cui avevo l'intera libreria MSDN in forma di libro sulla mia scrivania.

Sì, c'era programmazione prima di Internet.

Faccio fatica a vedere come puoi passare più di 10 anni nel settore ora senza aver avuto il controllo del codice sorgente. Ma avrei avuto un po 'di simpatia, avrei creduto che fosse possibile e non avrei rifiutato il candidato da solo. Vorrei sondare e scoprire come il candidato ha gestito questo.

In alternativa, potrei chiedermi se il mio processo di intervista fosse il problema. In che modo era il miglior candidato? Esistono altre tecniche di programmazione moderne che non possiede e per le quali non sto facendo le domande giuste? Se facessi le domande giuste, un altro candidato potrebbe brillare?

Come nota finale, però, non temere di rifiutare tutti i candidati in caso di dubbi. Ricominciare da capo, ma richiede più tempo assumere la persona sbagliata.


17
+1, è una risposta interessante. Tuttavia, non sono del tutto d'accordo con "a quei tempi, il controllo del codice sorgente costava bene" . RCS è in circolazione da 30 anni, CVS - 21 anni; Entrambi sono open source.
vartec,

8
+1: lavoro ancora qui . Quest'anno stiamo finalmente ottenendo il controllo del codice sorgente gestito (in gran parte a causa mia). Non credo che siamo tutti terribili sviluppatori a causa del fatto che non ce l'abbiamo fino ad ora, ma sono così dannatamente felice che arrivi
oliver-clare,

3
Se il candidato comprende i principi del controllo del codice sorgente, non vedo alcun problema. Uno sviluppatore esperto dovrebbe essere in grado di rilevare la "sintassi" di qualsiasi sistema utilizzi abbastanza rapidamente. Una domanda che vorrei porre: tutta questa esperienza in un sito? In tal caso, forse non aveva l'autorità per poter introdurre un sistema. Se la sua esperienza è stata con diverse aziende, approfondirei un po 'di più. Il numero di aziende, con team di sviluppo, che non utilizzano il controllo del codice sorgente deve essere minimo al giorno d'oggi.
BIDeveloper

4
+1 per il punto di porre le domande giuste. Mi chiedevo che cosa lo rendesse anche il miglior candidato.
shambulator

3
@Ramhound: e credi che quando esegui il controllo del codice sorgente manualmente hai bisogno di meno hardware e meno tempo per i backup? Per la mia esperienza, è vero il contrario.
Doc Brown,

49

Penso che dipenda dal suo atteggiamento. Se è un programmatore molto esperto e un buon programmatore, penso che sarebbe in grado di scegliere rapidamente un sistema di controllo della versione. Potrebbe parlarne in due modi:

  • Buono

    Non ho mai usato il controllo delle versioni, ma sono molto entusiasta di apprendere e sembra che contribuirebbe davvero a rendere lo sviluppo più efficiente. Non ne ho avuto bisogno tanto perché ho lavorato su progetti da solo.

  • Male

    Il controllo della versione è solo una parola d'ordine che sta lentamente morendo nel settore. Sono al di sopra del controllo della versione.


17
Concordo sul fatto che avrebbe potuto essere valido 10 anni fa, ma al giorno d'oggi? Direi non "buono / cattivo" ma "cattivo / orribile"
vartec il

24
Anche se lavori da solo, utilizzare un VCS è estremamente prezioso. Dopo aver fatto passare un progetto da "sta quasi funzionando" a non farlo funzionare di nuovo correttamente, e non avendo alcun modo di tornare alla versione "quasi funzionante", ho promesso di mettere tutto in un VCS, non importa quanto piccolo fosse il progetto .
alroc,

11
"Sono molto entusiasta di apprendere" - Questo non è un prodotto commerciale costoso come Coherence. Il controllo del codice sorgente è qualcosa che chiunque può conoscere. Se leggi qualche blog sullo sviluppo del software, dovresti esserne consapevole.
Andy Boot

7
+1 per questa risposta. Non è il segno di un buon programmatore che ha tutte le abilità. È che lui / lei può acquisire qualsiasi abilità richiesta.
Steven,

2
@Steven: No. Niente affatto. In base a tale logica, un bambino di 8 anni potrebbe essere assunto perché potrebbe acquisire la programmazione. IMO ci sono, o dovrebbero esserci, le competenze di base necessarie per essere considerate un programmatore. La competenza in un linguaggio di programmazione è una, la conoscenza e l'uso di qualsiasi VCS è un'altra. Ci sono più.
Steven Evers,

34

Lascia che ti dia una prospettiva dal fare lo sviluppo del software in DOS e Windows per oltre 20 anni.

Il software di controllo della versione nel mondo Windows / PC era spesso inaffidabile all'inizio della metà degli anni '90. Visual Sourcesafe (VSS) era il migliore basato su Windows in circolazione, ma poteva essere bizzarro e molti programmatori lo odiavano. Alcuni team semplicemente non si divertirebbero dopo aver affrontato questa situazione.

La maggior parte delle altre opzioni VCS al momento non erano basate su Windows e, pertanto, venivano utilizzate raramente nei team di sviluppo di Windows. Alcune di queste erano soluzioni costose e le soluzioni open source non erano accettate così prontamente come lo sono oggi.

In molti casi, alla fine degli anni '90, all'inizio degli anni 00, se un team di Windows non utilizzava VSS, non utilizzava nulla per il controllo del codice sorgente oltre alle convenzioni interne. Alcuni di loro non usano ancora un VCS nonostante la raffinatezza di Team Foundation Server (TFS) e ottime opzioni gratuite come git e SVN.

È possibile che qualcuno che ha lavorato per anni in un piccolo team di sviluppo di Windows per anni non abbia usato un VCS. Ho intervistato e persino svolto lavori su contratto in alcuni luoghi che non li usavano o che erano molto casuali sul loro uso.

Quindi, non credo che la mancanza di esperienza del candidato in questo settore sia un "no" definito, ma probabilmente vorrai approfondire la sua precedente situazione lavorativa per scoprire perché questo non è presente nella sua esperienza. Ti consigliamo anche di esplorare il loro atteggiamento nei confronti del controllo delle versioni. Pensano che sia una buona idea ma non sono stati autorizzati a perseguirla nella loro posizione precedente o pensano che sia una perdita di tempo?


18
VSS non era "eccentrico" - era semplicemente pessimo. I repository danneggiati e la perdita di dati erano comuni, ma potresti non scoprirlo per settimane o mesi dopo che si è verificato il problema, a meno che tu non abbia eseguito un controllo di integrità giornaliero (e buona fortuna recuperando da esso anche allora). Il blocco e la condivisione dei file erano atroci. I programmatori lo odiavano perché rendevano la loro vita un inferno - l'esatto contrario di ciò che un VCS dovrebbe fare.
alroc,

@alroc - Che ci crediate o no, c'erano alcuni meno affidabili e più eccentrici là fuori. Ho avuto la sfortuna di usarne uno intorno al 1995. Non ho mai avuto problemi seri con l'affidabilità VSS ma ho sentito storie di guai da parte di altri. Conosco alcune organizzazioni che hanno smesso di usare qualsiasi VCS dopo brutte esperienze con VSS.
jfrankcarr,

UGGH, abbiamo provato il controllo del codice sorgente di Powerbuilder nel corso della giornata. Ci ha causato attivamente la perdita del codice sorgente. PB si arresterebbe in modo anomalo e qualsiasi check-out pbl diventasse inaccessibile a tutti gli altri. Che barzelletta.
GrandmasterB

Ho lavorato per 1,5 anni in un negozio che utilizzava Visual Source Safe. Uno dei migliori programmatori rovinerebbe il repository ogni volta che provava a controllare il suo codice al telefono (sì, era tempo fa). Uno dei miei sistemi VCS meno preferiti.
GlenPeterson,

Abbiamo usato tlib ( burtonsys.com/index.html ) in un lavoro in un ambiente DOS. Concesso questo era nel 2005, ma sembrava che lo stessero usando da un po '.
Doug T.

29

Non puoi avere il controllo versione senza software di controllo versione? Chiedi come hanno gestito il loro codice. Forse esisteva già un sistema di coltivazione domestica.

Volere fare le cose manualmente, reinventare la ruota e resistere al cambiamento non sono una novità per la programmazione. Stai per sbavare su un candidato che utilizza Visual Source Safe e "solo" VSS?

Quando cerchi di trovare un talento, devi essere in grado di distinguere tra: impossibile, non hai e non lo farai.


Prima di scoprire il controllo della versione e la sua utilità (l'ho scoperto dopo 2 anni di programmazione non professionale e hobbistica) non era raro avere cinque cartelle con "backup" delle pietre miliari del progetto: un VCS primitivo.
orlp

"Non posso, non ho, non lo farò e non gli era permesso"? Ho sentito parlare di luoghi che non avrebbero accettato di eseguire il controllo del codice sorgente perché a loro piaceva la giungla che era la loro unità di rete.
Filippo

19

Non ci sono scuse per non utilizzare il controllo versione, anche per un piccolo progetto sviluppato da un singolo sviluppatore. L'impostazione del controllo della versione locale è al di là di banale, con enormi vantaggi. Qualsiasi sviluppatore che non sa che non può essere considerato buono né esperto.

Per quanto riguarda le aziende che percepiscono il controllo di versione come "novità", che non sono disposti a introdurre:

  • SCCS è stato rilasciato nel 1972 ( 40 anni fa )
  • RCS è stato rilasciato nel 1982 ( 30 anni fa ) ed è completamente open source e gratuito
  • CVS è stato rilasciato nel 1990 ( 21 anni fa ), anche completamente open source e gratuito

20
Non sono sicuro che SVN sia il miglior esempio di installazione "oltre banale". Alcuni di quei file che devi modificare, direttamente nel repository, possono essere complicati. La configurazione di un DVCS locale è oltre banale. E configurare un account BitBucket / GitHub e clonare repository da esso non è molto più complicato
pdr

9
@vartec: Ciò che va oltre è banale git init. La pagina collegata potrebbe farmi scappare perché mi sembra abbastanza complicato.
maaartino

7
@vartec: Direi che git e hg sono più facili da capire da un neofita di VCS rispetto a qualcuno che usa VCS centralizzato da anni e più facile di CVCS per il novizio. Basta guardare la sezione Layout repository su quella pagina come se non l'avessi già capito. Quindi pensa "Ho un repository qui, voglio clonarlo qui".
pdr

8
@vartec: Hmm. Non posso essere d'accordo. Mi piace poter ramificare e clonare anche quando lavoro da solo. A volte ho idee. E a volte sono cattivi :).
pdr

4
Ho lavorato in aziende in cui la direzione ha respinto il controllo di versión. Non era un'opzione. E abbiamo fatto progetti interessanti e complessi. Non penso di essere il peggior sviluppatore per questo. A casa non lo uso neanche, finora, anche se ammetto di averlo considerato.
Picarus,

14

Un programmatore che non ha mai usato il controllo versione probabilmente non ha mai collaborato con altri programmatori. Probabilmente non prenderei mai in considerazione l'assunzione di un tale programmatore, indipendentemente da qualsiasi altra credenziale.


34
Non sono d'accordo. Non utilizzare il controllo del codice sorgente richiederebbe un livello molto più elevato di cooperazione con altri programmatori rispetto al normale. Potrei persino arrivare al punto di dire che se vieni da un ambiente in cui non esiste il controllo del codice sorgente, allora conosci davvero l'importanza della cooperazione
oliver-clare,

12
È un'affermazione gloriosamente ampia e palesemente falsa.
Murph,

3
Semplicemente non vorrei assumere un programmatore che non sappia usare strumenti moderni. Potrebbe sapere come scrivere un codice incredibilmente carino, ma considererei almeno una conoscenza di base del controllo della versione un requisito assoluto.
JesperE

6
Molte persone qui sembrano confondere non essere state esposte al VCS e rifiutarsi attivamente di usarlo nel loro nuovo lavoro. E se semplicemente non gli fosse mai capitato sul posto di lavoro precedente o fosse stato verboten dal management? Detto questo, questo sarebbe un problema critico se stavo facendo l'assunzione, e la loro volontà di imparare sarebbe un requisito difficile per me.
György Andrasek,

5
Spaventoso vedere così tante persone qui trovare effettivamente la mancanza di controllo del codice sorgente come qualcosa di normale o accettabile.
JesperE

12

Sembra una bandiera rossa, va bene, ma approfondisci il motivo per cui non l'ha usata. Mi aspetterei comunque che uno sviluppatore solista utilizzi il controllo delle versioni soprattutto tra dieci anni, ma me ne perdonerei di più che se stesse lavorando in una squadra e non provassi nemmeno a introdurre il controllo delle versioni.


6
+1: Sarei inorridito se fossi disoccupato semplicemente perché il mio attuale manager non ha visto l'importanza del controllo del codice sorgente. Almeno uso il controllo del codice sorgente per tutti i miei progetti personali, quindi non sarei totalmente fregato da questa situazione ...
Oliver-Clare,

2
@LordScree - Lavorare su un sito Web ad alto volume può essere difficile da fare da soli, ma puoi ancora imparare a usare il controllo del codice sorgente al di fuori del tuo lavoro.
JeffO,

9

Non sarei religioso riguardo alla mancanza di esperienza nel controllo delle versioni. È solo uno strumento. Alla fine, puoi raccogliere le basi di svn o git in un giorno o due. Il resto lo riprenderai con il tempo. E non posso credere che nessun candidato decente non sarebbe in grado di adattarsi se dovesse lavorare in un ambiente che utilizza il controllo del codice sorgente.

L'uso del controllo del codice sorgente è più un'abitudine che un'abilità. Qualcuno che non l'ha mai usato può esagerare lo sforzo richiesto e sottovalutare i benefici ottenuti. Dopotutto, ha fatto bene fino ad ora. Solo dopo aver effettivamente utilizzato il controllo del codice sorgente, lo apprezzerà.

La domanda che dovresti porre è: come è riuscito in assenza del controllo del codice sorgente? Questo potrebbe dirti qualcosa su di lui e su come gestisce il suo lavoro.


4
Sicuramente ho bisogno di scoprire come ha gestito gli aggiornamenti, le versioni, ecc. Senza controllo della versione
ChrisF

4

Lasci molte informazioni sulla sua esperienza.

Fondamentalmente, direi che è molto probabile che un programmatore possa avere 10-15 anni di esperienza senza dover conoscere il controllo della versione. La codifica per 10 anni non è uguale all'apprendimento costante di nuove tecniche di programmazione per 10 anni.

Sono molto giovane e ho visto ingegneri del software vecchi ed "esperti" il cui codice non avrei mai voluto toccare. Detto questo, potrebbe avere molto talento, ma immagino dalle poche informazioni fornite che non lo è.

In bocca al lupo.


4

Personalmente, la cosa più allarmante per me è che il candidato non ha mai incontrato i sistemi di controllo della versione come concetto o ha deciso che non vale la pena utilizzarlo. Trovo il primo scenario altamente improbabile, ma se è così, allora mi porta a supporre che il candidato sia stato significativamente isolato per la durata della sua carriera, il che metterebbe seriamente in dubbio il suo valore come parte di una squadra. In particolare, possono avere concetti molto bizzarri su come fare determinate cose e non conoscere il modo "giusto" di fare le cose.

Se è il secondo caso, in cui hanno attivamente deciso contro il controllo della versione, allora mi fa supporre che o non abbiano mai lavorato su qualcosa di significativo o siano estremamente arroganti. O, nella migliore delle ipotesi, hanno modi davvero terribili di mantenere il codice come commentare i blocchi e attribuire ogni riga di codice a un autore, una data e un numero di bug.


4

Vedo qui delle risposte piuttosto giudiziarie che in realtà non tengono conto della persona giudicata.

Personalmente trovo che il software di controllo versione sia uno strumento prezioso. Ma non tutti abbiamo scelta e controllo sugli strumenti e sui processi utilizzati nei nostri ambienti di lavoro. Lavoro nello sviluppo di Windows dal 1990. Come pubblicato da altri, a quel tempo non c'era molto disponibile per VCS in Windows. Non avremmo portato server UNIX solo per ottenere un VCS. Mi ha fatto diventare un cattivo programmatore? Più tardi nella mia carriera, ho lavorato per un'azienda con un prodotto commerciale sul mercato verticale in cui il controllo delle versioni era un processo non uno strumento. Mi ha fatto diventare un cattivo programmatore? I miei ultimi tre lavori si sono basati fortemente sugli strumenti VCS. Questo mi rende un buon programmatore?

Sarebbe bello se tutti potessimo usare solo gli strumenti, le lingue e le tecnologie più recenti e migliori. Ma la professione di sviluppo software non funziona sempre in questo modo. È un po 'idealistico dire "Vorrei lasciare immediatamente il lavoro, se non lo facessero ..." o "Non farei mai un lavoro che non usava ..." o "Li costringerei ad usare. .. ". Non siamo tutti circondati da una scorta infinita di opportunità di lavoro in cui tutto funziona esattamente come vogliamo. Abbiamo le bollette da pagare e abbiamo bisogno di un lavoro, quindi ci occupiamo di ciò che ci circonda.

Alla fine, la risposta alla tua domanda è questa: giudica questo programmatore in base alle sue capacità, alle sue filosofie e alle sue decisioni, non alle decisioni (forse errate) prese dalle persone incaricate nei suoi precedenti lavori.


4
Se hai lavorato con idioti solo per 15 anni e non hai fatto alcun open source intelligente sul lato, ciò probabilmente rifletterà sul tuo set di abilità e attitudine. Le persone sono modellate dai loro ambienti. Se così non fosse, perché dovremmo anche guardare alla storia occupazionale di qualcuno.
Kaz

@Kaz Osserviamo la loro storia occupazionale non per l'input dei loro collaboratori ma per il loro. Non posso giudicare qualcuno nell'area in cui sono cresciuti altrimenti potremmo iniziare a intervistare anche i vicini.
James Khoury,

Modellato dai nostri ambienti, sì, ma non siamo definiti dai nostri ambienti. Sto solo suggerendo che l'OP ha una visione completa del programmatore e non emette un giudizio aspro basato su un criterio.
cdkMoose,

4

Non mi sono mai considerato un "programmatore" fino a quando non ho iniziato a fare soldi facendolo professionalmente.

Ho guadagnato parecchi soldi creando sistemi che hanno reso i clienti ancora più soldi. Che io sia o meno uno sviluppatore "buono" è soggettivo.

Posso fare rapidamente GSD (Get Something Done), che di solito ha soddisfatto i miei clienti per lo sviluppo web. Potrebbero non vedere qualche brutto codice dietro le quinte, mancanza di commenti, ecc.

Non avevo usato Git e non avevo un profilo Github fino a quest'anno, che ritengo molto "indietro rispetto ai tempi" in termini di moderni standard di programmazione. Ho anche appena iniziato a fare progetti Rails e Django dopo aver fatto solo PHP, Flash e iOS in passato. Da allora ho ottenuto contratti per lo sviluppo di siti sia per i clienti che per me, non è stato troppo doloroso imparare qualcosa di nuovo a 30 anni e alcuni anni fuori dalla programmazione.

Troppo nella società moderna si concentra sul tenere il passo con i Jones e prendersi cura di ciò che pensano gli altri. Se riesci a rompere quelle catene e considerare ciò di cui hai bisogno per lo sviluppo del tuo software (velocità / time-to-market, gestione delle risorse ottimizzata, codice ben documentato, scalabilità, ecc.), Ciò potrebbe avere molta più importanza che qualcuno conosca Mercurial, SVN , Git o qualsiasi altro sistema di controllo della versione.

Preferisco chiedere ai candidati degli sviluppatori di cosa sono appassionati, qual è il sistema più bello che abbiano mai fatto secondo la loro opinione e in che cosa trascorrono il loro tempo libero sviluppando le loro abilità. Se le persone non avanzano nel tempo, questo mi spaventa più di altre cose, ma non significa che debba spaventarti.

Penso che tu abbia già delle ottime risposte a questa domanda da parte delle persone qui e che dovrebbero aiutarti a prendere la tua decisione informata in base alle tue esigenze.


2

Trovo incredibile che un professionista del software non abbia mai usato il controllo del codice sorgente e sarei molto nervoso per assumerlo.

Che esperienza ha. Mi chiedo cos'altro non sa che finora non hai scoperto.

Qual è la tua esperienza di sviluppo software da solo? Sei in grado di fargli domande su architettura, modelli di progettazione, problemi comuni di sviluppo software, domande sulle prestazioni del sistema, domande sulla sicurezza del sistema ecc.?

Se fosse uscito forte su quel tipo di cose, forse avrei potuto trascurare la mancanza di conoscenza del controllo delle fonti.


2

È possibile che un buon programmatore non abbia mai usato il controllo della versione?

Sì. Molte piccole aziende con programmatori autodidatti non lo usano.

Come è possibile sviluppare attivamente software per 10-15 anni senza mai aver bisogno del controllo della versione?

Ho introdotto personalmente il controllo della versione a 2 piccole aziende, ho aggiornato 1 azienda media da qualcosa di terribile a SVN (la migliore opzione al momento) e ho lavorato in un'altra piccola azienda che aveva solo qualche VC, ha scritto la propria soluzione VC per alcuni codici e aveva un sacco di codice ma non in nessun VC.

Il fatto stesso di non cercare una soluzione al problema di tracciare i cambiamenti è un segno di un atteggiamento sbagliato nei confronti della programmazione?

Beh, non è un fallimento immediato, ma certamente farei molte domande di follow-up. Cose come:

Hai mai provato un software VC? Che cosa? Cosa ne pensi? C'è qualche motivo per non usarlo? Cosa hai usato prima per gestire il codice? Hai mai lavorato con qualcuno sulla stessa base di codice e quali metodi hai usato per evitare scontri?


1
Niente di nuovo in questa risposta.
pdr,

1
I programmatori autodidatti intelligenti oggi conoscono tutti il ​​controllo della versione e lo usano. Il resto ha la testa bloccata da qualche parte.
Kaz,

@Kaz Disagree. Penso che sia quello che ci piace pensare, ma ho incontrato programmatori che considererei intelligenti che non lo facessero, come dice la mia esperienza personale. Non usare il controllo versione è un grande segnale di avvertimento che potrebbero avere la testa bloccata da qualche parte [frase affascinante :-)] ma non è sempre così.
James,

2

Vorrei essere d'accordo con Explosion Pills (ma il mio rappresentante è troppo basso, atm ...) ... l'atteggiamento è molto più importante.

Ci sono alcune cose da cercare, che credo contribuiscano all'eccellenza della programmazione:

  1. Comunicazione
  2. creatività
  3. Compassione (dire cosa?)

E, spesso volte, più di un piccolo disturbo ossessivo compulsivo.

Conosci il tipo ... quelli che siedono lì martellando un problema, perdendo completamente se stessi nel loro codice mentre esplorano le opzioni. Questi sono coloro che prendono appunti man mano che vanno avanti, lasciano commenti nel loro codice per assicurarsi di comprendere i propri percorsi logici (e di aprire la strada a se stessi o ad altri programmatori che potrebbero dover gestire il codice in futuro. .. così, "compassione" nella mia lista sopra!), e trasmettere rapidamente e chiaramente idee complesse ai decisori della catena in modo che i problemi possano essere affrontati in modo efficiente.

Un programmatore eccellente potrebbe essere rimasto bloccato per anni in un ambiente che o non si è accorto dell'idea di VCS, ha avuto brutte esperienze con VCS (alla VSS) che li ha resi timidi per provare nuovi sistemi, ma garantirei che un eccellente programmatore in quella situazione avrebbe comunque impostato una sorta di routine per proteggersi dalla perdita di tutto il lavoro a causa di un paio di iterazioni di progettazione errate.

Il tipo di programmatore di cui fare attenzione, quindi, è quello che afferma di non aver mai avuto bisogno di VCS, né di alcuna misura di protezione da inevitabili truffe . Il loro atteggiamento è uno dei "beh, l'ho costruito, quindi non può essere sbagliato". Quelli sono quelli che temo più di qualsiasi noviziato appena uscito dal college, perché un novizio può imparare ad apprezzare i punti di forza del VCS perché si rendono conto di quanto poco sanno effettivamente.


2

Come è possibile sviluppare attivamente software per 10-15 anni senza mai aver bisogno del controllo della versione?

Se proviene da squadre della vecchia scuola in cui i piccoli progetti sono gestiti da una sola persona, è molto possibile. Può avere 10 anni di esperienza nella stessa serie tecnologica senza apprendere e migliorare se stesso.

Il fatto stesso di non cercare una soluzione al problema di tracciare i cambiamenti è un segno di un atteggiamento sbagliato nei confronti della programmazione?

Se il tuo candidato è stato in un ambiente di sviluppo di gruppo (almeno 4 o più programmatori), allora è una domanda banale. Tuttavia, potrebbe esserci una divisione del lavoro tra i programmatori, lavorata su moduli assegnati esclusivamente a loro, che potrebbe ridurre la necessità di controllare il codice alla fonte.

Tuttavia, non essere ascoltati sul controllo delle fonti nell'era di Internet è una situazione davvero sorprendente. Pertanto, osserverei la sua volontà di apprendere nuove cose (riguardanti l'ambiente di sviluppo) e quanto sia aperto a un ambiente di lavoro dinamico.


Non tutti leggono blog di programmazione / ecc. In particolare, qualcuno che ha avuto una carriera interamente con un'unica piattaforma legacy non troverà molto valore immediato da parte sua. Di quanti blog software Mainframe / COBOL / RPG (non di gioco) sei a conoscenza? La programmazione di queste piattaforme non è cambiata molto negli ultimi 30 anni e molte delle migliori fonti di informazioni per loro sono quasi certamente ancora in formato albero morto. Se la programmazione è il tuo lavoro, rispetto a ciò su cui ruota la tua vita, quando lavori in quelle aree leggendo blog tecnici / ecc. Non avrai un ROI a breve termine.
Dan Neely,

1
Anche su un progetto individuale, beneficiate del controllo della versione. Se viene rilevato un bug, è possibile indicare "che è stato introdotto nella versione 3.13" e quindi gli utenti di 3.13 e successivi sono interessati. Puoi anche creare facilmente una patch per varie versioni, per le persone che non vogliono migrare all'ultima versione. Se riesci a fare queste cose senza il controllo della versione, allora stai facendo di fatto un controllo della versione ad hoc. Ti aspetti che i tuoi utenti utilizzino il tuo software per eliminare il lavoro manuale faticoso e soggetto a errori, ma tu, il programmatore, non lo fai da solo! LOL.
Kaz

2

L'esperienza è importante e hai ragione sul fatto che i meccanismi di utilizzo degli strumenti di controllo del codice sorgente possono essere appresi abbastanza rapidamente. Ma hai ragione a vedere una bandiera rossa.

  • Il tuo candidato è isolato dalla professione e dalle sue tendenze?
  • Sarà necessario imparare anche molti altri aspetti del lavoro in gruppo?

Per me, il problema del controllo della versione è più un sintomo che la malattia. La causa può variare ed essere piuttosto benigna. Molti programmatori ad hoc hanno appena iniziato a fare ciò che pensavano avesse senso, iniziando con alcuni libri sulla programmazione, e non hanno studiato sistematicamente lo sviluppo del software. A volte, tanto più ai vecchi tempi, i maggiori in informatica si diplomavano senza mai aver usato un sistema di controllo del codice sorgente perché tutti i loro progetti erano progetti individuali e andavano in aziende con processi software estremamente immaturi.

Comunque sia arrivato lì, se è stato un lupo solitario per un decennio o più, può rendere difficile vivere con le persone.

Potrebbe valere la pena di chiedere se al tuo candidato qualche altra domanda di sondaggio.

  • Mi parli di una volta in cui hai lavorato come parte di una squadra?
  • Mi parli di un momento in cui una squadra su cui hai lavorato ha avuto un conflitto tra i membri della squadra?
  • Mi parli di un momento in cui hai ricevuto il codice da un altro sviluppatore e portato avanti il ​​suo progetto?
  • Dimmi in che modo tu e gli altri membri del vostro team vi siete tenuti lontani gli uni dagli altri durante la creazione del codice?
  • Mi parli di un cliente segnalato un problema relativo a una funzionalità che funzionava, ma non funzionava in una versione successiva? come l'hai risolto?
  • Cosa ti piace lavorare in gruppo?

Potrebbe anche essere abituato ad avere il controllo quasi completo sui suoi metodi, processi e ad essere in un ruolo in cui è l'unico esperto di software. Vorresti qualcuno che sarà aperto a un nuovo modo di fare le cose. Più domande:

  • Mi parli di un periodo in cui hai usato o contribuito a creare uno standard di codifica?
  • Che tipo di cose vuoi vedere in uno standard di codifica?
  • Come ti senti a riscrivere il codice di qualcun altro?
  • Mi parli di una volta in cui sei stato coinvolto in revisioni tra pari di software o documentazione?
  • Puoi parlarmi di una proposta o di un contratto per lo sviluppo di software che eri coinvolto nella scrittura?
  • Parlami del tuo manager o supervisore software preferito?
  • Mi parli del tuo collega o subordinato preferito?

2

Nel 2012, per qualcuno con 15 anni di esperienza nel settore che non ha mai usato il controllo della versione è una bandiera rossa. Potrebbe non essere una tale bandiera rossa se l'anno fosse il 1982, o addirittura il 1992. Ma oggi, sarebbe meglio che ci fosse una spiegazione eccellente per questo divario enigmatico nel background di quello sviluppatore.

Situazioni straordinarie richiedono spiegazioni straordinarie.

È un po 'come un meccanico che sostiene di aver riparato le auto per 15 anni, ma non ha mai avuto una macchia di grasso su se stesso.

Naturalmente, spalmarsi di grasso non risolverà una trasmissione e nessuno dei passaggi del manuale di riparazione richiede una cosa del genere, ma non è questo il punto. Il punto è che essere perfettamente puliti è incoerentemente incompatibile con l'aspetto dei meccanici delle auto quando lavorano. In quel lavoro, ottieni grasso su te stesso.

Se stai intervistando qualcuno con esperienza che ammette di non avere esperienza nel controllo delle versioni, probabilmente sta esagerando o fabbricando parte della sua esperienza (e non sa nemmeno che il controllo delle versioni è qualcosa di ampiamente usato e importante, e di cui dovrebbe anche mentire! )

È possibile vedere tutti i tipi di jolly nelle interviste. Ho visto persone che non sono in grado di disegnare un diagramma di un elenco collegato o di scrivere una funzione che inserisce un nodo all'inizio di un elenco collegato. Eppure hanno affermato 20 anni di esperienza lavorativa.

Persino i neolaureati dell'informatica possono aspettarsi di avere familiarità passiva con il controllo delle versioni, anche se non ne hanno ancora fatto largo uso.


Il meglio che puoi costantemente sperare dai neolaureati è "Oh, ne ho sentito parlare". Abbiamo avuto una settimana di introduzione su ciò che era, basato su Subversion, ma non abbiamo mai usato il controllo della versione per nulla.
Izkata,

Sì, e poiché sono neolaureati, lo "compriamo" e andiamo avanti.
Kaz,

"passaggio di familiarità" (cosa penso che intendessi dire nella risposta) implica che a un certo punto l' hanno usato ; Sto sottolineando che non puoi nemmeno aspettartelo.
Izkata

Direi che se i laureati in CS non hanno usato il controllo delle versioni, il loro dipartimento di alma mater non è riuscito a implementare un corso di ingegneria del software adeguato e obbligatorio in cui gli studenti non solo imparano a conoscere i concetti di ingegneria del software, ma lavorano anche su un progetto di gruppo (con versione controllo e tutto). Vorrei avere una parola o due con il capo di quel dipartimento.
Kaz,

Ho programmato professionalmente per quasi 20 anni. So cos'è un elenco collegato e perché verranno utilizzati. Non ne ho mai usato uno, e probabilmente avrei difficoltà a scrivere i punti della tua funzione. Penso solo perché usi tecniche di 30 anni, per dire che tutti gli altri dovrebbero essere un po 'ingiusti.
Defenestrazione:

1

Troverei strano, ma non impossibile per un programma esperto non aver mai usato il controllo del codice sorgente dedicato. In una società con cui ho lavorato, hanno usato ampiamente il controllo del codice sorgente per il loro codice C # e VB tradizionale. Ma il codice del database puro (stored procedure e script, nonché le definizioni di tabella) non erano nel controllo del codice sorgente nonostante avessero due sviluppatori SQL professionisti il ​​cui compito principale era scrivere, gestire ed eseguire codice di database puro. Ho sostenuto il controllo del codice sorgente per le entità del database lì e ho avuto solo parzialmente successo.

In un'altra azienda, il team di sviluppo era piccolo (un negozio per lungo tempo, poi due). Il controllo del codice sorgente dello sviluppatore precedente aveva più copie dei file sorgente con una data aggiunta alla fine. A parte la mancanza di un migliore sistema di controllo del codice sorgente, il mio predecessore era decisamente competente e un uomo intelligente.

Prima di diventare professionista, ero un hobbista e non utilizzavo alcun controllo del codice sorgente, sapevo vagamente di cosa si trattasse, ma non mi preoccupavo.

In breve, penso che sia strano che un professionista non ne abbia molta familiarità, ma soprattutto se è abituato a squadre molto piccole è sicuramente possibile essere competenti senza di esso. Nell'assumere, non lo terrei contro di lui. Avrei assolutamente una riluttanza a imparare e iniziare a usarlo sul lavoro contro di lui però ...


chiedere al DBA di generare script SQL dal database e quindi può mettere gli script nel controllo del codice sorgente.
Linquize,

@linquize Oh d'accordo. Questo è uno dei modi migliori per farlo (anche se non è l'unico). Dico semplicemente che ho incontrato molti professionisti competenti e un dilettante esperto che non aveva esperienza con il controllo del codice sorgente, specialmente dal lato DBA. Nell'assumere, sarei riluttante ad apprendere il controllo del codice sorgente rispetto a un potenziale nuovo assunto, ma non sarei troppo sorpreso di non averlo usato prima, specialmente se erano abituati a una piccola squadra e si trovavano principalmente sul lato del database.
TimothyAwiseman

1

Il mio 2c è che dipende da come ha reagito alla domanda su VC. Le possibili reazioni potrebbero essere:

  1. Eh? Cos'è quello
  2. No, invece, l'abbiamo fatto
  3. Nessun riordino imbarazzato , la direzione non ci permetterebbe
  4. Nessun rimbalzo imbarazzato , ma ho investigato un po 'me stesso e ho pensato che sembrava qualcosa che dovremmo fare.

Nel caso di 4, il ragazzo otterrebbe un passaggio da me, ha l'atteggiamento giusto e probabilmente lo prenderà bene. Nel caso di 3, ottiene credito per capire che è qualcosa che dovrebbe essere fatto, ma non tanto quanto 4. Se fosse in grado di nominare un paio di factoidi su VC (elencare alcuni dei pacchetti VC là fuori) I ' lo prenderei come prova di una certa curiosità e potrebbe passarlo.

Se avesse risposto a 1 o 2, cioè se avesse saputo e non gli importasse sapere di VC, avrei seriamente messo in discussione il giudizio del candidato. Ci saranno altri strumenti (tracciamento dei bug, metriche di qualità, automazione della costruzione ecc.) Con cui dovrà lavorare e probabilmente scoprirai che hai una battaglia in salita su tutti questi problemi se non è aperto a provare nuovi approcci.

Come la maggior parte delle persone qui, penso che sarebbe ingiusto svantaggiare il candidato solo perché il suo datore di lavoro non è stato all'altezza; per me, tutto dipende da come hanno reagito ad esso.


1

Scrivere ciò che è cambiato è buono quando si guarda indietro. Mi ha salvato molte volte quando ho capito cosa non andava e molti problemi sono stati risolti rapidamente perché l'avevo scritto. Secondo me, è bene tenere un registro. Soprattutto se stai programmando con più persone di te stesso.

Se stai scrivendo un'app Web, puoi continuare ad aggiungere funzionalità senza controllo della versione perché aggiungi costantemente solo nuove cose. Ma forse scriverai un registro o un post di notizie con le cose nuove.

Si tratta di ciò su cui stai programmando.


0

Ho lavorato in luoghi in cui il processo di approvazione del software era da 12 a 18 mesi. Se non era già nell'elenco dei software approvati, non c'era modo di scaricarlo sui computer. Le unità CD / DVD erano bloccate e le macchine non erano collegate a Internet.

Il primo posto in cui mi sono imbattuto nel controllo del codice sorgente è stato quello di far scrivere a uno sviluppatore, quando era pronto per testare il progetto pluriennale stava finendo. Hanno scommesso che scriverlo da zero era più veloce del processo di approvazione.

Il secondo posto in cui mi sono imbattuto in questo problema ha utilizzato il controllo del codice sorgente per i primi mesi, ma poi il cliente ha voluto che tutto lo sviluppo fosse effettuato sulla propria rete interna. Hanno nuovamente bloccato tutto, quindi era tornato a molte cartelle zippate.

Conosco sviluppatori che hanno lavorato solo in queste condizioni. Vogliono usare questi strumenti, vorrebbero usare questi strumenti, ma non sono autorizzati a usare questi strumenti.

Scopri perché non li hanno usati. Non comprendere le procedure a causa dell'esperienza zero, è molto diverso dal rifiutare gli strumenti.


Niente di nuovo in questa risposta.
pdr,

0

Sto sviluppando da 15 anni. Ho usato il controllo versione solo poche volte. Sto ancora usando i miei script e programmi programmati per eseguire il backup di tutte le cartelle di sviluppo in modo incrementale. Non so cosa dire se qualcuno mi chiede se uso il controllo versione. Non ho mai avuto bisogno del sistema di controllo della versione, ho sempre lavorato su piccoli progetti. Voglio dire, non sono il miglior programmatore, ma sono sicuro di non essere il peggiore. La maggior parte delle volte sono imbarazzato nel dire alle persone che non uso regolarmente il sistema di controllo delle versioni, ma è così per me.


Ho avuto un'esperienza opposta: alcune persone mi danno uno sguardo divertente quando dico che uso il controllo della versione su piccoli progetti in cui sono l'unico sviluppatore. Forse meno oggi, perché il controllo della versione viene utilizzato per l' hosting di progetti open source e quindi viene inteso come metodo di distribuzione.
Kaz,

2
Dovresti cambiare atteggiamento e esaminare il controllo della versione perché ti consente di fare molte cose facilmente. Ad esempio, il gitsistema di controllo della versione ha un flusso di lavoro automatizzato ( git bisect) per trovare un bug di regressione. Questo esegue la ricerca binaria attraverso la cronologia delle versioni di un progetto per provare a trovare il changeset che ha introdotto il bug. Tutto ciò che fai è ricostruire, eseguire il test e informare gitse era buono o cattivo; quindi seleziona e recupera la baseline da testare successivamente.
Kaz,

In gitpuoi apportare alcune modifiche sperimentali e poi inserirle in a stash. Il tuo lavoro viene ripristinato all'originale e le modifiche vengono salvate. Successivamente puoi esplorare la tua scorta e riapplicare quelle modifiche per continuare a sperimentarle o buttarle via. E ovviamente qualsiasi sistema di controllo della versione decente ha una ramificazione, con la quale puoi fare cose come sviluppare una funzionalità, isolatamente, di una versione stabile. Oppure torna indietro e correggi un bug in una versione (per fornire una patch ai clienti) e unisci facilmente tale modifica anche alla versione di sviluppo corrente.
Kaz,

0

Parlando della mia esperienza come programmatore su sistemi IBM MVS: per i primi dieci anni della mia carriera lavorativa, il sistema operativo con cui ho lavorato aveva esattamente un tipo di file versionabile disponibile per il programmatore: il set di dati di generazione. Questo era essenzialmente un file con un numero fisso di versioni e dovevi ricordare quale versione era cosa - praticamente inutile per il controllo delle versioni moderne. Insieme a un filesystem che non aveva directory reali, solo più o meno qualificatori (di 8 caratteri), il concetto di un sistema di gestione del codice sorgente era completamente estraneo a chiunque lavorasse in quell'ambiente.

In realtà non ho visto un sistema di controllo del codice sorgente fino a quando non sono passato a SunOS 3 e non ho usato RCS. A quel punto ero un programmatore di sistemi IBM estremamente facile, altamente produttivo e molto bravo nel mio lavoro. Tutte le versioni sono state gestite copiando i backup su nastro e registrando dove fosse.

Se stavo ancora lavorando su mainframe a questo punto, è del tutto possibile che non sarei mai stato esposto a un sistema formale di controllo della versione; le alternative specificamente supportate sono ClearCase e Rational, nessuna delle quali è gratuita (e in effetti sono entrambe piuttosto costose).

Quindi dire che qualcuno è per definizione incompetente perché non ha mai usato il controllo della versione è un argomento controverso. È necessario scavare e guardare i dettagli. Se affermano di essere uno sviluppatore Linux / Unix / Mac OS ma non hanno mai usato il controllo della versione, parla meno bene per loro e potresti dover valutare se la loro esperienza complessiva è così adatta che saresti disposto a addestrarli nella moderna ingegneria del software. Se sono programmatori di mainframe della vecchia scuola - ed è quello di cui hai bisogno - quindi concentrati sul fatto che abbiano esattamente le competenze di programmazione necessarie che desideri e rassegnati al fatto che dovrai insegnarglielo. Come altri hanno già detto, la loro risposta al concetto sarà il fattore decisivo in quel caso.


0

Abbastanza per favore! Tutta la nostra comunità non vive in comunità sociali altamente sviluppate in cui i luoghi di ritrovo e gli eventi hacky sono eccessivamente abbondanti, né lavoriamo tutti in società di sviluppo software e alcuni di noi non riescono nemmeno a trovare risorse pubblicate pertinenti o aggiornate nelle nostre lingue native, stampate o online, incontriamo mai un compagno programmatore in carne e ossa.

Per quello che posso capire, se è uno sviluppatore di software esperto come dici tu, allora probabilmente è stato un lupo solitario che lavora come libero professionista per le piccole imprese.


-1

Esistono alcuni motivi possibili per non utilizzare il controllo versione:

  1. Lavorare in aziende che non stanno sviluppando software come attività principale.
  2. O se lo sviluppatore ha deciso di utilizzare qualche altro sistema - valido solo per quelli esperti.
  3. O se lo sviluppatore non ha ancora imparato come funziona ciascun sistema
  4. O è un problema di atteggiamento nei confronti degli strumenti che non hanno familiarità

Ma dovresti stare attento quando incontri persone che presumono:

  1. Che c'è solo un modo per fare qualcosa
  2. O che ogni programmatore deve farlo nello stesso modo in cui lo fa
  3. O che le pratiche che le persone stanno usando sono facili da cambiare

-2

Altrettanto possibile come è per un programmatore scadente essere un esperto nel controllo delle versioni. Il mio punto è che non so quale controllo della versione fa per le tue capacità di programmazione o capacità di problem solving. È una questione di esperienza. Molti negozi più piccoli non lo usano o non lo lasciano agli individui (che spesso lavorano da soli) per capirlo da soli.


-2

Penso che non sia tanto una questione di "Come è possibile sviluppare attivamente software per 10-15 anni senza mai aver bisogno del controllo della versione?", Ma "Come è possibile sviluppare attivamente software negli ultimi 10-15 anni senza mai hai bisogno del controllo della versione? ".

Sicuramente la programmazione è possibile senza il controllo della versione, ma un professionista dovrebbe avere familiarità con lo stato dell'arte attuale ed essere in grado di selezionare gli strumenti giusti per fare il lavoro. Il mancato utilizzo del software di gestione della versione appropriato rende il lavoro rischioso e inaffidabile e uno dei motivi per cui si desidera assumere uno sviluppatore professionista è che dovrebbero essere in grado di gestire il rischio.

Una base di codice correttamente annotata in un VCS vale molto più di una che non lo è. La ragione di ogni cambiamento può essere tracciata e compresa, consentendo ai manutentori di avere una comprensione più profonda di ciò che devono sapere. Non farlo è poco professionale, e l'unica scusa per questo sarebbe se fosse stato costretto da poveri manager nel suo precedente lavoro. Anche allora, non avrebbero dovuto usare il versioning per i loro progetti privati?

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.