After years in one programming language, its habits stop feeling like choices and start feeling like how programming works. Asael Shinder’s essay on DEV Community argues that a language with different design choices makes those habits visible again. It is an essay of advice and reflection, so its claims are the author’s observations and not measured results.
What the essay actually claims
Shinder’s central point is that every language encodes decisions, and familiarity hides them. The source is a single essay, “A Second Language Shows You What the First One Hid” (DEV Community, September 29, 2026). It cites no study, sample or statistic. It does not show that learning another language reduces bugs or improves code quality, and you should read its outcomes as one experienced developer’s account.
As an Amazon Associate I earn from qualifying purchases.
Why the contrast has to be conceptual
A new syntax for the same ideas teaches little. The essay’s useful contrast is between languages that disagree about design. It suggests two pairings:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- If you work in mainstream object-oriented languages, try a functional one.
- If you write Python, try a language with a strict compiler or manual memory management.
Where the friction shows up
The essay’s method is to notice the moment you reach for a familiar move and it is not there. The question it quotes is “Why can I not just change this value?” Each such moment points to an assumption you had not examined.
Changing values
Object-oriented code usually treats objects as holders of state that you update. A functional language may instead keep data unchanged after creation. Mutation then turns from a default into a decision you have to justify.
Empty and missing cases
If you habitually overlook the empty case, a language that makes you handle it will make that habit awkward or impossible.
Errors and exceptions
If you are used to exceptions, you may meet a language that makes expected failures explicit. You see that failure was always part of the design, and not an interruption.
These are the author’s illustrations, not a full description of any one language. None of these approaches is presented as universally better, and when you compare languages yourself, compare them on these axes: mutable or immutable data, how errors are handled, and how much the compiler or the programmer is responsible for safety and memory.
Rank #3
The exercise: small, finished, carried back
- Choose a language your current one would disagree with most.
- Build a project of a few hundred lines that is useful to you.
- Finish it. The essay says you do not need fluency or a job in the language.
- Take one idea back into your usual work.
The essay closes with: “Monday: pick the language your current one would disagree with most, and write the smallest program in it that does something you care about.”
Quick Recap
Best Value
Rank #4
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




