Friday, December 20, 2013

The Google Test and Development Environment - Pt. 1: Office and Equipment

by Anthony Vallone

When conducting interviews, I often get questions about our workspace and engineering environment. What IDEs do you use? What programming languages are most common? What kind of tools do you have for testing? What does the workspace look like?

Google is a company that is constantly pushing to improve itself. Just like software development itself, most environment improvements happen via a bottom-up approach. All engineers are responsible for fine-tuning, experimenting with, and improving our process, with a goal of eliminating barriers to creating products that amaze.

Office space and engineering equipment can have a considerable impact on productivity. I’ll focus on these areas of our work environment in this first article of a series on the topic.

Office layout

Google is a highly collaborative workplace, so the open floor plan suits our engineering process. Project teams composed of Software Engineers (SWEs), Software Engineers in Test (SETs), and Test Engineers (TEs) all sit near each other or in large rooms together. The test-focused engineers are involved in every step of the development process, so it’s critical for them to sit with the product developers. This keeps the lines of communication open.

Google Munich

The office space is far from rigid, and teams often rearrange desks to suit their preferences. The facilities team recently finished renovating a new floor in the New York City office, and after a day of engineering debates on optimal arrangements and white board diagrams, the floor was completely transformed.

Besides the main office areas, there are lounge areas to which Googlers go for a change of scenery or a little peace and quiet. If you are trying to avoid becoming a casualty of The Great Foam Dart War, lounges are a great place to hide.

Google Dublin

Working with remote teams

Google’s worldwide headquarters is in Mountain View, CA, but it’s a very global company, and our project teams are often distributed across multiple sites. To help keep teams well connected, most of our conference rooms have video conferencing equipment. We make frequent use of this equipment for team meetings, presentations, and quick chats.

Google Boston

What’s at your desk?

All engineers get high-end machines and have easy access to data center machines for running large tasks. A new member on my team recently mentioned that his Google machine has 16 times the memory of the machine at his previous company.

Most Google code runs on Linux, so the majority of development is done on Linux workstations. However, those that work on client code for Windows, OS X, or mobile, develop on relevant OSes. For displays, each engineer has a choice of either two 24 inch monitors or one 30 inch monitor. We also get our choice of laptop, picking from various models of Chromebook, MacBook, or Linux. These come in handy when going to meetings, lounges, or working remotely.

Google Zurich

Thoughts?

We are interested to hear your thoughts on this topic. Do you prefer an open-office layout, cubicles, or private offices? Should test teams be embedded with development teams, or should they operate separately? Do the benefits of offering engineers high-end equipment outweigh the costs?


19 comments:

  1. Where I currently work I do not have an office, but if I did I would choose the open office layout. I feel that team environments should be open and relaxed where if a team member goofed on something they are a foam dart away. Test teams and development teams should always be working together from day one, I think projects would go way smoother this way than having the two working independently of each other. Having engineers work on their choice of high end equipment only leads to high end products in my opinion, if they use crap equipment they're only going to produce a crappy product, it's probably best to dish out the money for better equipment early on than having to pay for up upgrades later.

    ReplyDelete
  2. I personally prefer cubicles since I'll have my own territory :) however, being in that for long time is boring. On the other hand working in open office has so much fun although it's noisy and you can't concentrate on your task. Since I am/was working in small offices I didn't have chance to have both of these environments at same office.
    About testing team, my preference is also having both together although sometimes looking at face of tester make you angry. For short term is okay however for long term (product development) I prefer to not see tester every day (you know having someone always criticizing you is not funny). In my last company Me as developer was working from Malaysia while testers were in Australia and I really enjoyed my life :)
    I also prefer high end devices since it has positive impact on application development although it's costly for the company. I think company will get better revenue finally since developer is able to deliver product in higher performance, enjoying his life and making delivery time shorter. However small companies usually prefer to use out dated equipment to reduce costs of company. I was working in a company that OS of my pc was Windows Vista and PC restarted at least 3 times a day suddenly. When I reported to my CTO he was always said "oooooh, I see, I see" :) (it's not complain, is just sharing my experiences.)

    ReplyDelete
  3. I need at least four screens and the corner with a view - Because I need plenty of space to stay focused, and at least one Admin Asst. ( 2 ) when I get rolling.

    ReplyDelete
  4. Our testers are on the opposite site of the planet, and while they do the best they can to communicate via e-mail and IM, sometimes it's frustrating not to be looking at the same monitor so you can just demonstrate or point at the thing that's either broken or needs improvement. :)

    ReplyDelete
    Replies
    1. Well, your testers can use a screen recorder and send you videos of the steps of the bugs whenever needed. Like Jing is the one. Hope that may help communicate better.

      Delete
  5. como siempre perfectos Google es Google

    ReplyDelete
  6. yo no hablo siento Google perfecto en todo el mundo

    ReplyDelete
  7. For me as a tester, being close to devs is a crucial and vital thing.
    Most defects get detected even before being coded!

    About office layout, here in Kyiv's GlobalLogic we've got office with plenty of cool things. I'd say it somehow similar to Google offices, and it's amazing! Such a workspace keeps me motivated.

    ReplyDelete
  8. Development team and testing team sitting together is a great idea, but I have observed that team sitting in closer layout has impacted the productivity because the place becomes noisy.

    ReplyDelete
  9. I can see there’s a need for close integration between different disciplines but I’m still surprised an open-plan environment is the best choice. Colleagues should be able to chat about stuff that doesn’t concern me without worrying about the distraction that might cause.

    IIRC Bell Labs had offices with windows and doors onto a corridor. If the two sharing the office didn’t want to be disturbed they simply closed the door. The windows meant you could spot John passing and buttonhole him. Tom DeMarco and Timothy Lister’s classic Peopleware also finds against open plan. Perhaps lack of space is overriding possible better arrangements?

    ReplyDelete
  10. 1. Do you prefer an open-office layout, cubicles, or private offices?

    From test engineering point of view Cubicles are the best option. A cubical can give an environment to developer/tester to concentrate on work. When ever it is open-office it may distract people.

    2.Should test teams be embedded with development teams, or should they operate separately?
    Test team must operate separately to avoid development team influence.

    3.Do the benefits of offering engineers high-end equipment outweigh the costs?
    Systems should be provided as per the requirement. For example sometimes test team needs to run 2/3 virtual systems on same system, so in this case high end equipment is preferred, but in the case of only one web system with only one browser a low end equipment should work.

    ReplyDelete
  11. Do you prefer an open-office layout, cubicles, or private offices?
    - We operate in Agile Scrum, so I prefer an open-office layout or if going with cubicles, cubes with half walls instead of full height. Being able to have a quick conversation without having to get up and walk across the room is a very underrated benefit.

    Should test teams be embedded with development teams, or should they operate separately?
    - Again, with Scrum teams, I believe that having the tester embedded within the development team is incredibly valuable. Within our organization the testers are embedded but still report to a different leader than the dev team. This allows us to have testers integrated in every facet of the development cycle, while still being independent.

    Do the benefits of offering engineers high-end equipment outweigh the costs?
    - I believe so. If you look at the per hour cost of a developer and compare that to the cost of an entry level system versus a high end development machine, the additional cost can easily be rationalized through time efficiencies of the high end device.

    ReplyDelete
  12. Yes I'm ready to work for google. I'll work for food. Been waiting to get job at google for long time. Workplace looks very smart setup.

    ReplyDelete
  13. Hi Justin,

    I prefer an open-office layout... Being able to have a quick conversation without having to get up and walk across the room is a very underrated benefit

    That doesn't take into consideration the detriment it may have on those needlessly disturbed by the conversation.

    ReplyDelete
  14. If the development and product delivery life-cycle period is in short term, Open-Office seems more acceptable.

    In my opinion, tasks about development/testing come with the person to everywhere who goes to.

    Best test cases or development solutions do not come to mind at the office every time. I think Google recognized this issue and Google Offices're designed "Feel like at home" Style.

    In addition, the red colored carpets and furniture make me suspicious when i read this news :) http://www.omg-facts.com/Science/The-Color-Red-Is-Scientifically-Proven-T/13980?lp=1.

    ReplyDelete
  15. Looks crowded, seems like you sit on top of each other...

    ReplyDelete
  16. Ankit,

    _Test team must operate separately to avoid development team influence._

    But if the teams operate separately, you also reduce the testing teams' influence on the development team.

    ReplyDelete
  17. There are many different opinions surrounding layout styles when planning an office. Many tech companies and start-ups have embraced open-office layouts with endless varieties of desk, chair, and work station arrangements. Research supports that open-office layouts and communal areas promote idea sharing, however I think the line of business as well as the specific workflow dictates the optimal office layout. Some projects/processes thrive off of collaboration while others demand focus and solitude. For example, the accounting department would be better served in segmented workstations while UI/UX teams will flourish in an open-office layout that facilitates idea sharing. Before arranging or re-arranging an office, it's key to consider how the layout will impact productivity and efficiency. This determination can best be achieved by reaching out to teams for feedback, as you mentioned in your second paragraph with Google's bottom-up approach to innovation.

    ReplyDelete
  18. I like the section about what the people have on their desks... When I remember the long discussions at our place about the costs of larger screens and newer PCs versus the saved handling and compilation times *rolleyes*

    Nevertheless as an embedded systems engineer I wonder if such an open office concept as you have it at most google places would work for people like me with all the stuff on our desks (prototype boards, power supply, measurement equipment asf.)
    Is it the same for the guys doing Android and Chrome OS where the have to test on a pile of hardware?

    ReplyDelete

The comments you read and contribute here belong only to the person who posted them. We reserve the right to remove off-topic comments.