Every tech community has its sacred debates. Arguments that never resolve, positions people defend passionately, opinions treated as facts. Let's explore the biggest ones and why they persist despite nobody ever winning.
Tabs vs Spaces: The Eternal War
The debate: Should code be indented with tab characters or space characters?
Team Tabs argues:
Team Spaces argues:
Reality: Spaces won. Stack Overflow Developer Survey shows 72% use spaces. But tabs people will never surrender.
Why it persists: Everyone's editor is configured for one or the other. Changing means retraining muscle memory. So we defend our choice as objectively superior.
Solution: Use whatever your team uses. Configure editor to convert automatically. Move on with your life.
Programming Language Superiority
Everyone thinks their preferred language is best. Everyone's wrong. Languages have tradeoffs.
JavaScript
Python
Rust
Go
TypeScript
Reality: Different languages excel in different contexts. Use the right tool for the job. But we'll keep arguing anyway.
Framework Wars
Frontend: React vs Vue vs Svelte vs Angular vs...
React: Dominant but complex, JSX mixing concerns, hooks learning curve Vue: Progressive, easier learning curve, less ecosystem Svelte: Compiler-based, less boilerplate, smaller ecosystem Angular: Full-featured, enterprise choice, steep curve
Reality: React won market share. Others are perfectly good. Choose based on your needs.
Backend: Express vs Fastify vs Nest vs...
Similar story. They all build web servers. Pick one and build.
The "Real Programmer" Gatekeeping
Debates about what counts as "real programming":
"If you use NoCode tools, you're not a real developer" "If you use frameworks, you don't understand the fundamentals" "If you need StackOverflow, you're not a real programmer" "If you prefer high-level languages, you're not serious"
Reality: These are gatekeeping, not legitimate critiques. Good developers use the right tool for the job, including high-level abstractions and asking for help.
Build things that work and help people. That's what matters.
Text Editor Holy Wars
Vim
Emacs
VS Code
JetBrains IDEs
Reality: VS Code won by being good enough for most people and free. Modal editing fans use Vim/Neovim. Others use what makes them productive.
Nobody cares what editor you use except other people in editor debates.
Best Operating System for Development
macOS
Linux
Windows
Reality: All work fine now. WSL made Windows viable. Pick what you like. Stop trying to convert people.
Methodology Debates
Agile vs Waterfall
Agile won in name. Most companies do "agile theater"—sprints and standups without actual agility.
Waterfall works for some contexts (regulated industries, hardware).
Reality: Most development is somewhere in between.
TDD (Test-Driven Development)
Defenders: "Write tests first, better design emerges!" Critics: "Slows development, over-engineers solutions!"
Reality: Test coverage good. Writing tests first works for some people, not others. Do what makes you productive.
Microservices vs Monolith
Microservices: Scalable, independent deployments, complex operations Monolith: Simple to develop, easy to deploy, can become unmaintainable
Reality: Start monolith. Split when you have scaling problems. Premature microservices is painful.
Semicolons in JavaScript
Some style guides require them. Some ban them. ASI (Automatic Semicolon Insertion) means JavaScript adds them sometimes.
Reality: Use a formatter like Prettier. Let it decide. Never think about it again.
Why These Debates Never Resolve
Personal investment: After learning a tool deeply, hard to admit another might be better.
Context blindness: What works for your project might not work for others. But we generalize from personal experience.
Identity attachment: Tools become part of identity. Criticism of tool feels like personal attack.
Tribalism: Humans love in-groups and out-groups. Tech tools become tribes.
Legitimate tradeoffs: Most debates have valid points on both sides. No objectively correct answer.
How to Debate Productively
Acknowledge context: "For my use case, X works better because..."
Recognize tradeoffs: Every tool has pros and cons. Admit your choice's weaknesses.
Stay curious: Ask why people prefer different tools. Learn their reasoning.
Change your mind: When presented with good arguments, updating your position is strength.
Remember it doesn't matter much: These debates are fun but ultimately minor. What you build matters more than what you build with.
The Only Correct Opinions
Just kidding. There are no correct opinions. That's why they're opinions.
Well, except these obviously correct truths:
(Watch the comments prove even these are debatable)
Debate for fun. Learn from disagreement. Don't take it too seriously. In 10 years, we'll be arguing about completely different tools and languages, and these debates will seem quaint.
The real winner? Whatever tool lets you build things that help people. Everything else is noise.
Tabs vs Spaces: The Eternal War
The debate: Should code be indented with tab characters or space characters?
Team Tabs argues:
- One character instead of 2-4
- Developers can set their preferred width
- Smaller file sizes (technically true, practically irrelevant)
- Accessibility: can be configured for visual needs
Team Spaces argues:
- Consistent appearance across all editors
- No mixed indentation issues
- Industry standard (backed by surveys)
- Most style guides specify spaces
Reality: Spaces won. Stack Overflow Developer Survey shows 72% use spaces. But tabs people will never surrender.
Why it persists: Everyone's editor is configured for one or the other. Changing means retraining muscle memory. So we defend our choice as objectively superior.
Solution: Use whatever your team uses. Configure editor to convert automatically. Move on with your life.
Programming Language Superiority
Everyone thinks their preferred language is best. Everyone's wrong. Languages have tradeoffs.
JavaScript
- Pros: Runs everywhere, huge ecosystem, easy to start
- Cons: Weird behaviors, type coercion chaos, "wat" moments
- Defenders: "It's getting better with modern features!"
- Critics: "Still fundamentally broken"
Python
- Pros: Readable, great for data science and ML, huge libraries
- Cons: Performance, GIL, packaging complexity, Python 2/3 trauma
- Defenders: "Clean and productive!"
- Critics: "Whitespace as syntax was a mistake"
Rust
- Pros: Memory safe, no garbage collector, fast
- Cons: Steep learning curve, slow compile times, borrow checker fights
- Defenders: "Future of systems programming!"
- Critics: "Too complex for most use cases"
Go
- Pros: Simple, fast compilation, good for backend services
- Cons: Verbose error handling, limited generics (improving), opinionated
- Defenders: "Simplicity is powerful!"
- Critics: "Too simple, missing features"
TypeScript
- Pros: JavaScript with types, great tooling
- Cons: Complex type system, compilation step, not true static typing
- Defenders: "Makes JavaScript usable!"
- Critics: "Overcomplicated JavaScript"
Reality: Different languages excel in different contexts. Use the right tool for the job. But we'll keep arguing anyway.
Framework Wars
Frontend: React vs Vue vs Svelte vs Angular vs...
React: Dominant but complex, JSX mixing concerns, hooks learning curve Vue: Progressive, easier learning curve, less ecosystem Svelte: Compiler-based, less boilerplate, smaller ecosystem Angular: Full-featured, enterprise choice, steep curve
Reality: React won market share. Others are perfectly good. Choose based on your needs.
Backend: Express vs Fastify vs Nest vs...
Similar story. They all build web servers. Pick one and build.
The "Real Programmer" Gatekeeping
Debates about what counts as "real programming":
"If you use NoCode tools, you're not a real developer" "If you use frameworks, you don't understand the fundamentals" "If you need StackOverflow, you're not a real programmer" "If you prefer high-level languages, you're not serious"
Reality: These are gatekeeping, not legitimate critiques. Good developers use the right tool for the job, including high-level abstractions and asking for help.
Build things that work and help people. That's what matters.
Text Editor Holy Wars
Vim
- Pros: Fast, powerful, available everywhere, modal editing
- Cons: Steep learning curve, arcane commands
- Users: Can't stop telling you they use Vim
Emacs
- Pros: Infinitely customizable, Lisp-based, powerful
- Cons: Complex, "operating system disguised as editor"
- Users: Even more likely to tell you than Vim users
VS Code
- Pros: Great out of box, huge extensions, free, regular updates
- Cons: Electron (resource heavy), Microsoft
- Users: Majority of developers now
JetBrains IDEs
- Pros: Powerful refactoring, excellent language support
- Cons: Expensive, resource heavy
- Users: Professionals who value productivity
Reality: VS Code won by being good enough for most people and free. Modal editing fans use Vim/Neovim. Others use what makes them productive.
Nobody cares what editor you use except other people in editor debates.
Best Operating System for Development
macOS
- Pros: Unix-based, great UX, consistent hardware
- Cons: Expensive, Apple ecosystem lock-in, limited customization
- Users: Many web developers, iOS developers (required), designers
Linux
- Pros: Free, customizable, powerful, open source
- Cons: Driver issues, inconsistent UX, time investment
- Users: Server-side developers, open source enthusiasts, people who like control
Windows
- Pros: Compatible with everything, gaming, improving dev tools (WSL)
- Cons: Historically poor for development, still some friction
- Users: .NET developers, game developers, people who also game
Reality: All work fine now. WSL made Windows viable. Pick what you like. Stop trying to convert people.
Methodology Debates
Agile vs Waterfall
Agile won in name. Most companies do "agile theater"—sprints and standups without actual agility.
Waterfall works for some contexts (regulated industries, hardware).
Reality: Most development is somewhere in between.
TDD (Test-Driven Development)
Defenders: "Write tests first, better design emerges!" Critics: "Slows development, over-engineers solutions!"
Reality: Test coverage good. Writing tests first works for some people, not others. Do what makes you productive.
Microservices vs Monolith
Microservices: Scalable, independent deployments, complex operations Monolith: Simple to develop, easy to deploy, can become unmaintainable
Reality: Start monolith. Split when you have scaling problems. Premature microservices is painful.
Semicolons in JavaScript
Some style guides require them. Some ban them. ASI (Automatic Semicolon Insertion) means JavaScript adds them sometimes.
Reality: Use a formatter like Prettier. Let it decide. Never think about it again.
Why These Debates Never Resolve
Personal investment: After learning a tool deeply, hard to admit another might be better.
Context blindness: What works for your project might not work for others. But we generalize from personal experience.
Identity attachment: Tools become part of identity. Criticism of tool feels like personal attack.
Tribalism: Humans love in-groups and out-groups. Tech tools become tribes.
Legitimate tradeoffs: Most debates have valid points on both sides. No objectively correct answer.
How to Debate Productively
Acknowledge context: "For my use case, X works better because..."
Recognize tradeoffs: Every tool has pros and cons. Admit your choice's weaknesses.
Stay curious: Ask why people prefer different tools. Learn their reasoning.
Change your mind: When presented with good arguments, updating your position is strength.
Remember it doesn't matter much: These debates are fun but ultimately minor. What you build matters more than what you build with.
The Only Correct Opinions
Just kidding. There are no correct opinions. That's why they're opinions.
Well, except these obviously correct truths:
- Putting toilet paper roll "under" is wrong
- Pineapple on pizza is personal choice
- *** Hard is a Christmas movie
- Tabs vs spaces: spaces are industry standard but tabs have valid use cases
(Watch the comments prove even these are debatable)
Debate for fun. Learn from disagreement. Don't take it too seriously. In 10 years, we'll be arguing about completely different tools and languages, and these debates will seem quaint.
The real winner? Whatever tool lets you build things that help people. Everything else is noise.