← All posts
February 11, 2018·3 min read

The Romance of Programming

Exploration of programming language agnosticism and the importance of understanding transferable programming concepts across different languages.

programmingjavascriptsoftware-developmentlearn-to-code
The Romance of Programming

Originally posted on Medium.

Romance Languages are languages derived from Vulgar Latin — Spanish, French, Italian, Portuguese, and Romanian. Despite their surface differences, they share common Latin roots. I think programming languages work the same way.

Language Relationships

Aim To Be Language Agnostic

All programming languages implement loops similarly, handle variables and data in comparable ways, and apply logic using nearly identical approaches. The high-level concepts stay consistent — only the syntax changes.

A developer proficient in core programming logic can transition between languages by learning syntax rather than relearning fundamental concepts. The goal should be language agnosticism: selecting the tool best suited for a specific problem rather than forcing a preferred language into every context.

You'd want to use the right tool for the job. You can use a wrench to hammer in a nail, but you obviously wouldn't want to.

Different languages serve different purposes. Low-level languages like Go, C, or Java can interact with memory and hardware directly. Higher-level languages are built for speed of development. JavaScript dominates web development simply because browsers natively understand it — not because it's objectively superior to everything else.

The phrase "I only know JavaScript, I can't read Java" limits developer potential. Once you understand the logic, translation into any language is just a matter of syntax lookup.

Become A Better Programmer

Beyond syntax, learning new languages exposes you to design patterns and programming paradigms.

  • Object-oriented design teaches code separation for maintainability and reusability
  • DRY (Don't Repeat Yourself) encourages concise, modular files
  • Functional programming emphasizes immutability to reduce errors

These patterns are language-agnostic. Incorporating OOP, DRY, and functional programming principles produces concise, reusable, and error-free code regardless of your technology stack.

Finding The One

The third or fourth language is the sweet spot where picking up another becomes easy.

  • The first language has the steepest learning curve because programming concepts themselves are new
  • The second language tests patience as you constantly compare it to your first
  • By the third language, you recognize the similarities and learning accelerates

My own journey: Java → JavaScript (a drastic departure from compile times and static types) → Python. Despite Python's beginner-friendly reputation, I philosophically dislike it — indentation sensitivity and missing curly braces aren't for me. I learned it, I just don't want to use it.

The Golang Gophers

My newest interest is Go — a low-level language emphasizing concurrency, developed by Google. It has legitimate technical merits. But my actual motivation was simpler: I just started because its mascot is a super cute gopher.

Go

Learn new languages based on genuine interest rather than external pressure. Even a seemingly trivial reason — like appreciating a language's mascot — is a perfectly valid motivation to start exploring.