Sono uno sviluppatore esperto, ma non ho fatto molte revisioni del codice. Mi viene chiesto di rivedere il codice scritto in Python ma non conosco Python.
Ha senso rivedere il codice in una lingua che non conosco?
Sono uno sviluppatore esperto, ma non ho fatto molte revisioni del codice. Mi viene chiesto di rivedere il codice scritto in Python ma non conosco Python.
Ha senso rivedere il codice in una lingua che non conosco?
Risposte:
Qualche senso? Sì. Anche se non sai nulla della semantica di un linguaggio di programmazione, puoi comunque leggere caratteri e notare una formattazione incoerente, commenti mancanti, identificatori scelti male, duplicazioni evidenti ecc.
Molto senso o abbastanza senso per rimborsare il costo del tuo tempo ? Non ne sono sicuro. Questo dipende dalla tua posizione, dall'importanza delle revisioni del codice nel flusso di lavoro del tuo team e da molti altri fattori che non possiamo quantificare abbastanza bene.
enumerate
.) Penso che il tuo commento sia un ottimo esempio del perché cercare di rivedere una lingua con cui non hai familiarità dovrebbe al massimo essere educativo per te stesso.
In qualità di collaboratore regolare presso Code Review Stack Exchange , incontro molte domande che soffrono di problemi di linguaggio indipendente, ad esempio:
E la lista continua. Tuttavia, mentre non ho bisogno di conoscere la lingua, posso ancora rivedere questi problemi / punti.
Alcuni dei nostri migliori utenti hanno le risposte migliori in lingue che non usano attivamente o che non conoscono. Anche due dei miei primi dieci sono in lingue che non conosco né posso compilare / eseguire sulla mia macchina.
Direi persino che sarebbe lo stesso di rivedere lo pseudo codice di qualcuno. Finché puoi osservare e commentare le cose rilevanti per le cose che capisci, starai bene e sarà rilevante.
Ecco la linea di fondo, secondo me:
Per la situazione specifica di non conoscere Python, sarei particolarmente attento a questo. Python ha molti idiomi e pratiche standard che finiscono per rendere il buon Python molto diverso da quello che ci si potrebbe aspettare in altre lingue. (In effetti, penso che le cose che Python enfatizzi abbiano migliorato il mio codice in altre lingue, e non viceversa.) Beyond PEP8 ha un buon esempio di come potresti perdere completamente la mentalità che Python incoraggia.
Diamo un'occhiata a un semplice esempio. Prendi questo codice:
f = open('/home/me/something.txt')
try:
content = f.read()
finally:
f.close()
Vedi il problema con questo codice? Se non hai lavorato con Python, probabilmente non lo fai. Il problema è che esiste uno stile molto preferito in Python che fa esattamente la stessa cosa:
with open('/home/me/something.txt') as f:
content = f.read()
Questo è un gestore di contesto. Sai a cosa servono? Sai quando sarebbe appropriato usarne uno? Sai quando sarebbe appropriato crearne uno tuo? No? Quindi probabilmente non sei pronto a recensire Python.
Diamo un'occhiata a un altro esempio.
def add_fifty(other_list):
result = list()
for i in other_list:
result.append(i + 50)
return result
x = range(10)
y = add_fifty(x)
Vedi il problema? Il problema è che questo metodo è completamente inutile . Probabilmente dovresti semplicemente usare una comprensione in atto, quando l'operazione è così semplice:
x = range(10)
y = [i + 50 for i in x]
Se non l'hai visto, non hai familiarità con le funzionalità e gli idiomi di Python.
Potrebbe averti chiesto di rivedere il codice Python proprio perché non conosci Python . C'è una teoria di gestione secondo cui è utile avere uno "sciocco" in una squadra. Non ti sto chiamando un brutto nome :) L'idea è che una squadra possa soffrire di pensieri di gruppo e sviluppare una visione a tunnel. Un modo per uscire da questo è includere qualcuno nella squadra che gli altri membri della squadra considererebbero uno "sciocco", cioè qualcuno che non conosce l'argomento. Porrai domande per informarti e le domande verranno da un punto di vista che gli altri membri del team probabilmente non hanno mai preso in considerazione.
Non conosci Python, quindi ciò che può sembrare normale ai programmatori Python può sembrare strano per te. Potresti suggerire un miglioramento che il team non ha mai preso in considerazione.
La revisione del codice non riguarda la ricerca di variabili con ortografia non valida e formattazione errata. Se usi la revisione del codice per trovare tali cose, smetti di perdere tempo e usa uno strumento.
La revisione del codice riguarda il miglioramento della progettazione e il rilevamento di errori comuni da parte di programmatori alle prime armi.
Dal momento che programma in C ++ e non conosco abbastanza bene Python, non oserei rivedere il codice Python. Tuttavia, potrei aiutare con una revisione del codice Java.
Non hai detto in quale lingua programmi, ma non vedo a cosa potresti contribuire in una revisione del codice, se non conosci la lingua in cui è programmato.
Le revisioni del codice (oltre a cercare effettivamente i difetti) sono una buona introduzione da parte di un membro del team ad altri per il codice che viene aggiunto o modificato. Se sei uno sviluppatore esperto , dovresti essere in grado di leggere abbastanza per capire principalmente cosa sta succedendo.
Guarda una revisione del codice dal punto di vista di un caposquadra: c'è qualcuno che capisce cosa dovrebbe fare l'applicazione (logica aziendale), c'è qualcuno che capisce che cosa sta facendo il codice (logica di implementazione), e probabilmente molte altre persone lì che hanno bisogno di avere un'idea di come tutto ciò si adatta.
Non dovresti assolutamente essere l' unico recensore, ma ci sono molte buone ragioni per essere uno dei revisori. Non conoscere la lingua non è un grosso ostacolo per molte domande che richiedono una risposta in una revisione del codice. Ad esempio, sono uno dei primi 20 risponditori nel tag C # su questo sito e non ho nemmeno compilato il mondo ciao in C #.
Alcune competenze che puoi condividere senza conoscere la lingua:
È anche un buon modo per accelerare un nuovo prodotto. Mi sono appena unito a un nuovo team, dove conosco abbastanza bene le lingue, ma non conosco il dominio. La partecipazione alle revisioni del codice mi ha aiutato a imparare meglio il lato del dominio, anche se non sono stato ancora in grado di contribuire molto in tal senso.
Nel tuo caso, sarà un buon modo per imparare i modi di dire di una nuova lingua, come vedi i commenti lasciati dagli altri recensori. Questi sono i tipi di cose che sono molto difficili da imparare in qualsiasi altro modo, perché al tuo interprete non importa se il tuo codice è pitonico o meno.
Questa potrebbe essere una situazione vantaggiosa per tutti. Vorrei dire che potresti essere un recensore particolarmente prezioso perché sei una vergine Python che non è stata contaminata dalla Maledizione della Conoscenza .
Pensala in questo modo: se il codice è abbastanza chiaro da poter essere compreso anche da un vergine Python, allora deve essere un buon codice. Le parti che hai difficoltà a comprendere potrebbero essere candidate per una rielaborazione o un commento migliore.
Ovviamente, sarebbe anche vantaggioso per te, perché acquisiresti una nuova lingua mentre procedi. (Si spera, il codice che ti viene dato è un buon esempio da cui imparare.) Questa disposizione dovrebbe funzionare particolarmente bene per Python, un linguaggio che ha la reputazione di essere "pseudocodice eseguibile". Se sei uno sviluppatore esperto, non dovresti avere molte difficoltà a capire l'essenza di un programma Python.
L'avvertenza sarebbe che non ci si aspetterebbe di individuare bug derivanti da gotcha specifici della lingua . Ma la ricerca di bug non è l'unico scopo delle revisioni del codice. Se non altro, parteciperesti al trasferimento delle conoscenze semplicemente conoscendo il tipo di cose che accadono nel codice del tuo collega.
Una volta mi è stato chiesto di controllare un progetto che era stato intrapreso da un subappaltatore e sembrava avere seri problemi di prestazioni. Ho rapidamente stabilito che il fattore critico era un singolo modulo Perl. Non avevo mai incontrato Perl prima e nell'organizzazione non c'era nessuno che lo sapesse, quindi ho iniziato a cercare di capirlo da solo. Non sono mai riuscito a capire i dettagli, ma era molto chiaro che l'algoritmo che stava usando era quadratico nella dimensione dei dati e questa era la causa di tutti i problemi. Quindi sì, leggere il codice in una lingua che non capisci completamente può sicuramente essere produttivo. Il vantaggio è che impari nuovi trucchi mentre ci sei.
Alcune osservazioni:
1) Se sei uno sviluppatore esperto, prenderai Python (o almeno quanto devi sapere), semplicemente lavorando con esso. Sarà un caso di "imparare facendo". All'inizio sarà difficile, ma diventerà più facile man mano che acquisirai la lingua. Pensa a questa come un'opportunità per imparare un'altra lingua (le persone spesso imparano le lingue "straniere" attraverso "l'immersione").
2) Ci sono un certo numero di persone preziose sui siti SE che sono "non tecniche", ma che hanno abilità grammaticali, comunicative e logiche. Queste persone danno un "nuovo sguardo" ai soggetti e apportano una serie di soluzioni "semplicissime" che altri mancano, perché troppo "legate" nel materiale. Sarai consultato presumibilmente per le tue abilità non "tecniche" (cioè non Python) come la logica e la capacità di programmazione generale.
E se non hai fatto molte revisioni del codice, quasi tutte le esperienze di revisione del codice ti aiuteranno come sviluppatore. Sembra una buona corrispondenza tra le tue abilità e le tue esigenze e quelle della squadra.
Dipende dall'obiettivo della recensione; cioè cosa intendi per efficace .
Probabilmente sarai ancora in grado di rilevare alcuni problemi. Se sei tutto ciò con cui riescono a rivedere e sperano solo che darti un'occhiata aiuti e possibilmente catturi qualcosa, allora certo. Molti concetti di struttura sono simili tra le lingue. Uno in particolare è la possibilità di rivedere i commenti. Dovrebbe essere commentato abbastanza bene che un programmatore non di quella particolare lingua dovrebbe essere ancora in grado di avere una buona idea di ciò che sta accadendo. Se no ... allora puoi dire loro dove manca il loro commento. Se è così ben commentato ... allora dovresti essere in grado di rivedere un bel po 'della loro struttura solo attraverso le annotazioni di ciò che sta succedendo piuttosto che leggere effettivamente il codice di ciò che sta succedendo.
Ma probabilmente non rileverai molti altri problemi. Quindi, se intendono che la tua recensione sia una determinazione esaustiva del fatto che si tratti di un programma ben fatto / realizzabile, rimarranno delusi.
Il fatto che valga la pena o meno il risultato di farlo dipende in gran parte dal progetto.