April 4, 2017
Can you translate that to human language?
A little over a week ago, Loïc Hoguin, the creator of Cowboy - a very popular web server built in Erlang, published an article about his experience of conviencing people to use Erlang, or rather their reaction when they see the Erlang’s syntax :) It inspired me to write this post.
It’s hard to change humans habits (that’s how our brain works), so even if you give someone a super tool solving their problems but it will require changing their habits it might take longer than you expect.
So we actually have to touch generic subjects here:
- how to convience people to replace something they know well (that gives them some level of confidence) with something new to them (and less popular in general)
- how to expose the best features of that what you’re trying to “sell”
It requires some knowledge about humans nature, the process of adapting new technologies, some (neuro)marketing skills and lastly knowledge of the technology itself (Golang in my case). Sounds like a typical skillset of a software engineer! ;)
You probably attended these meetings where an engineer asked by a non technical person working on the same project, why something is not working, the tech guy used very technical terms to descibe the issue. Every other engineer probably was noding his head as a sign of agreement, but the non technical person was silently staring at a table and after a short while asked “can you translate that to human language?” …Yeap, we’ve all seen that.
Waiting for the right moment
There isn’t any golden recipe for conviencing people about trying new things, each case is different, it’s down to the people you work with, the project, the budget, but let’s assume there’s a chance.
If you started a new job in a company with well settled standards, architecture, etc - don’t try to propose Golang (or any new language you like) until you prove your skills, you meet deadlines, etc. Basically focus on your job before you start changing the world around you :) otherwise people who work there longer than you will be smiling looking at your attempts of “improving” things, knowing that there’s plenty of other serious issues that need to be solved in the very first place.
Work hard the best you can, show yourself from the best side, find out more about projects and people - maybe there’s no good fit for Golang in your workplace! Don’t try to introduce Golang just because you like Go.
If you joined a start-up there’s a higher chance to try new things.
What would be a good moment to propose it?
- whenever there’s a plan to move away from legacy architecture (a common trend to use microservices [but you should have a good reason to do it])
- talk to DevOps, there’s a high chance they heard about it and maybe they also want to use it
- you were given a chance to make some presentation on an internal technical meetup/demo
- your company is going to use Docker (Docker is built in Go, make a smart referral to Go)
- you see a chance to build a tool that speeds up some process (like deployment); maybe even build it in your spare time and show people how it saved your (and their) time
- people tend to complain about the currently used language
- start talking about Go during your lunch time, send links to some interesting articles in your “Friday fun” emails (but don’t be intrusive!)
I think you agree it sounds obvious. This part is mostly about “when NOT to” try it :) If you know Golang, you would spot the right moment, if you don’t read further :)
Do not sell it, make them want it
Good car sellers (I’ve never been one :)) know that if you try hard to convience a buyer to buy some car, it triggers that auto-defence mechanism in our brain and we automatically are trying to argue with the seller, finding all the weak points in his reasoning.
So what works better?
I have some family car with a great engine, ..but it’s a bit more expensive and not sure if that fits your budget (spoken with a less enthusiastic tone and slighly moving back to cheaper cars)
What would be your reaction? :) ..I think a lot of people would be at least curious and some people would not like to be treated like someone who cannot afford / deserve something better :)
Remember: the worst you can do is to tell people that the language they’ve used for years (and they may love it) is really bad and in the same time you glorify Go! No, no, no! I saw that once when a good developer tried to convience his co-workers that PHP is stupid and they should use Ruby …after a few months people hated Ruby!
Like I said, people will follow you if you prove your skills, not if you will try to brainwash them. Show them that you make the right decisions, find the right moment (and first of all, don’t be an asshole :) )
Don’t talk about the language (Golang or any other)
Decision makers probably are not technical and it’s safe to assume they lost a contact with IT. They don’t care if the language has a weird or beautiful syntax (btw it’s all subjective), they want to hear about business value. They have only 5 min. for you and imagine that the max. you can present is just 5 slides of your super long presentation.
If you reach the point where your boss asks this question: So, tell me why Golang? this is it! it is your “yes or no” 5 min. conversation. Choose your words carefully. One bad word you and may lose your battle. You should be prepared at that stage, like for an interview.
Here’s a list you can refer to (order it based on the priorities that matter for your team/boss/project):
- Golang is used by Uber, Google, Netflix, Dropbox, Dell, eBay, Yahoo, Zelando, Zynga. Docker, MongoDB are built in Go (find companies that profile is similar to your employer)
- it guarantees the backward comaptibility, so it’s safe for long term investments
- it helps to handle bigger load (broadly speaking ;)) by utitlising all the cores, so it saves money
- it’s fairly simple to learn, so it can be adapted quickly
- it has a lot of mature libraries ready to plug-in, so no need to reinvent the wheel
- it has built-in features that help to keep the code clean, short, efficient and readible by anyone
- it’s blazing fast
- if you really care and have time, propose to do a proof of concept, some sample project that would fit into your organisation. I’m sure that would help you to keep to the topic (“should we use GO?”) alive for the next weeks and nothing is more conviencing that nicely working code (but do something useful ;) )
If your boss knew we were going to talk about Go, he probably googled something about Golang, trying to check its weak and strong sides (beware of that).
Probably the next question would be “how easy is to find people working in Go?”
Would be good if you had asked your coworkers what they thought about Golang, have they tried that? Are they interested to learn it? If so, say “you already have 3 (or any real number ;) ) people who like and are learning Go”.
The answer to this question obviously depends on the region you live in. I don’t know how Go is popular in your country/town, etc. and I don’t have a really good answer to this but I would try to answer it by asking this question: “Would you prefer to hire 10 easily replaceable developers or 4 that can do the same job in a shorter time?” and highlight that Go definitely is getting more popular every year and this trend seems to booming, so we should have a plenty of candidates available in the future.
I’m not a salesman but I thought it’s worth to share some observations, tell what worked for me, what mistakes should be avoided. I really would like to see more people using it but it’s not about forcing Go, it’s just about making people more open to select from a wider range of available options, so “choose the right tool for the job” does not mean “choose between java, c++ or python”.
I recommend you to read a great book of Charles Duhigg about human habits:
“The Power of Habit: Why We Do What We Do in Life and Business”
and here’s the article of Loïc Hoguin about Erlang