La propria lingua madre parlata influisce sulla qualità del codice?


9

Esiste una scuola di pensiero in linguistica secondo cui il problem solving è molto legato alla sintassi, alla semantica, alla grammatica e alla flessibilità della propria lingua madre.

Lavorando con vari team di sviluppo internazionali, posso vedere chiaramente una cultura mentale (se vuoi) nella base di codice. Linguaggio di programmazione a parte, la codifica tedesca è molto diversa dai miei colleghi in India. Inoltre, il codice è nettamente diverso in America centrale come in America costiera (in realtà, IBM l'ha notato anni fa).

Notate con i vostri colleghi internazionali (di QUALSIASI paese) che lo stile di codifica e la risoluzione dei problemi sono in linea con le lingue native?


Potrebbero esserci delle differenze, ma quello che so è che ci sono programmatori cattivi da ogni paese.
ozz

Come fai a sapere se le differenze sono dovute alla madrelingua o al background culturale?
mouviciel,

@mouviciel, i due sono per lo più inseparabili, tuttavia vedo aneddoticamente che la sintassi della lingua parlata guida la semantica del linguaggio di programmazione; l'esempio tedesco qui sotto nei miei commenti è solo uno. Riesco a vedere chiaramente la differenza nello stile di codifica anche tra le regioni degli Stati Uniti, nonostante una lingua ampiamente simile che (come hai affermato) dovrebbe essere molto più attribuita alle differenze culturali.
Jé Queue,

Risposte:


5

Fino ad ora, con la mia esperienza, ho notato che il mio collega nativo internazionale ha fatto lo stesso lavoro rispetto al non nativo. Il problema sorge quando hanno cercato di spiegare il concetto o il requisito. Altrimenti suppongo che il nome della sintassi non abbia molto ruolo fino a quando non leggi cosa fanno esattamente. Una volta che un programmatore acquisisce la conoscenza della sintassi, non conta quale sia il significato effettivo della parola utilizzata per la sintassi.


1
Vedi, trovo che la traduzione della lingua parlata madrelingua (e del processo di pensiero) in un linguaggio di programmazione diverso abbia esiti materiali diversi. Non buono o cattivo in entrambi i casi, solo abbastanza diverso. Prendo atto di molte dichiarazioni heap / variabili globali e preparazione dei dati e quindi di serie di chiamate di procedura da parte di tedeschi, rispetto agli americani che tendono a incorporare o ad utilizzare anonimamente variabili / funzioni in caso di necessità. Risultati finali = stesso, solo approcci diversi.
Jé Queue,

+1 per il sommario intelligente Risultati finali = stesso, solo approcci diversi
Zerotoinfinity

3

Non ho visto molta differenza se non nei commenti sul codice . Lì a volte posso dire chiaramente che questo bit è stato scritto da qualcuno la cui prima lingua non è l'inglese.


6
Anche io, la mancanza di errori di ortografia è un indizio forte. :)
biziclop

3

Notate con i vostri colleghi internazionali (di QUALSIASI paese) che lo stile di codifica e la risoluzione dei problemi sono in linea con le lingue native?

Assolutamente. Questo è un dato di fatto. La catena causa-effetto è tuttavia più complessa.

La regione, il suo ecosistema, le condizioni meteorologiche, la vita delle piante e degli animali hanno influenzato lo sviluppo della religione della cultura locale facendone parte.

La cultura e la religione hanno influenzato la formazione e lo sviluppo delle lingue locali.

La cultura e la lingua hanno lasciato il segno nel modello della società per questo particolare gruppo etnico.

Il modello di società ha definito il modello di comportamento: stile di vita, attitudine al lavoro, relazioni sociali, priorità e valori degli individui. Questa è la parte che vogliamo.

Persone di diverse culture si avvicineranno per risolvere un problema con il bagaglio del loro patrimonio culturale: come ci pensano, quale atteggiamento portano al lavoro, quale metodologia e schemi di risoluzione dei problemi applicheranno, quali priorità e valori fissano.


A proposito di esempi, posso dartene due. Se prendiamo la Germania dove attualmente risiedo, ci sono alcuni schemi che ho osservato.

  1. Pianificare tutto in anticipo e per il lungo termine è il modo di vivere. Gli incontri serali con gli amici possono essere programmati settimane e mesi in anticipo. I giovani si preoccupano già della pensione (assicurazione ecc.). Lo swing dell'umore, l'improvvisazione, la volontà e la capacità di adattarsi al volo sono molto bassi. Naturalmente viene trasferito al modo di lavorare. La pianificazione e l'ordine svolgono un ruolo importante. Essere agili è considerato una caratteristica eccezionale per descrivere una persona / squadra moderna con un pensiero progressista. Tuttavia, la maggior parte dei processi agili che ho osservato nei team tedeschi sembrano più un'esecuzione automatica dei passaggi predefiniti (anche se le persone cercano davvero di essere agili), ma nessuno spirito di agilità in quanto tale.

  2. La prevedibilità di tutto è la norma della vita. Le persone sono abituate a sapere cosa accadrà, dove e quando. Si estende dalla vita quotidiana sullo stile di lavoro alle relazioni personali. Puoi vederlo ad esempio quando le persone attraversano la strada. Aspettano il semaforo verde e iniziano a muoversi senza guardare se le macchine si sono effettivamente fermate, perché si aspettano che lo facciano. Le persone sono orgogliose di essere in grado di controllare ogni aspetto della loro vita. Quando però la vita reagisce con qualcosa di inaspettato, quando le cose sfuggono al controllo, la gente si spaventa. Se trasferito alla programmazione ho visto che la codifica è fatta in modo piuttosto ottimistico, nessuna ossessionecon controllo input, chiavi esterne per verificare l'integrità dei dati e così via. Inoltre, non è necessario un po 'di ingegneria in più per mantenere il codice in una certa misura resistente ai guasti e adattabile a determinati cambiamenti futuri, solo per soddisfare le aspettative di oggi (che non è probabile che cambino credono).

  3. Risparmiare denaro e ottimizzare le loro spese è estremamente importante nella cultura. Si riflette sui manufatti di lavoro. Le caratteristiche e la qualità corrispondono alla pianificazione ma non le superano improvvisamente (per renderla più fresca o semplicemente "nel caso"). Un altro aspetto del gioco è la riluttanza a investire in hardware e software moderni, a riprogettare il codice di lavoro, a riformattarlo, a migliorare le cose solo per allinearsi allo stato attuale delle cose, per prepararsi al futuro. Dal momento che non vi è alcuna vincita immediata e nessuno sta pagando per i cambiamenti, nessuno si muoverà effettivamente.

  4. L'imprenditorialità e la creatività sono piuttosto basse nella cultura. La riluttanza a correre rischi per proprio conto è elevata. I risultati di lavoro raramente portano le impronte di insolito, inaspettato, creativo. Le persone tendono a seguire il percorso calpestato, poca sperimentazione o insoliti allestimenti "per curiosità". Alla gente non piace prendere l'iniziativa nelle proprie mani, specialmente se abbinata alla responsabilità. Ho anche sentito che i tedeschi che sbarcano nei Paesi Bassi a volte hanno difficoltà poiché le persone lì sono abituate a lavorare in modo indipendente senza una guida rigorosa. Dal punto di vista della programmazione significa poca sperimentazione con nuovi linguaggi, strumenti o librerie, nuove versioni non sono adottate per paura del cambiamento. Le persone prendono i modelli di progettazione e li applicano alla cieca perché sono stati insegnati così all'università e non mettono in discussione la loro applicabilità.

  5. Funzione sulla moda. È visto nella vita di tutti i giorni. Lo stile urbano comune, la progettazione di edifici, la decorazione delle strade, tutto è ridotto al minimo necessario per funzionare, ma di solito niente solo per lo stile, la bellezza. Per quanto riguarda la programmazione, si vede nella mancanza di un bellissimo design dell'interfaccia utente. La maggior parte dei siti aziendali e personali sono piuttosto vecchi e noiosi. Inoltre, non puoi convincere il capo e i colleghi a fare un po 'di lucidatura perché non vedono alcun beneficio tangibile.

  6. Complessità e burocrazia fanno parte dello stile di vita. Le persone lo spingono oltre e si applicano ovunque. Relazioni personali. i dettagli di lavoro, le decisioni e le soluzioni spesso comportano più artefatti per documentare ciò che è stato fatto. Il codice di programmazione viene spesso fuori con elementi, livelli di astrazione e composizioni non necessari perché sembra alle persone più serie in quel modo. Il principio KISS non è molto popolare.

  7. "Salvare la faccia" sembra essere molto importante, apparire di successo, non mostrare segni di debolezza o fallimento a chiunque altro (se ce l'hai è quasi sicuramente verrà usato contro di te). Nella pratica del lavoro ammettere il fallimento arriva piuttosto difficile, le persone fanno di tutto per non "perdere la faccia". Anche prendere critici diventa difficile. Criticare qualcuno (con la buona causa o no) è un modo sicuro per fare un nemico. Dire ciò che si ha nella mente non è praticato, il che rende piuttosto difficile capire chi si trovi dove.

In conclusione, buoni esecutori, pianificazione e pianificazione al top, la precisione è buona. L'innovazione e la creatività non sono tuttavia prevedibili.


Il secondo esempio riguarda la cultura russa a cui appartengo. È abbastanza diverso.

  1. Pianificazione e pianificazione non sembrano avere un valore particolare. Le deviazioni minori non riguardano le persone a meno che / finché non inizi a minacciare il risultato più grande. Alla gente non piace vivere secondo un piano, preferire una sorta di libertà mentale, fare qualunque cosa gli piaccia e quando ha voglia di farlo. Per quanto riguarda la programmazione, possono ignorare il "non essenziale" come scrivere documentazione e fare documenti. Le persone sono molto più facili quando vanno e vengono, se sono annoiate dal progetto, non amano l'atmosfera e così via. L'impegno a lungo termine per vita non è prevedibile, le persone non vogliono essere vincolate, non aspettarsi che vengano una volta e rimangano fino al pensionamento. Questo è ben visto nel mercato della telefonia mobile. Mentre in Europa / Stati Uniti è onnipresente avere contratti della durata di 2 anni, in Russia questo non è praticato. Le persone non

  2. Le persone non amano la burocrazia e preferiscono le relazioni informali. Poco o nessun lavoro di ufficio, il minor numero possibile di discussioni e incontri, semplicemente fanno il lavoro. La complessità nel codice non è gradita, sono preferite decisioni semplici e modalità dirette. La routine noiosa non è favorita. Alcune attività "non essenziali" come commenti e documentazione possono essere ignorate. Le persone possono rimandare certe cose noiose e fare invece cose più interessanti o fare la parte noiosa in un modo inaspettato che li terrà motivati.

  3. I costi non sono così importanti. Alla gente piace avere qualcosa di più nuovo, più fresco, più interessante e più moderno proprio così, senza un business case. Se fornisce soddisfazione, di solito non saranno turbati per i costi aggiuntivi sostenuti.

  4. Le persone sono molto entusiaste di tutto. Cibo, musica, vestiti, manufatti e idee provenienti da diversi paesi e culture aprono le porte. Le persone sagge alla programmazione sperimenterebbero un nuovo linguaggio, strumento o libreria proprio per curiosità, con un caso aziendale o senza. Diverse filosofie e metodologie, tutto è volentieri preso, toccato, morso, sperimentato e mescolato insieme in modo funky.

  5. La bellezza e lo stile sono molto importanti. Le persone spenderebbero tempo e denaro extra per qualcosa che non ha alcun beneficio tangibile ma soddisfa solo un certo senso artistico. Spesso preferiscono qualcosa di elegante rispetto a qualcosa di più funzionale. Il bellissimo design dell'interfaccia utente è molto apprezzato. Le persone sagge alla programmazione riporterebbero il codice che sembra goffo e non strutturato semplicemente per aggiungere più stile ad esso, anche se prima funzionava perfettamente, con conseguente ulteriore tempo speso.

  6. La prescrizione e le regole sono spesso ignorate e persino disprezzate, le persone potrebbero fare qualcosa di completamente diverso se sono convinte che sarà migliore (o più freddo - non può resistere). Molte decisioni dall'alto verranno messe in discussione e discusse. E sì, tutti hanno una forte opinione su tutto.

  7. La prevedibilità della vita è piuttosto bassa, quindi le persone pianificano sempre qualsiasi contingenza. Lo stesso si riflette spesso nel codice, piuttosto in un atteggiamento pessimistico, con doppi controlli e piani di fallback. L'architettura può riflettere la prontezza per futuri possibili cambiamenti, ma non una sovraarchitettura simile all'astronauta. Agile non è una metodologia moderna ma il modo di vivere. Inoltre le persone sono abituate ai cambiamenti e non cercano di controllare ogni aspetto della loro vita. Quando succede qualcosa di inaspettato, le persone semplicemente annuiscono, dicono "sarà meglio la prossima volta" e vanno avanti senza andare mentalmente, iniziando a bere, droghe ecc. Un fallimento del progetto non provoca suicidi, viene preso facilmente.

  8. La correttezza politica è bassa, quindi le persone possono semplicemente dire cosa pensano in anticipo quando non te lo aspetti. Essere preparato.

Una linea di fondo diversa è, aspettatevi l'inaspettato, qualcosa di insolito e creativo, ma non aspettatevi precisione, pianificazione e rispetto delle regole della macchina.


A quale è meglio non è possibile rispondere facilmente. Un tipo di lavoro è meglio coperto da una categoria di lavoratori, l'altro da una categoria diversa. Cattivo se alle persone vengono assegnati compiti sbagliati per la loro mentalità. Suppongo che sia una sfida per un team manager internazionale riconoscere questo problema. Non sono sicuro che sia mai stato discusso con l'applicazione nel settore IT.


1
Grazie per i commenti aneddotici. Vedo lo stile molto influenzato e interessante leggere i tuoi commenti.
Jé Queue,

Anche se c'è della verità nella tua osservazione dei tedeschi, ho dovuto -1 perché sono enormi generalizzazioni che stai citando (non tutti i tedeschi sono il modo in cui le hai descritte - presumo per i russi).
Jas

Accidenti, sembra un'istanza dei concetti "Classico" e "Romantico" del libro "Zen and the Art of Motorcycle Maintenance" in due intere popolazioni! Sorprendente.

2

Non sono sicuro della qualità del codice, ma è certo che ogni programmatore fa diversamente il suo lavoro.

È stato detto che i linguaggi naturali hanno influenzato il nostro modo di pensare (quindi immagino che influenzerebbe la programmazione), questa scuola di pensiero ha portato allo sviluppo di linguaggi artificiali con paradigmi diversi nel tentativo di dimostrarlo: Loglan , per esempio. Non so se ne sia uscito molto.

Ciò di cui sono certo, tuttavia, è che l'educazione (in cui la lingua svolge un ruolo, ma lo fanno anche altre cose) influenza sicuramente il punto di vista di un individuo su un problema dedicato.

Ho colleghi che sono andati a scuole "tecniche", e imparano l'intestino del C / C ++ mentre a scuola, e tendono ad avere un approccio tecnico ai problemi, mentre ho la tendenza a sedermi, a pensarci (a volte per un bel momento) prima di sentire di avere una comprensione abbastanza profonda per arrivarci ... eppure siamo cresciuti nello stesso paese (principalmente), parliamo la stessa lingua e abbiamo più o meno la stessa cultura (solo un diversa formazione).

La mia unica esperienza con colleghi "stranieri" è stata uno spagnolo (due anni fa) e un italiano (fino ad oggi), ed entrambi lavorano più o meno come il resto del team (francese). Forse se dovessi incontrare da qualche parte un background non latino potrei individuare una differenza.

Pertanto, non sono sicuro che il linguaggio sia la causa principale delle differenze di stile. Penso che l'istruzione e il carattere possano avere almeno lo stesso impatto.


+1 per sottolineare che l'individualità è molto più importante della nazionalità.
Jas,

1

Non è la lingua ma una sorta di background culturale, "carattere nazionale". Il che sembra funzionare nel complesso (ad es. Gli inglesi sono fantastici, i tedeschi sono precisi ecc.), Ma fallisce sulle singole persone.

Ad ogni modo, sta a te scoprire il sistema di misurazione, scegliere progetti da repository open source, esaminare il codice e fare alcune statistiche.

Sarebbe meglio se potessi raccogliere alcuni altri attributi degli autori: età, istruzione, industria ecc.


Non sono sicuro del punto di alcune delle tue dichiarazioni. Stai dicendo che NON credi che la lingua parlata madrelingua influenzi gli approcci di problem solving nella programmazione?
Jé Queue,

1
Sì, non credo che la lingua influisca. Penso che il "carattere nazionale" conti di più. E penso che questo "carattere nazionale" non sia un buon nome, "influenze culturali" dovrebbero essere migliori (e, almeno, meno sembra / sono razzisti). Basti pensare alla metropoli VS del villaggio, siamo-solo-di-40-anni-di-comunismo-incubo VS democrazia-per-200-anni.
ern0

Ha detto che devi accettare TUTTO, non solo la semantica della lingua in esclusione di tutto il resto. Aiuta l'uomo almeno a contrastare l'ignoranza di alcune persone.
Filip Dupanović,

+1. Vivo in Austria, qui parliamo tedesco, ma il tipico stile di codifica dei miei colleghi tedeschi è radicalmente diverso da quello dei miei colleghi austriaci.
user281377

0

La propria lingua madre non influisce sul modo in cui si codifica. Ma essere in grado di capire l'inglese è piuttosto importante, poiché la maggior parte dei libri di programmazione, blog, siti di controllo qualità, come SO, ecc. Tendono ad essere in inglese

Le differenze culturali possono tuttavia essere un fattore. Le università di diversi paesi possono insegnare da un punto di vista diverso. Alcuni paesi possono avere un movimento agile più forte di altri paesi. Ad esempio, le fabbriche giapponesi sono note per la loro produzione snella, che molti stanno cercando di copiare, ma falliscono perché mancano della comprensione dei valori fondamentali sottostanti.


0

Penso che l'educazione (intendo il suo stile, piuttosto che la qualità) sia un fattore molto più forte. Anche la matematica di base (che si potrebbe pensare sia abbastanza universale) viene insegnata in modi completamente diversi in tutto il mondo, per non parlare di qualcosa di intangibile e sfocato come la risoluzione dei problemi.

Quindi, se c'è un effetto linguistico (di cui personalmente dubito, basato sulle mie esperienze), viene oscurato dallo stile dell'educazione.

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.