Overall, I had an awesome time over the last 4 months. I was immersed for 8 hours a day in industrial quality Android programming. It was an Agile environment, with strong emphasis on Test Driven Development, Pair Programming, Continuous Integration, and fast iterations.

Orientation

On the first day we learned how Xtreme Labs became Pivotal Labs, and then how Pivotal Labs was a part of a larger organization, Pivotal. For our first week, we weren’t assigned to any project. We were told to create an app on a platform of our choice, which consumes a REST API. The app must display information in a list format, and load it asynchronously. As a bonus, we have to persist the data. I chose to learn iOS, but after 3 days, I finished my basic app and got bored, so I made another one in Android. We also had to test our app using a framework made by Pivotal. These include, Robolectric (Android), Cedar (iOS), and Jasmine (Javascript).

Culture

Lunch and Learns

Every Tuesday the company had a Lunch and Learn, where lunch was catered and a speaker was invited to talk to us about a relevant topic. These talks were a mixture of technical and business. Some topics include:

  • Money management
  • How to market your app
  • TDD with Robolectric
  • MVVM on Android

Pair Programming

Every developer at Pivotal Labs works at a pairing station. Each pairing station has one computer, two duplicate monitors, two keyboards, and two mice. At any given time, only one person can control the computer. This allows for a constant code review by the person who isn’t typing. At first, it’s difficult to grasp the idea that you are not in control of your computer. At the beginning, it frustrated me too. Later on, you become so used to it that it’s hard to code without someone there to tell you you’re on the right path. Code quality significantly increases since every line has been written with at least two pairs of eyes on it. Finally, pair programming increases productivity despite the fact that only 1 out of 2 people can type. There’s no time to screw around when someone is always there watching your screen.

The Tools

  • Pivotal Tracker, our story management tool.
  • Robolectric, an Android testing framework developed by Pivotal Labs.
  • Travis CI for continuous integration.
  • Android Studio for our Android IDE.

Application Process

The process started with a written test, which consisted of only 3 questions:

You are given a staircase with n number of steps. With each stride you take, you can either cover 1 step, or 2 steps. How many different ways can you climb the staircase?

Determine whether two rectangles are intersecting. (You are given the coordinates of all vertices of the rectangles)

What notable projects have you worked on in the past?

Comments