Article summary
Most of the heated arguments on the internet about various tools and technologies end up being unproductive exchanges of hot air. This is especially unfortunate because whenever you have two strongly opposing viewpoints, that’s often when you have the greatest opportunity to learn something new and useful.
The blending of ideas from completely different spheres or different views is how innovation happens. We forget how diverse a field we work in, and we often are needlessly talking past one another.
Common Fallacies
Here are some common fallacies:
- It doesn’t work for my use case, so it must not work for yours either.
- It works great for my use case, so it must also work for yours too.
- I don’t know much about it, or it looks bad on the surface, so it must suck.
- It’s the easiest for me at the moment, so it must be the best.
Notice that much of this boils down to assuming that everyone’s circumstances are similar to our own.
Rather than discussing if a technology is inferior/superior overall, it would be much more productive to discuss where a technology is particularly useful, and whether another technology would work better.
Example: Static vs. Dynamic Types
This debate is a common one. Both static and dynamic types have their advantages. We would be much better served if people articulated where they found the different paradigms to be beneficial.
If you’re saying that static types are worthless, and your only experience with them is with java, then you don’t know what you are talking about. You should give Haskell, F#, Scala, or some language with a Hindley-Milner type system a try.
On the other hand, if you’re saying that dynamic types are worthless, and you’ve never encountered a scenario where dynamic types allow for more elegant solutions, then you don’t know what you are talking about. (Erlang anyone?)
Trying to see where other paradigms have an advantage results in awesome tools like the dialyzer, a powerful tool that blends the advantages of both static and dynamic types.
Converse Better
Want to have better, more-productive conversations? Try this:
- Don’t get in a rut; learn new things. It’ll be good for our discussions online and your career as well.
- Give opposing viewpoints a chance. Figure out what it is useful for. There’s bound to be something.
- Qualify your statements. Don’t say, “static types suck.” (They don’t always suck.) Say, “static types suck in this particular use case.”
And if you find yourself having a strong opinion about something you’ve only used for an hour or so, please do a little more research before sharing that opinion.
What I’ve found in many of these arguments is that each side is simply more comfortable w/their choice of technology, but they’re somewhat insecure about it. So they try to argue why their’s is better.
[…] Converse Better: How to Have Productive Technical Arguments […]