Opinions in Software Development

Opinions in Software Development

Opinions are great because they can guide you when you’re just starting out in a brutal space like software development.

Should you learn language X or Y, use directory structure M or N, use framework I or J or no framework at all, … etc? Trying to answer these questions will cause you to lose time.

Most people will pick whatever the industry standard is or whatever their favorite Twitter guru is using.

In this post, I will talk about the pros and cons of not making your own decisions.

Opinions aren’t proven to be correct

Let’s talk about some common thought leaders and their opinions. First there yours truly of course. If you read my posts and Twitter feed, you’ll see strong opinions about a variety of topics. Two other people that come to mind are David Hansson, creator of Ruby on Rails, and Uncle Bob, creator of complicated software development books.

These two people have opinions that are polar opposites. For example, Ruby on Rails projects:

  • Follow a conventional directory structure in order to facilitate onboarding of new developers,
  • Use an ORM that follows the Active Record pattern.
  • Uses SQL by default.
  • Tighly couples UI, business logic, and data management by default.

Uncle Bob posits that:

  • The Rails directory structure doesn’t reveal anything about what this application does.
  • ORMs don’t make sense because objects have both state and behavior but data can’t have behavior.
  • SQL isn’t a good way to store data but just a way for big corporations like Oracle to squeeze money from your pocket.
  • Tight coupling is bad.

In Mathematics, a statement is but a conjecture unless it’s proved to be true or false. If you tell a mathematician that 1 = 2 then the answer will always be: “Prove it!”.

Can you prove opinions and should you even try?

You’ll listen to whatever your brain likes most

Whenever I post an opinion publicly, there are some people who completely dig it while others want to find my house address immediately so that they can come and nuke it along with my existence from this planet.

Why is that? Should mass genocide be carried out against anyone who disagrees with me? Of course not!

It’s all in the brain. Different people have different mental models and see the world differently.

Years of experience will cause you to agree with some things while disagree with others. Duh.

Harmful opinions

Ok fine. There’s no right or wrong and every opinion deserves respect.

This statement is simple enough but what happens when you’re completely new to the industry? Who should you listen to when your mental models haven’t been formed yet. How can you make the right choice when there are opinions that are so completely different from each other?

Let me tell you about how I got started. In 2009, I installed Python 2 but it didn’t make any sense to me. It had something called print but I didn’t understand what was meant by print. Is it like printing paper? What is it?

Naturally, I gave up and came back in late 2010. This time with PHP. It made sense to me, more than Python, because you can use PHP to build websites. Writing code that outputs web pages made more sense to me than code that prints something to terminals.

In early 2011, on a forum, someone commented on a post saying that everyone who’s serious about programming should visit Hacker News . And so I did. I consider this move one of the biggest mistakes I ever made.

Naturally, Hacker News was full of opinions about PHP and they were all bad. PHP is this, PHP is that, you should never use PHP, and so on. As a fledgeling programmer, I was easily influenced.

Two languages that were promoted in favor of PHP back then were Python, and Ruby. Since I already had a bad experience with Python, I decided to try Ruby. I quickly gave up because I didn’t understand how blocks and loops worked. What is this funny .each and { } business, I wondered.

Since I wanted to be a real programmer, I decided to force myself to learn Python. Back in 2011, the Python community was complete shit. There was this whole Python 2 vs Python 3 business. As if PHP vs Python wasn’t enough, now I had to choose between two different versions of a language as well.

Not only was the community shit, but the language as well. Unlike PHP, it wasn’t possible to quickly build web pages. It was mostly a language for developers to fool around with in their spare time. There were frameworks like Django but learning Django is like learning a whole new language.

However, since the expert opinions were so strongly in favor of it, I persevered and refused to touch PHP until 2014. The result was, I wasn’t able to find a job in my country and had to rely on small gigs to make money. If you wanted a job outside of silicon valley back then you had to know either PHP or Java. Anything else was completely useless.

Of course, I came back to Python in 2016 when it finally started to get good and I needed to solve problems outside of web development but I still believe that PHP is better for web development.

As you can see, listening to other people severely hurt my career. How can you avoid my fate when you’re new?

A strategy for avoiding bad opinions

Over the years, I found that the only thing that matters is whether the other person is doing things that I want to be doing as well.

Let’s take a look at David Hansson for example. He created Ruby on Rails, co-founded Basecamp, and recently Hey, an email service with better performance and usability than Gmail. Not only is he shipping great software, but his company employs only a handful developers compared to other companies that need 1000 engineers just to build a to-do app.

As someone who cares about entrepreneurship, software quality, and doing more with less, I can dig this guy. I want to ship great software and possibly start a great company like Basecamp someday.

What about Uncle Bob then? To me, he preaches overly complicated practices like TDD, design patterns, functional programming, and other stuff that have no relation to what my goals are. He also claims that programming should be like accounting instead of an art — something I strongly disagree with because I’ve never met a happy accountant in my life and happiness is a must for me.

As you can see, I have no reason to listen to Uncle Bob but I will listen carefully to whatever David Hansson says.

You should do the same. Uncle Bob’s teachings might make total sense to you, especially if you’re trying to become a consultant for large enterprises. The best way to make money in enterprise software development is by selling methodology bootcamps and UML diagrams.

Should you listen to me?

Like I said above, only listen to people who have the same goals as you. Go on my Github and see whether you like stuff that I’m building. If not, then you should not listen to anything I’m saying.

Life is too short to be listening to other people all the time. Make your own decisions and trust your gut.