portrait picture

TIMO ZIMMERMANN

balancing software engineering & infosec

Why You Should Ignore (Most) Posts About Go

posted on Tuesday 20th of March 2012 in

A friend told me that it is always a good idea to start a post with some
assumptions and a clear, hard statement and elaborate your point of view
in the following text. I think I will try this. You have to live under a
rock to not notice that Go version 1.0 is near. And to complete his
advice: You should just ignore everyone talking about it.

Now this is a hard statement and I have to watch what I am typing to not
start talking about Go but I think I will manage this somehow. So what
is it I am trying to communicate with this article? There is a basic
problem with most people writing about new packages, frameworks and
languages.

Go – Where Should I Go?

Go is a new language and as always there is a lot of hype. It was created
by some guys and girls at Google and is, without going into much details,
a mix of Java, C(++) and other prominent languages with all the advantages
and disadvantages.

If you have browsed Hacker News, reddit or just opened your feed reader the
last few days it is likely that you have read everything from “Go will
change everything”, to “Go is interesting because” and “Go is already dead,
ignore it”.

The biggest question is, as always when we discuss a programming or
scripting language, if it would be the right choice for you and your
project.

How To Choose A Language

If there is no one telling you what you have to use or if you do not have to
work on an existing system or piece of code you can freely choose what you
prefer. The basic questions are:

I try to elaborate those four points with an easy example. I am currently
working on a content management system that covers some really specific
needs and it would be a pain to customize an existing solution.

Choose Wisely, You Will Be Stuck With Your Decision

Learning a new language for just one project could be an option. If you have
to write a server or process real time informations C(++) could be one of the
only options you have. If you once understood the basics of programming you
can learn most languages in a short amount of time. You will not be able to
deliver the same amount of quality in the same amount of time as someone
using the language everyday but you will be able to deliver.

If your project is not one of those edge scenarios that just screams for a
specific language you are nearly free in your choice. I could have gone
with PHP, Perl, Python or Ruby. Maybe Java.

Programming should be fun. If you do not like the language every minute will
be a pain and earning money with being in pain for weeks or months is not the
most fun thing to do.

Beside fun it should also be a language that does not get in your way. If your
host only supports Python and Ruby you there is no reason to complain that you
cannot use Perl.

Writing a content management system just screams “framework”. There are a lot of
options for every language and they all have their advantages and
disadvantages. If there would only be frameworks in two out of four languages
and the framework would minimize your development time by the factor five
you would be an idiot no using it.

But what if there would only be a framework in one of those and you
would not know the language? It would be a good idea to learn a new one.

Learning Is An Investment In Yourself

I mentioned two things in the last paragraph. Even if I do not talk about
everything the most important stuff is mentioned.

If you think Go could be fun for you – not in the Java and PHP way where you
could stick needles in your eyes and laugh – learn it. Take a weekend or
two or three quiet mornings and read the documentation. Read some blogs what
people already did and watch the packages. If you believe you could like it
and if you find a project that could be realized in it do it.

If you think that Go is not for you that is also okay. Just because some
people advocate it and Google wrote it does not mean it is right for you,
for me, for anyone or any project.

When You Write About A Language Provide Value

The blogsphere wears a new black every week. But no matter what, it always
comes down to the same basic things. Choose what works for you and your
project. Use what is fun to use. Learn new things.

The only thing I ask you is to stop with those “Go is $foo” posts when you never used it.

It does not matter, it is just a waste of time and traffic. If you really want to post
something useful and advocate or flame a language provide examples.
With those it is possible for people to build an opinion. There will be
something called value in your post.

And this should be the only kind of posts about a new language like Go.
Discuss why people should use or not use it from your point of view and
provide examples.

Someone told me that Django sucks because you design your database layout in
Python. He showed me a project he was working on, with all those fields and
relations and possibilities he has to check. He loved SQL. He never wanted
to use something like an ORM. But you know what? I hate SQL. I love ORMs.

He showed me why he does not like something and thanks to him I found a reason
to give something I never considered using a fair chance. Some years later
I use Django on a regular basis.

If he would just have told me that the Django ORM is horrible and that you
would be faster using plain SQL statements and if I would just have believed
him because other people also agreed I would maybe never have tried Django.

People searching the net for informations usually do this to build an opinion.
Instead of shoving yours up their… noses… give them examples why you
think the way you do and let them build their own opinion.