When Programmers Get Annoyed They Innovate

It was a late Thursday evening and I just arrived in Berlin. I went straight from the train station to meet Ori and his Brazilian friend Gabriel. It was a holiday weekend and the town was alive, and I pushed my way through the crowd at Rathaus Neukolln. I spotted Ori from a few meters away because he always seems to be coming up to me while laughing (as if I had just told him a joke telepathically seconds before meeting him). I was also glad to finally meet his friend Gabriel. We strolled from the Ubahn station towards a bar Ori recommended. I looked around the crowds of young hipsters heading in all directions from Neukolln’s main streets. I then looked at Ori and Gabriel and a small feeling of satisfaction washed over me. I must admit that at that point it felt quite nice to stroll around Berlin’s coolest district with two extremely good-looking hipsters. Indeed, programmers are the new rockstars.
We arrived at the bar Ori suggested which looked like a dingy basement party. The one you went to in high school and felt completely awkward at. We sat on an old run-down sofa and Ori immediately started talking about what he did that day at work. He was excited. He told us that he wrote a very useful program that his whole team could benefit from. And he did it just for the heck of it. Not because he received specific orders from his boss. Just because he wanted to.
“Wait a second,” I stopped him. “So why did you do it? Because you just feel like you want a challenge?”
“No, I wanted to write something that runs on all platforms. You write it, and have zero dependencies. So whoever has a UNIX-based system, like Mac or Linux, they are going to run it just by pressing on it. And if I would write it in Python, they would have to install Python. Even if Python becomes standard. People install it. I don’t know many developers who don’t install Python. So I could have done it in Python. It is expected for you to have Python. If not, you write one line and you have Python.”
Note that at this point, I had no idea at all what it was he was making nor did I get what this ‘one line’ was that would magically turn every code into Python, but perhaps I will find out later.
“So if its very basic, you should write it in Python. But if it get just a bit complicated, you should write it in a different language.”
“So what were you writing today? What is it that you wanted to communicate.”
Ori stops to take a breath. “I think I told you about it. We work with a review system.”
“Yeah…”
“So you have to imagine that whenever you write a code, and you want to add it to the main repository…” Ori hesitates because he sees that I have no idea what a repository is. He steps back a bit.
“Ok so there is a main repository for all developers. And everybody can contribute to this main repository.”
We look at each other. Gabriel says:
“Its like a labyrinth!”
“Its like a huge machine, and you just fix each part?” I suggest.
“Its not a huge machine! So, its like a shop of codes. And you have four tailors. And they make codes. And they put it in the store where all the codes are hanging in a collection…. er.. I don’t know…,” Ori looses track of his metaphor.
“Ok I will tell you how it works, because I can’t find a good equivalent in the real world. So we are four developers, and we want to write one app. That’s the main point. There is one thing that we all want to write together. So if I write something, how do we connect it?”
“Ah, ok! So are you writing one part of it? Like you are writing the road, a certain feature, and the other guy writes whatever.”
Gabriel says,”you divide it before you start working on it. So lets say its a robot – one would do the leg, the other the head, the other the arm, and so on.”
“Yes but its not..”
“So how do you connect it? The junction. That’s what you’re talking about,” Gabriel adds.
“That’s the repository,” I say.
“Yes, exactly. But wait wait,” Ori stops us. “We have four developers right. If there were only two developers, and we wanted to write a piece of code, or one robot or whatever, then we would talk to each other all the time and just tell each other ‘ok, I wrote this part, take it, and put it here, and give me yours and we see if we have the same version, you know?” Ori seems his metaphor is now getting complicated so he starts again: “Its like writing a book. Where everyone is writing a chapter. And you want to put it together. But its a book that you always write. That’s constantly being written.”
“But is somebody putting it together? Or is it a robot? Is it automated?” I ask.
“So that’s the thing. The old method is that somebody is putting it together. Or its was more like two people. But if there are four people writing the code, this gets complicated. And if there are 100 people it gets very complicated. Think about one hundred people, and every day, each of them writes four pieces of code and they all want to merge this code together. So lets go back to the four developer example. You have four developers making code, and then you have a fifth computer which is the server. And everybody gives their little pieces to this server. And this server holds the whole picture.”
“Wow.” I imagine it now and get quite amazed.
“And the review system is something on top of this between you and this server. That before it is merged to this one main server, it goes into review. And when its in review, all the other developers can look at it and prove it: “Oh its good enough, we want it in.’ or ‘no, they have to improve it,’ and then they write their remarks about what has to be improved.”
I am getting quite pumped up at this point because I somehow start to imagine how programmers work together. This is big.
“So what I wrote today had to do with the review system. So, ok, we have a big project. We have 100 contributors who all write code to the project. So when you want to put something in for review, you don’t want to ask all the 100 people all the time, because its going to be too much stuff they are going to see, and they won’t have any time left writing their new code because they’ll be so busy reviewing all day. So you want to choose the people who actually know something about this piece of code, are interested in it, and its relevant to them, you know? So the script I wrote is for finding these people.”
“WHAT??” I sort of screamed which was perhaps a little too extreme of a scream for my level of fascination with Ori’s new invention, but it was already late in the evening and I had a few beers.
“So you wrote a program to search for the reviewers. So you are like a meta…”
“Ok we usually what we do is that when we put our new code into this review system, we each have to manually go through and add reviewers. So like say, “Oh, ok, I think this guy is going to be good for this. So I’m thinking about Gabriel, and I add him. And then I think about two other guys, and I add them. And all your teams needs to know about this too. And so the script I wrote analysed the piece of code you committed, and looked at what piece this code is adding to, and then checked out who else added to this piece before…and then comes up with a list of people for review.”
I am quite amazed. “So you are like the nerdy of the nerds. You didn’t have to do what you just did, but you were like ‘oh, hey I’ll invent this to help my team?”
“Yeah, exactly.” Ori stares at me blankly.
“Noooo,” I start to now slowly understand the work ethics of programmers.”So you’re really like ‘my poor team, they all had to manually go through the entire employee list and manually find a reviewer. This isn’t really being productive enough, so I’m going to do something better, which makes things more productive, and…”
“Yep, exactly.”
“Wow.”
“Isn’t your boss like ‘you’re being a teacher’s pet, why don’t you just do your job?”
“No, I like it. I do it for myself.”
“No, but you are allowed to do that during your work time?”
“Yeah, you have a lot of freedom. But it’s not a side project. It actually helps the team.”
“Is that normal, or is that…”
“Yeah it is normal. You write something for yourself. You say, ok I’ll write this because i’m sick of doing it manually. Then you share it with others and say ‘hey, whoever wants to use it, can use it.”
“Wow that’s so interesting. So is that really something that’s part of the culture? That you say, ‘hey, I’m going to do something for the team that makes the team work better?”
“You don’t… really… think about the team. You think about how you’re annoyed. Its a challenge. Its nice. You’re doing something you’re interested in. And you’re annoyed.”
The conversation kept going, which I’ll share with you in the next week. But for now, lets sum up the huge revelation today: it seems that computer progress was simply born out of annoyance.

Leave a comment

Blog at WordPress.com.