Friday, November 15, 2013

QCon Day 3: About JavaScript, Scaling GitHub and Twitter, and Cultural Diversity

Man, it really feels like we've been around for ages, but this is just the 3rd day of QCon San Francisco. After a quick breakfast at the local Starbucks we dropped in on another keynote, right after the daily introduction by all track owners. The keynote was done by Brendan Eich, the inventor of JavaScript, and dealt with the present and future of web development. However, he didn't hide the fact that he was essentially trying to convince us that the next versions of EcmaScript are going to be feature rich, performing like race cars, and solve all the issues JavaScript opponents have been throwing at it. In fact, looking at the amount of bullet points on his slides, it is as the JavaScript committee has been trying to add every single feature of every other programming language around. I did notice how well some of the things align with Microsoft's TypeScript, and support for the lambda expressions is indeed an awesome little gem. On a side note, he did manage to impress us with something really cool; running Unreal in WebGL (provided you have Firefox 22).

clip_image001

I also attended a follow-up session on Ember, another JavaScript alternative to Knockout and AngularJs. Tom Dale, the author of Ember did a pretty good job highlighting some of the conventions and elegance he was missing in the other frameworks. Within our current project, we've already decided to go for AngularJs, but maybe we should re-evaluate that decision once again.

And just to stay on the JavaScript topic, I also attended a talk on Reactive Extensions for JavaScript, performed by Jafar Husain, an extremely fast-speaking Netflix architect. It seems that Netflix is doing an impressive job, because a lot of the talks on scalability and high-performance services were done by Netflix developers. Anyway, I was happy to see that somebody finally managed to find some good use for Rx. What I particularly liked about his approach is to think of events as collections that you can execute operations on. I've recently attended an internal talk at my employer Aviva Solutions that dealt with Rx for .NET and I was pretty impressed. But since we're mostly doing ASP.NET web sites, we haven't really found some practical use for it. That notion itself might make me think about Rx again, the next time I deal with that. I've recently attended an internal talk at my employer Aviva Solutions that dealt with Rx for .NET and I was pretty impressed. But since we're mostly doing ASP.NET web sites, we haven't really found some practical use for it. Oh, and for those .NET developers that have been using Rx for .NET already, the JavaScript version has practically the same API.

clip_image002

All that JavaScript was interesting, but what really made this day were the talks from Twitter, GitHub and the Open Space on cultural diversity. For instance, GitHub's Zach Holman shared the many trials and tribulations of moving from a few people to the 250 they have right now. Some of the things they do to deal with the many small and distributed teams are really interesting. As an example, they try to limit the number of meetings that require in-person contact and instead facilitate collaboration by recording all internal talks (they have a dedicated team for that), and providing always-on video conferencing.

But what really struck me is that they don't have any managers. Everything is based on trust. Definitely something a lot of companies can learn from. If you can get your hands on the slides, make sure you check them out. They contain a lot of fresh ideas, but one that really stood out for me is: "Your product should be cutting edge, not your technology". It really covers the no-nonsense mentality that GitHub is showing.

What's interesting is that GitHub puts a lot of emphasis on their values, even though it has been growing ridiculously. And that's something that resonates well with the stuff Pedram Keyani has been sharing with us in his talk on evolving culture and values. Just like Zach said, you should allow failure as well as define your companies values, even if it means making a tradeoff, and make sure your entire company supports those values. I've never thought about these things, but being part of a company that is growing fast, it's easy to see how much those values can help new employees to understand the culture of the company. In fact, if you're hiring new people, you should be verifying whether that persons aligns well with your values. If you don't, you risk people who are fully disconnected from the company's culture.

clip_image003

We got a similar talk from Raffi Krikorian of Twitter, and again the same ground rules apply here as well. And they put a lot of focus on teams and the learning experience. For instance, the teams (5-7 people) get a lot of freedom to execute an assignment in whatever way then want to do it, using whatever process that works for them. They can publicly accept an assignment and then act fully autonomous. Moreover, it's the team itself that is accountable for everything, never the individual person. In fact, bonuses are always granted to the team as well. Only your salary is affected by the individual performance. And if you don't feel comfortable in the team anymore, just apply the "vote with your feet" rule and move to a different team.

Everything else Twitter does is to support those teams. You want to know what the other teams are doing? Just join one of the many Open Beer sessions where teams show each other what they plan to do and when. Or wander through the corridors and look at the posters teams put up to share their plans. You need certain skills? Just talk to the full-time in-house teachers to setup a training (which is then recorded and posted on YouTube for the rest of the world). In fact, Raffi told us that although they do hire a-class developers, they prefer to train the in-house developers instead (which also keeps it interesting for them). In other words, continuous training is part of their values.

So how do they protect the quality of the code? Well, failure is allowed, provided that you learn from that, but hacks are not. Even better, teams are required to spend 10% of their time on removing technical debt. "You don't have technical debt? I don't believe you!" would be Raffi's reaction. Next to that, a global architecture team exists that are there to assist or advice the teams on anything that is required to maintain quality. Raffi told us that Twitter wants to be best company in the world for developers to work for, and I must admit, this does sound like an awesome company that a lot of others can learn from.

clip_image004

As if the day couldn't get better, I joined another Open Space session, this time on cultural diversity. I attended two discussions of which the first tried to identify ways to solve different levels of skills within the teams. We concluded that the more common solutions like brown paper sessions, peer reviews and pair programming can really help, at the end of the day, it's much better to accept the differences and allow room for failures.

The other one was proposed by myself to get some feedback on how to help team members that are afraid to ask questions, or are too much focused on solving a problem without verifying they are actually solving the right problem. To overall consensus is that you should start recognizing the differences, asking specific questions and to try to understand the people in your teams on a personal or private level. One way to do that is to organize a kind of recess outside the confines of the office to meet up with other colleagues and talk about the job, the company or whatever you like. Dana Caulder also pointed out that triggering people to ask two questions about something that cause them confusion might help break through the often seen "Yes, I'm doing fine. I fully understand". Another thing that I'm trying to do myself a bit more often is get back at people after a meeting to see if there were any concerns or questions, especially for those that find it difficult to speak out in a large group.

And just in case you don't have anything to do, I got recommended the books Good to Great, Quiet: The Power Of Introverts and Blindspot: Hidden Biases of Good People, as well as a training called Crucial Conversations.

With that, I must conclude that those three days of QCon have brought me an astonishing amount of new insights and ideas, and a lot of inspiration. But wait, we're not done yet. We've still two full days of workshops ahead. Pff, my head is already exploding with new knowledge.

No comments: