Programming isnt religion, be open to different solutions
By: Peter Matisko
Tags: Programming, Better Programming, Technology, Framework, Programming Languages

Developers definitely belong to a group of very inteligent people, yet, they are able to stuck at thinking paradigms fighting for them no matter what. Whenever I learn something new, or I search for best practices, I find it very difficult to get objective information. Years ago, when I was considering a PHP framework to use, I read as much as possible about Laravel, Symfony and a few more. However, many of the arguments were „religion-like“ fights about who owns the ultimate truth. Some programmers look only at what they already know and are skilled in, but take down everything else.

I think fights over „the best“ technology create a very confusing environment for beginners. It is almost impossible to decide what to start with, especially if you search for a piece of objective information. I have stumbled upon many articles and stackoverflow answers of this kind. Here are some examples:

· OOP is dead, we need functional programming

· Relational databases are dead, we need noSQL

· noSQL is crap, relational DB are the only solution

· why we left noSQL completely

· PHP is almost dead, NodeJs is the future

· Weak typing is the best

· Strong typing is the best

· Etc etc

You will find people who often think in a black/white manner, but the world is much more complicted than that. I don’t think there is a single true answer for any technology. All of them have their strong and weak parts. Hammer is as useful as a screwdriver, but they are hardly changable. It just doesn’t make sense to fight over which tool is better.

When I trained Karate, I liked one particular quote:

„No style is better than the master teaching it“

This is also true for programming. Good or bad code is created by a programmer, not the language or frameworks. I recently read an article making fun of the OOP. I am personally a big fan and promoter of OOP, because it contains an amazing set of useful rules. This author created ridicolious examples using strange OOP concepts to demonstrate how flawed the style is. This sort of argument does not make any sense whatsoever.

Functional programming, for instance, has many great concept that can be used even within the OOP programming. Why not learning more and use what is the best for the problem at hand? On the other hand, following any style or paradigm too strictly ultimately creates ridicolous code. This is where programmers can demonstrate their experience and intuition.

Setting the optimial comprimise between work time, extendablity, readability, testability, design patterns, code speed is an extremely difficult task. Plus, each single problem is different. Even helpful rules, such as SoC (Separation of concerns) and DRY (Do Not repeat Yourself) lead to a state, where we, developers, have to decide for the appropriate depth of their use. We must, at some point, say „this level of separation is enough“.

When it comes to databases, I find the concept of both relational and noSQL very interesting. I am used to relational mySQL style, however, I implement some of the noSQL concepts. It is a kind of a hybrid type of database. mySQL has gotten much better with handling jsons making noSQL concept easier to implement than ever before. However, there are still developers, who would rather create 2–3 additional tables to avoid breaking normalization at all costs. Their solution would be much less effective than using a json in a single table, but they often feel proud to follow normalization forms strictly. Does it make any practical sense? Well, in many cases no. And that is the point.

In the end, styles, languages, frameworks will not help, if developers don’t think about their coding enough. I saw a website with over 30 pages, each having its own header. If the client asked for changing the favicon, they would need to edit 30+ pages. Why didn’t those guys use layouts/templates or at least include for the header? Well, they were probably busy being proud of how long they are in business.

What are your opinions about ideology wars within the tech communities? Do you participate? Let’s have a discussion in the comments.