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
print
s 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.