Wednesday, November 21, 2018

The Open Plan Office, My Story

It's interesting to find a lot of angry workers on the Internet expressing hatred of the open plan office citing extreme annoyances such as the following:
  • People shouting at the top of their lungs
  • People playing loud music
  • The office blasting loud ambient music
  • People pretending to be guitar heros on the floor
How exactly is someone supposed to work let alone work productively in such an environment?  To me it seems that the perception of collaboration is more valuable than actual productivity.  Though I have no idea what's so collaborative about some perfect stranger from marketing walking past my work station several times a day.

My own Experiment Involving 3 Companies

Firstly, I credit my first real job in the software industry working in a company with private offices.  Let's call this company Privacy Products for the duration of this post because I felt my privacy was respected at this company.  I worked for 7 years there and I left reluctantly wondering "what else is out there?"  I went on to work for a startup with an open plan office that was very spartan and austere (read: no personal affects).  Let's call this company Spartan Sprockets.

I only lasted 8 months at Spartan Sprockets.  After discussing future steps with my manager I decided to resign.  About a month later I was diagnosed with severe depression and the doctor gave me some of the strongest anti-depressants available.  I thought long and hard about the reasons why I had to leave this company, here is what I came-up with:
  • A team struggling to self-organize and meet deadlines concurrently
  • Continuous pressure to deliver on-time
  • Writing experimental code that must go directly into production
  • Refactoring the worst rats nest of anti-patterns in legacy code I have seen
I'm not a stranger to any of those things, so why did I feel so overwhelmed?

The new company I started working for was not a startup, had much more work / life balance worked into the culture, and was more socially engaged.  It also had an open plan office but personal affects littered the place.  I'll refer to this company as Happy Fun Town.  In particular this company is known nationwide as one of the top software companies to work for.

And I hated it, but I was smart you see!
I made a point of paying attention to any sources of frustration and anxiety this time, and I learned a few things.  What I found is that my attention would wander to another individual or thing in the office that was foreign or novel.  I found I was distracted by all kinds of things such as:
  • Two people sitting next to each other pointing at the same screen
  • A picture of someone's face with a cat's body pinned to the wall
  • Large earrings bracketing long hair
  • Three monitors and a guy in a blue hoodie
  • White iPhone headphones in someone's ears
  • A random cough
  • A sudden "It could be... blah blah blah" from an ambient conversation that doesn't concern me in the slightest
  • A gentle clank on a desk and wondering what would make a sound like that
  • I could even overhear someone shift in their chair
  • I would lock eyes with a co-worker, stare for a moment clueless and bewildered, then mutually nod to resolve the awkwardness.
Noise-cancelling headphones were no help.  At both Spartan Sprockets and Happy Fun Town I worked alongside the most respectful and well-mannered people.  These people were not (completely) obnoxious.  Overall I worked well with most of these people and we would hang out for lunch on Fridays. I enjoyed Privacy Products a lot more though and occasionally think about boomeranging.

Summarizing my Overall Experience

Everyday distractions prove to be the single greatest reason I dreaded coming to work every day.  And it's particularly pernicious because when I get to that point that I dread my career I obsess over (unrelated) big things.  You know you're in trouble when you ask questions like "What is the meaning of it all?"  But it was just a death by a thousand cuts.

Small relatively benign distractions but amplified by constant frequency minute to minute, hour to hour, day to day, week to week, year to year lead to a dramatic deficit in productivity.  I agree with Julian Treasure on this point: you are one third as productive in an open plan environment versus a private office.  I went for more that three years without a private office and without privacy.  During that time I was not proud of the software I wrote.  However, in the several years I worked for Privacy Projects, I helped them take a grassroots product from humble beginnings to a point where it exceeded sales of their flagship product.  I was proud of the code I wrote, and because I had a private office, I had a large enough work-space to experiment with 4 computer monitors.  In seven years I saw my team grow from 4 people to 15 people between two teams.  Every quarter revenue steadily soared even amid the great recession proceeding the summer of 2008.

I produced code I hated both in and out of the office.  I always had a side-project on the go no matter where I worked.  While I worked for Privacy Products I wrote from ground up a voxel-based terrain engine with multi-resolution support and shadow casting; in other words, literally rocket science.  While working for Spartan Sprockets and Happy Fun Town I found I had to shelve the terrain engine project due to feelings of burn-out.  In lieu of that project I took on a much simpler project and found I got stuck on some of the simplest problems and could not seem to move past them; eventually that got shelved too.

I doubt that open plan offices are necessary for effective collaboration. In fact I believe open plan could hurt effective collaboration.  Over the past decade I've found that the vast majority of meetings with other people only involved one other person.  For this a private room is not only sufficient, it is absolutely necessary.  I don't understand where some get this airy fairy idea that an open-plan office leads to greater creativity because ideas naturally bleed from one brain to the next.  Because how exactly does an open plan office encourage active listening? How do ideas spread when everyone wants to be heard and nobody wants to listen?  In every meeting I've been in where there was 4 or more people the topic always drifted, the meetings often went over time, people constantly interrupted each other, and the amount of ground covered was much less than desired.

Data to Consider

Certainly there are ways to avoid careless office plans.  But if implemented poorly you will overhear impromptu discussions from other departments that do not even concern your team or its work let alone you and your individual work.

Now it's time for some data:


I will say this for an open plan office, you can maximize the number of staff per square foot.  It's difficult to gauge the cost of cramming staff together so closely in the long-run, but that's why I decided to write this post.

Here is some research suggesting that the gains of an open plan office don't make-up for the losses:
http://www.sciencedirect.com/science/article/pii/S0272494413000340

Highlights:
  • Satisfaction with IEQ changes depending on the degree of workspace enclosure.
  • Occupants of different office layouts have different IEQ priorities.
  • Noise and privacy loss identified as the main source of workspace dissatisfaction.
  • Benefits of enhanced interaction didn't offset disadvantages in open-plan offices.

Where am I Now?

I have been employed for six years now working remotely for a company that I consider to be on par with Privacy Products because, well, I'm working from my home in my own private office.  Once again I have 4 monitors that allow me to spread more information across my periphery.  I would say my health has improved substantially.  I am off the anti-depressants, my weight is stabilized, I did some traveling, I took-up scuba diving, I climbed a mountain, I joined a club.

Thursday, April 26, 2018

Procedural Terrain Research Project

Rationale

In 2008 I decided that I wanted to build a game for simulating the development and sustainability of a colony on Mars.  I had high ambitions and a keen interest in the epistemic qualities of such an endeavor.  I started with terrain and wanted to ensure as realistic geology and geomorphology as possible because education and simulation was more important to me than entertainment.

I eventually shelved this project discouraged by gaming research suggesting that playing video games could be very bad for a young person's health including shrinkage of the hippocampus and impairment of the prefrontal cortex.  There were other factors involved in that decision as well, but that was definitely the final nail in the coffin.

Below I document my journey procedurally generating an impact crater with outflow channels meandering around it.  Each two-dimensional grayscale image illustrates the DEM (digital elevation model) resulting from each test (top-down view with lighter colors representing higher elevations and darker colors representing lower elevations).  I thoroughly enjoyed this project and hope to find a productive and practical application for these algorithms I have developed.

The Crater




At first I tried to simulate the particle physics of an impact crater as it unfolds in real-time, but this was much too computationally intensive even simulating large virtual particles.  So I started with an optical template with little more than an ejecta blanket.


Here I've elaborated on the template a bit and carved out a cavity in the while preserving the relative isostatic uplift in the center similar to the effect of a falling drop of water into a pool.  Some large craters have multiple concentric rings from the resulting impact (Mare Orientale and Schrödinger are stunning examples in particular) suggesting a corollary to ripples in a body of water.


The next thing I wanted to do was give it a realistic environment.  Here I employ brown noise and merge it with the template.  Brownian noise is particularly useful for synthesizing realistic terrain.  It is characterized by higher amplitudes at lower frequencies (as opposed to white noise which is uniform by comparison).  It tends to best model the appearance of mountains as it does the sound waves emitted by a water fall.


The smoothness of the impact crater was the first thing that bothered me and I was determined to resolve this before moving onto any other experiments.  This is one of the inherent disadvantages of using a template or decal approach offering less flexibility in crater shape perturbation.


This became an exercise of playing with a variety of aggregating mathematical operations until I produced something visually appealing.  I still think this is too simple and inherently too circular.

River Channels



Pleased with the crater I took a short break and moved-on to my next ambition: outflow channels.  Immediately I noticed I had to deal with these subtle rounding errors resulting in pixelated holes.  This is one of the problems inherent to reconciling partial non-integral values to an integral grid system.


This project kindled a love and appreciation for mathematics and linear algebra in particular.  Resolving these errors wasn't easy but it wasn't impossible either. Now I had a baseline established for synthesizing branches and making erosion channels more interesting and varied.


I played with the idea of parallelizing outflow branch computation, but decided that degree of fine-grained parallelism wasn't necessary.  Something didn't sit right with this channel bulldozing the impact crater.  The meandering of the branches also appears to be much too to haphazard, something was missing.


From observing Gold Crater on Mars I concluded that the walls of an impact crater were compressed and higher density than other terrain.  In fact terrain density varies a great deal in general.  So I added an additional density map companion to the height map model and used this to train branch synthesis.  This additional channel made it possible to enhance it further in the future using density generation algorithms.



Taming these meandering branches still proved to be as difficult as herding cats.  I used the pink dots here to help me trace exactly what the main branch was doing.  Was my algorithm ignoring the density values? was I making incorrect assumptions about the calculations?  While one branch broke through the crater wall the other did not.  This still marks an improvement.


Eventually I stumbled upon something that started to make sense.  I wasn't happy with it yet though, the outflow channels appeared too smooth for my liking.  But at least I had an iteration with plenty of outflow channel branches and not a single one breached the impact crater walls.


Finally I stumbled upon something that blew my mind.  There were some emergent effects I had not anticipated: riverine islands.  When I stumbled upon this iteration I was tremendously happy.  In fact that day marks one of my best days of coding experiments.

Here is a 3D rendering of the resultant height map model from three different perspectives.  Note the riverine islands in the last rendered image.  The spires here are the same residual pink / red dots I used for troubleshooting flow paths.


Going Forward

I am currently researching practical applications for the code I have produced for procedural terrain generation.  While the individual algorithms are not distributed / parallelized, the system that generates an environment with these features is (I opted to use OpenMP).  Procedural algorithms include impact cratering, outflow channels, volcanic spires & outflow, wind erosion and weathering. 

In particular the settlement of Mars in any capacity (whether an outpost or self-sustaining human colony) is tremendously exciting and suggests an apropos domain for this technology.