ProgramAtion in Franglais đŸ‡«đŸ‡·đŸ§‘â€đŸ’»đŸ‡ŹđŸ‡§

A presentation at BreizhCamp 2025 in June 2025 in Rennes, France by William Bartlett

Slide 1

Slide 1

ProgramAtion in Franglais William Bartlett @ w.bartlett@zenika.fr Mastodon Github LINKEDIN punkstarman  William Bartlett ProgramAtion in Franglais 1 / 41

Slide 2

Slide 2

Wilkommen - Bienvenue - Welcome Mon nom est William Je travaille pour Zenika en Nantes J’ai Ă©tĂ© codant depuis que j’étais un pipi petit garçon Je suis / et arrivai en William Bartlett il y a ∌ 30 ans ProgramAtion in Franglais 2 / 41

Slide 3

Slide 3

What language are we coding this project in? William Bartlett ProgramAtion in Franglais 3 / 41

Slide 4

Slide 4

What language are we coding this project in? English, duh! William Bartlett ProgramAtion in Franglais 3 / 41

Slide 5

Slide 5

What language are we coding this project in? English, duh! @Authentification public class ModelCustomer { public int getNbListsOrders() { } public List<Adress> getDeliveriesAdresses() { } public Middle getMiddle() { } } public enum Middle { URBAIN, RURAL; } William Bartlett ProgramAtion in Franglais 3 / 41

Slide 6

Slide 6

Plan Why English isn’t the obvious answer The solution Tips and tricks William Bartlett ProgramAtion in Franglais 4 / 41

Slide 7

Slide 7

Why English isn’t the obvious answer Section 1 Why English isn’t the obvious answer William Bartlett ProgramAtion in Franglais 5 / 41

Slide 8

Slide 8

Why English isn’t the obvious answer Exclamation-Triangle L’usage correct est toujours relatif au contexte. Les langues changent, n’en dĂ©plaise aux immortels. (descriptivisme > prescriptivisme) William Bartlett ProgramAtion in Franglais 6 / 41

Slide 9

Slide 9

Why English isn’t the obvious answer Exclamation-Triangle L’usage correct est toujours relatif au contexte. Les langues changent, n’en dĂ©plaise aux immortels. (descriptivisme > prescriptivisme) Exclamation-Triangle Les usages sont citĂ©s dans le but d’étudier les facteurs qui y ont contribuĂ© et les consĂ©quences qui en dĂ©coulent. William Bartlett ProgramAtion in Franglais 6 / 41

Slide 10

Slide 10

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } William Bartlett ProgramAtion in Franglais 7 / 41

Slide 11

Slide 11

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } class QcmCorrectionResponse { constructor({ status, feedback, solution }) { } } William Bartlett ProgramAtion in Franglais 7 / 41

Slide 12

Slide 12

Why English isn’t the obvious answer Let’s play GitHubGuessr! class Passage { constructor({ id, moduleId, userId, createdAt, updatedAt, ,→ terminatedAt }) { } } class QcmCorrectionResponse { constructor({ status, feedback, solution }) { } } Pix William Bartlett ProgramAtion in Franglais 7 / 41

Slide 13

Slide 13

Why English isn’t the obvious answer Confusion class Thematic { } William Bartlett ProgramAtion in Franglais 8 / 41

Slide 14

Slide 14

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } William Bartlett ProgramAtion in Franglais 8 / 41

Slide 15

Slide 15

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } class BikeLocationService { public Trip takeBike(BikeId id) { } public void returnBike(BikeId id) { } } William Bartlett ProgramAtion in Franglais 8 / 41

Slide 16

Slide 16

Why English isn’t the obvious answer Confusion class Thematic { } enum Middle { TERRESTRIAL, AQUATIC, AIR; } class BikeLocationService { public Trip takeBike(BikeId id) { } public void returnBike(BikeId id) { } } class DocumentPlan { private List<Chapter> chapters; } William Bartlett ProgramAtion in Franglais 8 / 41

Slide 17

Slide 17

Why English isn’t the obvious answer Confusion order word SONAR_FAB_URL = “https://sonar.fab.internal” SONAR_URL_FAB = “https://sonar.fab.internal” William Bartlett ProgramAtion in Franglais 9 / 41

Slide 18

Slide 18

Why English isn’t the obvious answer Confusion order word SONAR_FAB_URL = “https://sonar.fab.internal” SONAR_URL_FAB = “https://sonar.fab.internal” File Native Language’s Effect on Java Compiler Errors Plus d’erreurs « unknown identifier » rencontrĂ©es par les locuteur·ices non-anglophones. William Bartlett ProgramAtion in Franglais 9 / 41

Slide 19

Slide 19

Why English isn’t the obvious answer William Bartlett ProgramAtion in Franglais 10 / 41

Slide 20

Slide 20

Why English isn’t the obvious answer Rassurez-vous Les devs anglophones natifs font des erreurs aussi. I set is overloaded I get is not safe (“get money”) I if 
 else if 
 else vs. if 
 or if 
 otherwise I Clonable not Cloneable I Closable not Closeable William Bartlett ProgramAtion in Franglais 11 / 41

Slide 21

Slide 21

Why English isn’t the obvious answer Anglicismes en français ? fr en footing jogging jogging tracksuit pressing dry cleaners brushing blow-dry shampooing/shampoing shampoo (from Hindi champo) relooking makover William Bartlett ProgramAtion in Franglais 12 / 41

Slide 22

Slide 22

Why English isn’t the obvious answer Anglicismes en français ? Linguisticae Youtube Ces anglicismes qui n’en sont pas Youtube Ces anglicismes en -ing qui n’existent qu’en français Youtube Encore des faux anglicismes Paul Taylor Youtube Anglicisms in French William Bartlett ProgramAtion in Franglais 13 / 41

Slide 23

Slide 23

Why English isn’t the obvious answer Anglicismes en français ? BOOK Le français va trĂšs bien, merci – Les linguistes attĂ©rĂ©es 3. Le français n’est pas « envahi » par l’anglais I exemples : le verbe spoiler, le nom masculin weekend (« bon week’ ») I français et anglais sont des langues indo-europĂ©ennes I français et anglais ont des histoires entrelacĂ©es William Bartlett ProgramAtion in Franglais 14 / 41

Slide 24

Slide 24

Why English isn’t the obvious answer Anglica lingua dominans est 
 sed non semper ita erat William Bartlett ProgramAtion in Franglais 15 / 41

Slide 25

Slide 25

Why English isn’t the obvious answer Anglica lingua dominans est 
 sed non semper ita erat English hasn’t always been dominant. It isn’t dominant in many parts of the world. The Latin alphabet isn’t dominant. The SOV word order is used by 40.9% of languages. SVO by 35.5%. [WALS] William Bartlett ProgramAtion in Franglais 15 / 41

Slide 26

Slide 26

Why English isn’t the obvious answer Coding the world File Coding is for everyone - as long as you speak English – Gretchen McCulloch ( @gretchenmcc.bsky.social)  William Bartlett ProgramAtion in Franglais 16 / 41

Slide 27

Slide 27

Why English isn’t the obvious answer Coding the world File Coding is for everyone - as long as you speak English – Gretchen McCulloch ( @gretchenmcc.bsky.social)  What if websites were coded in Russian? <Đ·Đ°ĐłĐŸĐ»ĐŸĐČĐŸĐș> William Bartlett ProgramAtion in Franglais 16 / 41

Slide 28

Slide 28

Why English isn’t the obvious answer Coding the world Scratch File Learning to Code in Localized Programming Languages William Bartlett ProgramAtion in Franglais 17 / 41

Slide 29

Slide 29

Why English isn’t the obvious answer Coding the world Excel is the most widely used programming language. It’s functional and localized. en fr TRUE VRAI IF SI SUM SOMME VLOOKUP RECHERCHEV William Bartlett ProgramAtion in Franglais 18 / 41

Slide 30

Slide 30

Why English isn’t the obvious answer Coding the world Hedy File Design, implementation and evaluation of the Hedy programming language William Bartlett ProgramAtion in Franglais 19 / 41

Slide 31

Slide 31

Why English isn’t the obvious answer Coding the world Hedy File Design, implementation and evaluation of the Hedy programming language print Hello world! affiche Bonjour le monde! ĐżĐ”Ń‡Đ°Ń‚Đ°Ń‚ŃŒ ПроĐČДт ĐŒĐžŃ€! みせる Hello world! presu Hello world! William Bartlett ProgramAtion in Franglais 19 / 41

Slide 32

Slide 32

Why English isn’t the obvious answer Esperanto? Voir vidĂ©os sur Linguisticae William Bartlett ProgramAtion in Franglais 20 / 41

Slide 33

Slide 33

Why English isn’t the obvious answer Rouille? Rust programming in French rouille::rouille! { utilisons std::collections::Dictionnaire comme Dico; convention ClĂ©Valeur { fonction Ă©crire(&soi, clĂ©: ChaĂźne, valeur: ChaĂźne); fonction lire(&soi, clĂ©: ChaĂźne) -> PeutÊtre<&ChaĂźne>; } ,→ statique mutable DICTIONNAIRE: PeutÊtre<Dico<ChaĂźne, ChaĂźne>> = Rien; structure ConcrĂšte; rĂ©alisation ClĂ©Valeur pour ConcrĂšte {} } William Bartlett ProgramAtion in Franglais 21 / 41

Slide 34

Slide 34

Why English isn’t the obvious answer Dette technique I DifficultĂ©s Ă  l’embarquement (surtout d’un d’anglophone) I CrĂ©ation d’un pidgin William Bartlett ProgramAtion in Franglais 22 / 41

Slide 35

Slide 35

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. William Bartlett ProgramAtion in Franglais 23 / 41

Slide 36

Slide 36

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. Comment le langage peut-il ĂȘtre commun si le mĂ©tier ne parle pas anglais ? William Bartlett ProgramAtion in Franglais 23 / 41

Slide 37

Slide 37

Why English isn’t the obvious answer Langage omniprĂ©sent Un langage commun entre experts mĂ©tier et informatique. Comment le langage peut-il ĂȘtre commun si le mĂ©tier ne parle pas anglais ? Domain experts object to terms or structures that are awkward or inadequate to convey domain understanding, while developers watch for ambiguity or inconsistency that will trip up design. — 2003. Eric Evans. Domain-Driven Design William Bartlett ProgramAtion in Franglais 23 / 41

Slide 38

Slide 38

The solution Section 2 The solution William Bartlett ProgramAtion in Franglais 24 / 41

Slide 39

Slide 39

The solution La solution William Bartlett ProgramAtion in Franglais 25 / 41

Slide 40

Slide 40

The solution Les solutions William Bartlett ProgramAtion in Franglais 25 / 41

Slide 41

Slide 41

The solution Les solutions Business in English/international ⇒ code in English William Bartlett ProgramAtion in Franglais 25 / 41

Slide 42

Slide 42

The solution Les solutions Business in English/international ⇒ code in English MĂ©tier en français ⇒ code en français franglais William Bartlett ProgramAtion in Franglais 25 / 41

Slide 43

Slide 43

The solution Everything in English William Bartlett ProgramAtion in Franglais 26 / 41

Slide 44

Slide 44

The solution Everything in English Everything? William Bartlett ProgramAtion in Franglais 26 / 41

Slide 45

Slide 45

The solution Everything in English Everything? Everything! William Bartlett ProgramAtion in Franglais 26 / 41

Slide 46

Slide 46

The solution Everything in English @Entity public class TradeVariableCapitalInvestmentCompany { Duration getFrequency() { } Counterparty getCounterparty() { } double getRate() { } Motto getMotto() { } List<Event> getPaymentsEvents() { } } William Bartlett ProgramAtion in Franglais 27 / 41

Slide 47

Slide 47

The solution Everything in English @Entity public class SicavTrade { Duration getFrequency() { } Counterparty getCounterparty() { } double getRate() { } Currency getCurrency() { } List<Event> getPaymentEvents() { } } William Bartlett ProgramAtion in Franglais 28 / 41

Slide 48

Slide 48

The solution Rules of Thumb I I I I English word order (RaceHorse vs HorseRace) Borrow specific terms (SICAV, département 
) Only pluralize last word (getAuthorNames not getAuthorsNames) Use international English I postCode not zipCode I color not colour I Use count instead of nb (Use getAuthorCount not getNbAuthors) William Bartlett ProgramAtion in Franglais 29 / 41

Slide 49

Slide 49

The solution Gotchas False friends I Agenda ≠ Agenda I Eventuelle ≠ Eventual I Valider ≠ Validate Spelling differences I Authentification = Authentication I Adresse = Address I Plateforme = Platform I Persistance = Persistence I Exemple = Example William Bartlett ProgramAtion in Franglais 30 / 41

Slide 50

Slide 50

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang William Bartlett ProgramAtion in Franglais 31 / 41

Slide 51

Slide 51

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang Le reste en anglais I mots-clĂ©s I conventions (get, set, update, delete 
) I patrons (Bean, Strategy, Factory 
 sauf si vous savez les traduire) William Bartlett ProgramAtion in Franglais 31 / 41

Slide 52

Slide 52

The solution Coder en franglais Termes mĂ©tier en francais I Pas d’accents, malgrĂ© JLS SE 8 § 3.8 - Identifiers tant que WINDOWS ne soit pas rentrĂ© dans le rang Le reste en anglais I mots-clĂ©s I conventions (get, set, update, delete 
) I patrons (Bean, Strategy, Factory 
 sauf si vous savez les traduire) Alternance codique (code switching) William Bartlett ProgramAtion in Franglais 31 / 41

Slide 53

Slide 53

The solution Coder en franglais @Entity public class PlacementSICAV { Duration getPeriodicite() { } Contrepartie getContrepartie() { } double getTaux() { } Devise getDevise() { } ConventionDeBase getConvention() { } List<Evenement> getEvenementsDePaiements() { } } William Bartlett ProgramAtion in Franglais 32 / 41

Slide 54

Slide 54

Tips and tricks Section 3 Tips and tricks William Bartlett ProgramAtion in Franglais 33 / 41

Slide 55

Slide 55

Tips and tricks Trucs et astuces I Faire avec ce qu’on a I Cultiver le langage I Documenter les conventions (ADR) William Bartlett ProgramAtion in Franglais 34 / 41

Slide 56

Slide 56

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration periodicity; Duration getPeriodicity() { return periodicity; } } William Bartlett ProgramAtion in Franglais 35 / 41

Slide 57

Slide 57

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration frequency; @Deprecated(forRemoval=true) Duration getPeriodicity() { return frequency; } Duration getFrequency() { return frequency; } } William Bartlett ProgramAtion in Franglais 36 / 41

Slide 58

Slide 58

Tips and tricks Refactoriser progressivement @Entity public class SicavTrade { Duration frequency; Duration getFrequency() { return frequency; } } William Bartlett ProgramAtion in Franglais 37 / 41

Slide 59

Slide 59

Tips and tricks So, you didn’t listen to me and you are translating Put the translation in the documentation /** Placement SICAV / @Entity public class SicavTrade { /* PĂ©riodicitĂ© / Duration getFrequency() { } /* Contrepartie / Counterparty getCounterparty() { } /* Taux */ double getRate() { } } William Bartlett ProgramAtion in Franglais 38 / 41

Slide 60

Slide 60

Tips and tricks So, you didn’t listen to me and you are translating Look for good translations I Linguee I Wikipedia, Wiktionary/Wiktionnaire I Domain glossaries I Mozilla I Finance I Read books about the domain I Ask domain experts I Listen to podcasts about linguistics (Lingisticae, Parler comme jamais, Vox, Lingthusiasm) William Bartlett ProgramAtion in Franglais 39 / 41

Slide 61

Slide 61

Conclusion Section 4 Conclusion William Bartlett ProgramAtion in Franglais 40 / 41

Slide 62

Slide 62

Conclusion Conclusion I Naming is hard. English is hard. I Business in English ⇒ code in English I MĂ©tier en français ⇒ code en franglais I termes mĂ©tier en francais I termes « techniques » en anglais William Bartlett ProgramAtion in Franglais 41 / 41

Slide 63

Slide 63

Conclusion Conclusion I Naming is hard. English is hard. I Business in English ⇒ code in English I MĂ©tier en français ⇒ code en franglais I termes mĂ©tier en francais I termes « techniques » en anglais Future work I Explorer plus la littĂ©rature scientifique I Regarder d’autres langues William Bartlett ProgramAtion in Franglais 41 / 41