DEV Community

Mark Pritchett
Mark Pritchett

Posted on

Extremes (in) Programming

There are plenty of great articles on here for various programming languages / libraries and so I thought I'd write my first article on another aspect of programming - what I'm calling the Extremes in Programming.

I saw this tweet from Jen Simmons and thought it was a good time to discuss the topic of why people polarise towards one approach, often declaring it's the One True Way.

I've come across many examples over the years, here's just a few:

  • I would never use a SPA framework and the counter, I would always use a SPA framework.

  • I would always use Stored Procedures versus I would never use Stored Procedures.

  • I always use Microsoft products versus I wouldn't touch M$ with a barge pole.

In all of the examples above, and any other come to that, surely we should just be picking the right tool for the right job?

Top comments (15)

Collapse
 
ben profile image
Ben Halpern

I think people sometimes get scarred by a frustrating experience and develop a really strong opinion. Like, based on personal experience, they get really really really strong opinions.

It's also probably a fallacy that certainty is often rewarded over it depends kind of answers. Certainty is probably an antipattern in our craft.

Collapse
 
scottshipp profile image
scottshipp

I totally agree that certainty is an antipattern in our craft. Unfortunately, I've seen certainty be rewarded far more often than not. I find that certainty (zealotry) lowers my respect for people, but managers seem to quite often prefer "simple," "certain" answers. Meanwhile, they often penalize people who grasp subtleties and nuances.

Collapse
 
perigk profile image
Periklis Gkolias

I believe it is plain psychology. People defend their opinions strongly. And they do it because they take their opinions too personally. So if an opinion is screwed and torn into pieces by another fellow, they become devastated.

Programmers, I believe, have stronger-than-average-egos(not sure why, just a statistical observation) and thus we end up to framework-wars.

Collapse
 
itr13 profile image
Mikael Klages

For me i'd prefer to never use java if I don't have to, simply because I think there's always a better tool than java.

But obviously it's better to use java in scenarios where other people who perform better when using java also has to work on a project, or somebody else or I have knowledge with a framework that only works with java (since not everyone knows other JVM languages)

Collapse
 
dkamer profile image
David Joseph Kamer

I think this is more of a preference and less of a generalization.

Collapse
 
quii profile image
Chris James

Surely we should just be picking the right tool for the right job?

This sort of statement is quite tiring to hear, because everyone thinks they're picking the best tool for the job, of course they do!

It's the same as when someone says to me

I like to be pragmatic

Eugh.

Collapse
 
dkamer profile image
David Joseph Kamer

Anytime someone says "never" they're probably misinformed

Collapse
 
camto profile image
Benjamin Philippe Applegate

Never use COBOL to build your website frontend.

Collapse
 
dkamer profile image
David Joseph Kamer

Sort of an extreme case that no one would ever say, but I'll bite.

Compile from web assembly to create in browser COBOL learning tool?

Thread Thread
 
camto profile image
Benjamin Philippe Applegate

Man someone should make that. Instead of hearing about COBOL's crappiness, you coyld experience it firsthand.

Thread Thread
 
dkamer profile image
David Joseph Kamer

Yep, that would be awesome lol.

I think this post is better viewed from the perspective of when a person brings something up like "I do it this way" and someone responds "You should never do that".

Sure there are edge cases when someone says something like "I want to do DOM manipulation with MySQL" but still there is a vein of truth where maybe the meant they want to store templates in a database and execute them through Ajax requests... So even with the biggest conceivable edge case there still is an exception to the "never" unless it is entirely nonsensical.

Collapse
 
denisviklov profile image
Denis Viklov

how do you know that is the right tool?

Collapse
 
markpritchett profile image
Mark Pritchett • Edited

I think it's a mixture of drawing upon previous experience and research / discussing the problem with others.

I've found focusing on what I'm trying to achieve works well. For example, if I'm building an internally facing web app for a company who all use Chrome and the app is fairly rich / interactive, a SPA makes perfect sense since it's running on a fast intranet. Alternatively, if this was a public facing website, where SEO matters and the users had a variety of internet speed and devices, then server-rendered web app with limited JavaScript might be the better option.

Collapse
 
denisviklov profile image
Denis Viklov

Yeap, it's a mature approach of experienced engineer. But I found what all that framework, languages, database wars born in low competency communities, literally between scholars or/and fresh grade. Because they don't have enough experience and knowledge, so in this case you can only repeat silly stamps like: "I use Mac/Linux cuz very secure and have no viruses and Windows sucks" or "Python is slow because it slow". People just wants to look smarter and more important than they are, it's ok. But when I hit 30 years old I found what I don't want to participate in that loose talks if it doesn't touch me directly. World has lot of nonsense and IT industry not an exception, better to stay aside of these "extremists"

Collapse
 
jessekphillips profile image
Jesse Phillips

"surely we should just be picking the right tool for the right job?"

But why is it the right tool and how does it affect the other jobs? If I choose react in one place how does angular pan out for the other, no jquery is really nice in this spot... Your tools can effect what is right for the job and navigating while predicting the future to find that right tool may not work out as desired.