A friend of mine says that we developers don’t know how to write programs. He claims we make a pentacle using wood grouse’s blood, put a computer in the middle and pray the gods of IT make it work.
His insight of the development process always made me laugh. Of course he’s exaggerating—any person, with a little bit of time, could learn to program with no problems. Or could he?
The Sales Standup
Meet a colleague of mine, Jan. Jan works for our sales team, speaks fluent English, and is a pretty smart guy. He also likes himself and, knowing he’s going to read this post, I’m not going to make any more positive remarks about him.
Jan cloned our main repository on his machine to run the Rails console so he can export data into CSV files. Consequently, he knows a tiny bit of Ruby and ActiveRecord—although he probably doesn’t know what they are called.
Everyday, each Fundbase team has a daily standup. The difference between sellers and we developers is that we have an automated standup. We ask our chat bot to run the meeting so it goes trough each ticket, asks the developer for an update and writes the answer as a comment in the ticket’s Jira page.
The sales team has an hour long Skype call.
After one of the people attending the call passed out because he could no longer bear the boredom, my boss asked me to help Jan create an automated sales standup just like ours.
Because I’m a great employee—and I had no other choice—I gracefully accepted.
The deal was that Jan should have done as much as possible and learned in the process. My role was to help him out.
First things first, we had to have our bot running on Jan’s machine. To get the code, a simple
git clone was enough, but here started the pain.
If you don’t watch HTTP 203 with Jake Archibald and Paul Lewis you should start, it’s not only funny but also has good food for thought. In one of the latest episodes, they discuss how hard it is, for newcomers, to learn to program for the web. That’s what I experienced while building the sales standup. Take a look at the video if you want.
The Long Road to Standup
“Ok Jan, it’s pretty easy, first we have to run the bot on your machine. Just type in the terminal
bin/hubot -a hipcaht… No it didn’t work, see the error message? Ok, I know, we need to install the
npm install didn’t work.
Now, imagine you’re new to programming, you’re following some tutorial that tells you to type
npm install in that thing you just learned is called a terminal, you do it, and all you get back is an error you can’t understand. What would you do? I would give up. Luckily, Jan had someone to help—me.
“So, it turns out npm didn’t work because you have a newer version of Node, unfortunately you installed it with Brew, which doesn’t allow you to choose the version you want, so we’re going to install nvm, a version manager for node, select the correct version and run npm again. That’s just a couple of commands and should do the trick.”
That’s exactly what a newcomer would like to hear.
Here’s what we had to do to run the node project, and all the new concepts it required.
Install nvm with this command:
curl -o- https://raw.github.com/install.sh | bash
curl, what is
bash, what’s the
|and, what are command line parameters?
Change Node’s version—
nvm use 0.10.0. What is
nvm, what is
node, why do I need to specify the version, what is backward compatibility, how do you specify the version number in a meaningful way?
The bot then needed some environment variables, so
export VARIABLE=value. What are those variables, why can’t I just write them in the code, what’s an API, what’s an API key?
And finally the bot was ready to go. Jan had only to learn how to use a particular API, how to handle asynchronous requests, and how to use Git. Only.
What Is My Point?
Why am I writing all of this? Because I want to share something I realized thanks to this experience: coding is hard. By “hard” I mean it takes long hours of study even to get started with the basics.
This is not what we want. Almost every existing industry can benefit from software, and that software doesn’t necessarily need to be written by developers, mostly because we don’t have enough of them.
We should really pay attention to newcomers and give them an easy environment where they can not only experiment, but also be productive. Currently, if I look around, I only see languages that traspile and required tools on tools to do simple stuff.
- The sales standup is now running fine, and no one has fainted so far.
- Jan is probably going to code again. Also because he is forced to.
- My friend told me that in order to print, you need to get the spirit in the computer to talk with the spirit in the printer. I started thinking he might be right.