Sunday, May 27, 2012

The open plan fallacy testimonials

I wrote an article titled 'The open plan fallacy' just two weeks ago. Earlier this week a similar article was published by the New York Times. The content of that article wasn't particularly extraordinary, but the comments were. I waded through all of them on my daily commute, and it's really hard to find one in favor of open plan offices - people seem to be enraged.

I handpicked some of the most interesting ones.
Research by Emberson et.al. (Psychological Science, 2010) demonstrate both the impairment in performance for people forced to listen to half a phone conversation and the neurological impossibility of "tuning out" these overheard conversations. The office experience has been described as trying to drive a car full of people all talking on their cell phones.
It's preferable to have to make the effort to collaborate than the effort to focus on one's work amidst a distracting open workplace. My profession, architecture, does require a high degree of collaboration, but also a need for intense, individual concentration working on complicated 3D computer models and details.. and long hours being in "the zone". My firm provides private offices for all of its staff and a variety of collaborative and recreational environments.. particularly the latter, recognizing that just by hanging out together for part of the day, individuals from different project teams and pursuits "cross-pollinate", come up with imaginative ideas, influence and inspire eachother.
Cubicles were invented as a way to shove more people into a smaller space and save money for corporations. The entire meme about "improved workplace communications" was invented by consultants as a smokescreen. Period. End of story. 
"For example, someone whose job requires intense concentration (e.g. computer programmer) needs absolute silence. Programmers who do not get this silence are likely to make mistakes."
I've been around a lot of programmers, among lots of other kinds of workers, and I'd say that 90% of the developers I saw were in a large room with others all around them. It's actually one of the least likely jobs to provide someone with an office, despite the fact that your diagnosis about what the job requires is absolutely right, in my opinion.
All it takes is a few months in the world of corporations to understand that Dilbert is really a documentary.
I currently work in an open plan office and absolutely hate it. Not having an office with a door that others need to knock on before disturbing me has led to non-stop disturbances all day long. Not to mention having to listen to nonstop chatter of those around me. It is an incredibly inefficient - and I may add, unprofessional - way to work. Any money saved on rent is surely made up for in lost productivity.
I've noticed that the person who decides on the open cube layout usually sits in an office.
Having participated in the design of office environments, where we used low cubicle walls or even no walls to support certain kinds of collaborative work, with the full involvement of the employees in that design, it was always distressing to see the 'open office' faddishly embraced by management everywhere, regardless of actual practices required for the work. Consultancies, as usual, led the way in yet another blind embrace of 'innovation'.
Why would individual 'entrepreneurs' - to take one example from this story - want or need to be able to see and hear each other whilst working? Are the activities in which they are engaged intimately linked, are the tasks often (and necessarily) performed conjointly, is their own working division of labour a concerted one? What do these entrepreneurs themselves think about such matters? (Well, as the story makes plain, they have very clear answers, voting with their headphones!) Anyway, these are the kinds of very practical questions about work activities and worker needs that should drive office design.
In my article, I advocated isolating teams instead of individuals, but most commenters seem to be heavy supporters of private offices - including walls and a door. I never experienced that in a professional environment, so I couldn't say if that would work for software development. Can you? Collaboration and communication between developers is a necessity. Fostering that just seems hard when everyone is in a separate place - definitely for young teams. While comparing office layouts, I wondered how my proposed solution would scale; how many people can you put in one team before you encounter the same undesired open plan side-effects?

Sunday, May 20, 2012

Painless database logging with mongoDB

While browsing the source code of the ELMAH mongoDB provider, I learned about a special type of collections: capped collections.

From the mongoDB documentation:
Capped collections are fixed sized collections that have a very high performance auto-FIFO age-out feature (age out is based on insertion order). In addition, capped collections automatically, with high performance, maintain insertion order for the documents in the collection; this is very powerful for certain use cases such as logging.
This is such a killer feature. Logging to the database can be extremely useful, but also rather expensive. Using this feature, you can turn on database logging without too many worries.

Insertion into a capped collection is ridiculously fast. To get an idea of how fast it really is, I did some measuring on my own humble machine. I managed to insert 10.000 small documents in less than 3.7 seconds. The headaches of tweaking buffer sizes and rolling asynchronous appenders seem to be miles away.

Something which religiously gets ignored until shit hits the fan, is log table maintenance. With a capped collection there is no need to set up a database job that periodically cleans the logging table. You just set a fixed size, and you're done. No more middle-of-the-night support calls when the logging table is eating up all the disk space.

Creating a capped collection with the C# driver can look like this.
var server = MongoServer.Create("mongodb://localhost/");
var db = server.GetDatabase("PlayGround");

var options = CollectionOptions
    .SetCapped(true)
    .SetMaxSize(5000)
    .SetMaxDocuments(100);

if (!db.CollectionExists("Log"))
    db.CreateCollection("Log", options);
Now that's easy sailing.

Expect to find me posting more on mongoDB in the coming months, I'm starting to really like this little database engine.

Sunday, May 13, 2012

The open plan fallacy

I haven't worked in a whole lot of places, somewhere around four, but every single one of them used an open plan to structure their workplace. From what I hear from others, it's the standard.

There are a few things to say about the advantages of an open office layout. They should stimulate communication, create more opportunities for observing and learning from others and be more cost-effective. I'm afraid it's the latter which is the biggest driver though.

In reality open plans really aren't all that great. The noise alone has proven to reduce productivity by one third. When I look around, I see plenty of signs that people have a hard time getting their job done: programmers buying $500 noise-cancelling headphones in an attempt to keep the environmental noise out, project managers camping in free meeting rooms trying to focus on their number wizardry or even whole teams occupying a meeting room days before a release.

What bothers me the most is overhearing other teams, those distractions amount to nothing at all. What's the value of me overhearing a discussion on some obscure Sharepoint problem? None. What are the benefits of listening to your team's Friday after lunch bullshitting? Nothing. Team dynamics differ, that's normal, but they shouldn't disturb others.

The extreme alternative would be private offices, but I'm pretty confident that's far from perfect as well.

What I suggest, is installing each team in their own fully isolated area, free from distractions caused by other teams. This would still do right to all the advantages of an open plan, while taking away some of its biggest bottlenecks. By installing each team in their own cocoon, you create an environment where overhearing conversations on the next feature is an added value, where you can quickly short-circuit discussions on an architectural decision or where you might even concentrate on a problem for 45 minutes straight. The only advantage which is partially gone is cost-effectiveness; there needs to be some flexible infrastructure in place, that makes it easy to swiftly adapt the environment when team compositions change.

Instead of always focusing on that short term budget win, we need to start paying attention to the big picture again: offices should enable teams, not sabotage them.

Is there anybody who genuinely loves open plan offices? If not, what alternative would you prefer?

Sunday, May 6, 2012

Why I will always love RSS

There has been a lot of noise in the tech community earlier this year about how RSS is supposedly having one foot in the grave. If that would be even remotely true, I hope it dies with its boots on. The herald would be browsers and social networking sites killing or hiding support for RSS. While that may be true, their motives shouldn't rig our opinions.

RSS has never worked out for the regular consumer, not directly anyways. So I get why browsers are dropping support for it, I am not even disappointed. Most popular social networks have enough traction by now so that they can safely start fencing their gardens with the purpose of bringing more money in. Also reasonable.

What startles me is when peers start advertising the death of RSS. The explanations I hear are somewhere along the lines of "Why use RSS? I count on the people I follow on Twitter to share links to good information", or similarly "I just check Hacker News a few times a day to read up on the latest news". I strongly believe the contemporary fetish of liking and sharing cheapens the way we consume our information. Don't get me wrong, I do see value in community driven content, but there's also a lot of dirt and sensationalism. Some days it feels like I'm reading the front page of a cheap tabloid.

I used to subscribe to a bunch of feeds, but today I'm pickier; I subscribe to authors who share things I care about and who inspire me in some way. By subscribing to their feed, I'm not missing a single update. This forces me to absorb it all, even though most of their content doesn't go viral. This liberates me from feeling the urge to be connected all the friggin' time, plus more importantly, there is a gold mine of wisdom to be found in the non-controversial content out there.

I love RSS. It just works, and enables me to learn so much, without having to be connected constantly or having to rely on others to tell me what to consume.

Subscribe to my RSS feed here.

Wednesday, May 2, 2012

My InfoQ article on HTML5 offline web applications

After writing a few things on HTML5 offline web applications earlier this year, I got contacted by InfoQ to write an in-detail article on the subject for them. I hesitated at first, because I was afraid that it would feel too much like work, taking the fun out of my writing. Turns out it wasn't like that at all. The guys at infoQ were really relaxed to work with, asking interesting questions and giving useful feedback, without forcing me into a certain direction. A pleasant experience.

You can find the article here.