Fundamentals 6 min read

10 Controversial Programming Opinions and Their Lessons

This article compiles ten provocative programming viewpoints—from the primacy of using your brain over rigid best‑practice checklists to the limits of unit testing—offering practical reflections on mindset, learning, tooling, and design that can sharpen any developer’s approach.

Art of Distributed System Architecture Design
Art of Distributed System Architecture Design
Art of Distributed System Architecture Design
10 Controversial Programming Opinions and Their Lessons

On Stack Overflow there is a popular thread titled “What’s your most controversial programming opinion?” which, despite over 400 main replies and thousands of comments, yields many enlightening insights rather than heated disputes.

1) The only “best practice” you should always use is “Use Your Brain”. Established patterns, frameworks, and methodologies are popular because many endorse them, not because they suit every situation; developers should think independently about the reasons behind these approaches.

2) Programmers who don’t code for fun in their spare time will never become as good as those who do. Without genuine enjoyment and personal projects, a programmer merely goes through the motions and risks becoming a mediocre “book‑worm” despite talent.

3) Most comments in code are a pernicious form of code duplication. Comments should explain *why* something is done, not *how* or *what*—the code itself already conveys the latter, and redundant comments add noise.

4) XML is highly overrated. While XML works well for certain web applications, its overuse has led many to feel incapable of programming without it.

5) Not all programmers are created equal. Some junior managers mistakenly assume developers with the same title have identical skills, speed, and problem‑solving abilities, which is far from reality.

6) “Googling it” is okay! Over‑reliance on Google provides answers (“fish”) but not the skill to “catch” them; excessive searching can hinder independent thinking and deeper learning.

7) If you only know one language, no matter how well you know it, you’re not a great programmer. Mastering multiple languages exposes different paradigms, enabling comparison, broader perspective, and more mature judgment.

8) Your job is to put yourself out of work. Clinging to old technologies makes a developer obsolete; continuous learning and adaptability are essential for promotion and relevance.

9) Design patterns are hurting good design more than they’re helping it. Blindly applying patterns can obscure actual requirements, leading to “pattern‑driven” designs that are messy and counter‑productive.

10) Unit testing won’t help you write good code. While unit tests prevent regressions, they do not inherently improve code quality and can become an excuse for poor design.

programmingUnit Testingbest practicessoftware designcode commentsdeveloper mindset
Art of Distributed System Architecture Design
Written by

Art of Distributed System Architecture Design

Introductions to large-scale distributed system architectures; insights and knowledge sharing on large-scale internet system architecture; front-end web architecture overviews; practical tips and experiences with PHP, JavaScript, Erlang, C/C++ and other languages in large-scale internet system development.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.