Why You Should Ignore (Most) Posts About Go
March 20, 2012
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:
- are you familiar with the language
- does it cover your needs
- does it fit your project
- would you gain advantages using something else
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.
- you can learn a new language in a short amount of time
- there maybe advantages in one language over another
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.