At GOTO Copenhagen 2015, Erik Meijer, computer scientist whose name is linked to functional programming and reactive asynchronous programming, recounted the last couple of years in his life, including his cancer diagnosis and how it changed his way of looking at life, and shared his view on the Hacker’s Way.

Meijer told the audience that he left Microsoft in 2013 to found his own startup, Applied Duality, with the goal of “making the world asynchronous and reactive”. He first worked with Facebook on Hack, a streamlined version of PHP aimed to enable programming in a functional paradigm, he says. Later, he helped Google add support for async/await and streams to Dart in 2014.

Then, around Christmas’ Eve 2014, Meijer was diagnosed cancer, which almost brought his life to an end due to some collateral effects. Meijer spent five days in intensive care, during which he said he felt in a very odd situation where he could have “just floated away” if he only had wished. Out of intensive care, he went back home and started his oncological treatment.

Meijer explained that it took him six months to go back to normal life. During that time, he took that chance to reassess his life and think deeply about what he wanted to do with the rest of his time:

What I wanted to do after this whole event was: can I make my technology kind of do something for real people? […] A real opportunity to help real people in the real world. You have seen what happened now with the refugees here [in Europe] and they use Facebook to kind of find their way. It’s amazing how this really affects normal people.

So when Zuckerberg offered him to join Facebook to contribute to his project aimed to connecting the Earth, he accepted.

The task of connecting the world gave Meijer the chance to go back to one of his favourite topic: “push” vs. “pull”. If you really want to stay up to date with the world, he says, you need to push, i.e., being reactive. Using “pull” will basically add all kinds of blocking points in a program, making it thus inefficient, he says. This is all the more relevant, he goes on, at the scale things are done at Facebook – which lately reached the milestone of 1 billion people communicating in one single day. And this, according to Meijer, is not yet the end of the story, since in order to connect the whole planet, an increase of almost an order of magnitude is still required, an idea that “just blows [his] mind”.

One key idea in being able to scale like that is, Meijer says, going fully push. This, in turn, requires having control over the full stack of technologies in use, in order to make sure that no component in the system is using a pull strategy. Such a component would otherwise become a blocking point. Facebook, Meijer says, provides a case in point for this, since they have open-sourced more than 200 pieces of technology, from languages to databases, from virtual machines to front-end frameworks, etc.. This goes to show that Facebook control all of their stack. Yet another example is Microsot, which made the effort to spread async/await everywhere where it made sense in their frameworks to make sure no pull components were left.

Meijer devotes the last part of his talk to programming methodologies and to Facebook’s hacker way. In Meijer’s view, processes, such as Scrum or Agile, are really a way to take “low educated employees” under control so their product is still average quality. The hacker way, on the opposite, privileges experienced programmers that know how to build stuff and do not really need a process. Meijer quotes Mark Zuckerberg’s IPO letter, where he described a “hacker mantra” that is widespread at Facebook: “code wins over arguments”. This is so because code has nothing to do with talking about code, or drawing an UML diagram, or moving sticker on a board, Meijer says. Facebook’s hacker way has five axioms:

focus on impact: your focus should go where it makes the biggest impact and contributes solving the most important problems.

move fast: build things to learn faster, especially when trying things out is the only way to learn if something works or not.

be bold: take risks and accept the possibility of failing when you try something out. The real risk is taking no risk.

be open: this is reflected in what happens in many Silicon Valley’s companies, such as Google and Facebook, where the open circulation of information among employess is fostered.

build social value: your work should have an impact on the world that goes beyond just building a company.

Summing it all up, a hacker is a someone who experiments with the limitations of a system, with some disregard for accepted rules. A hacker does not like bureaucracy, dishonesty, incompetence, boredom, Meijer says.

Always be critical, always be hacking.

According to Meijer, this contrasts with Scrum’s principles, such as the definition of product owner, of a sprint, sprint schedule, etc. Scrum is highly prescriptive, Meijer says, and “reads like a law book” that require a “police and a judicial system to ensure compliance”. Scrum’s managers are, according to Meijer, like sheepherders, while they should really be like beekeepers and let programmers carry out their job, which is producing code, while ensuring they stay focused on what is important.