We are fanatical about our culture, we think as a custom software company this is our biggest strength that we can offer to our clients. A good workplace culture brings in great software, the equation is that simple. And the first thing in creating a good workplace culture is create a setting for it - creating the right physical environment that signals the values that we care about. Workspace design is key to a great software company. It is just as easily as important as the software development IDEs and tools. And this is not something new and specific to this space, a craftsman's workplace has always been important, his craft is enhance by the right choice of environment, the right arrangement of things.
We realized this importance right from the beginning, and the first chance we got to setup our environment was in 2005 when we moved from our makeshift offices to a place that we could mold to our needs. We decided to call that place the Nirvana - because that was exactly what we wanted to make our place.
We laid down our goals about workplace as follows and those goals have never changed for us, they define all decisions we take about modifying our environment.
- Workplace has to feel like home.
- Workplace has to be somewhere you can relax.
- Workplace has to be fun.
- Workplace has to have places where you can always find a quiet place to sit and think.
We read up all there was to read (or rather all that Google knew about). At the end two resources helped us a lot in our quest for the perfect workplace for software development.
The first and by far the most important one (over the years) is the amazing book The Pattern Language by Christopher Alexander - which is a list of patterns that make great places of comfort. This obviously appealed to us as software engineers - great fans of design patterns in software design (there is actually a direct link between the two - with the pattern language book influencing the need for design patterns. Here is a link where Prof. Alexandar made a keynote speech at ACM conference on OOP that tells the story from his side.). This book gave us almost step by step instruction of what to do.
The next resource that was a great help was our guru's blog at joelonsoftware.com a lot of his writing guided us, but the must read was the bionic office, read also his updated one (when they moved to their new place). Joel is very opinionated. And that helps, he puts is logic in strong terms and you tend agree or disagree with him pretty early on. A lot of his stuff we followed blindly but a lot we did not and some we initially did but over time realized that there are better ways of doing things and changed.
What we started in 2005 has been an on going thing for us. Because no design is perfect, as we tried out various ideas some worked like magic but some needed subtle changes. Over the years, we have grown much larger in size and got hold of more space next to the original Nirvana. We adapted our workspace design ideas to fit with what we got from feedback from our people. And today at the middle of 2013 we have a set of rules for setting up things which are slightly different from our original and we know for sure it will change over time too.
I describe below what we have now - our workspace design plans, office layouts and placement of different objects within our working environment. I will do most of it in pictures with little notes to go over the rationales or things we have learnt that are important about the elements in the layout.
The work desk
- We feel strongly about the pattern that there should be a wall at the back and that you cannot be approached only from the front. This creates a feeling of safety and it is one thing we never compromise on.
- We place the seats so that you are looking out to the room at other people working on the same project as you are (another pattern).
- We are against Joel's single developer working alone in room model and also against Googleplex like or Agile war room like setup. But if a team wants to adopt a war room setup for limited time that is ok too.
- Desk space is vital for a proper mess. And a proper mess is vital for some developers, SQA engineers and designers!
- Pair programming needs elbow space!
- Transition spaces like corridors are vitally important for a software company. They are where most solutions are found and most designs are finalized. So they need big whiteboards with markers.
- The zen view pattern says points of beauty should be in transition spaces so that it leaves a good memory when you go to your ultimate destination. We agree and try putting in all sorts of points of interest like artwork, aquariums, etc.
- Not in the pic below, but transition spaces need to be dark with splashes of light (another pattern) - this helps the traveler feel they have reached home when they reach their room which are typically brightly lit. (Bit off the rocker statement I agree but we seriously believe this).
- We make the meeting spaces cozy so that people feel comfortable being there.
- We make sure there are no unnatural obstructions like tables in between people.
- We put strong colors in one or more walls - this is gives a jolt to the group when them first go into the room. A jolt sometimes helps people think out of the box. Strong colors also make people confident and help them take bold decisions.
- We eat together because that feels like a family.
- We make the room where we eat feel like a dining room at home, with pictures of our kids, little decorations we've picked up from our trips around the world, etc.
- We make the center of the table well lit and the sides a bit darker to heighten the feeling of grouping.
A Place to Contemplate or to Meet
- A place with a view; so that you can sit, relax your eyes a bit and think about things.
- Some comfy chairs ideally cane to make it feel more like a garden patio.
- A point of interest - like a big earthen bowl with water and aquatic plants in them, etc.
N.B. Just in case you are new here: we are a custom software company in Bangladesh making custom web, desktop and mobile apps for other companies and being very good at it! Check out this page to know more about our software development work culture and environment.