A couple weeks ago, Wired did a focus piece on the ‘Pivotal Way’—how the engineers at Pivotal Labs have branded their approach to agile development. The title of the story, ‘Why This Company Believes You Should Never Hack Alone‘, alludes to one of the Pivotal Way tenets: pair programming.
Agile may be a known quantity to almost every dev shop today, but pair programming is usually not a familiar concept. Basically, for our Pivots, it means that every day they get the assignment that is needed to complete their next development story, and at the same time, they pair with another developer to complete that story. Their assigned pair may be another Pivot, or a customer, but it is likely not someone they worked with yesterday as the goal is to rotate frequently. The developers will share a common workstation. It will have one big monitor, and two keyboards. They will talk, write, and test their code together until their workday is over, traditionally at 6 pm.
They won’t be on email, playing video games, surfing the web or wasting time on social media. They won’t waste valuable daylight hours going down the wrong programming path, or trying to debug an problem on their own.
They also won’t work all night.
What they will do is be seriously productive all day. They’ll be proud of what they accomplished at the end of the day. And, importantly, they’ll go home at a reasonable hour.
Industry Trend Shifting From Workaholics to Delivery
This is a trend that is working better for recruiting than anything else these days. Personally, I’ve been in software for almost 20 years. I’ve seen Google’s amazing cafeteria, and even gotten a massage or two in one of their massage parlors. I’ve lived for 3 days on the walls of fancy snack food found on every floor at VMware. I drank my weight in free diet coke and coffee at Siebel weekly. Fancy parties? From private parties where you have to decide if you want to see Elton John or Lenny Kravitz playing in parallel, to free kegs on Fridays—I’ve partied with the best.
All of these perks were amazing, and certainly something to brag to your friends about. But are they really the most important thing to building a great company?
Hopefully the answer is obvious: No, employees are the most important thing to building a great company. And maybe because much of the top talent pool lies with people that have 20 years experience, but even for the ones with less experience, it doesn’t take long to see someone burn out and realize you never want to be there. As a result, we techies no longer care as much for the flashy perks—we care about work/life balance and about being great at our jobs.
InfoWorld this week shared a story on how this trend is affecting how the top companies get top talent. In recognizing that the perks come at a price, author Dan Tynan explains,
“But only the naïve believe such perks are truly free. The trade-off for being served breakfast and dinner at work is that you’re expected to arrive early and stay late. The toys, trips, and games with coworkers substitute for a social life, as it is not uncommon for developers to grind through 80-hour workweeks. It’s a culture designed for the young and unattached.”
With the shift of no longer thinking of your job as the place you will spend the majority of your waking hours, developers are now looking to see how they can do the coolest stuff in the shortest amount of time. They want to work with modern tools, they want to advance their knowledge, and they want to continuously know they’ve achieved something important.
21 Reasons Why Pivots Love The Pivotal Way
The Pivotal Way hits this squarely on the mark, with lots of the benefits being drawn from pair programming. So, I asked the Pivots at Pivotal Labs what they like best about our approach to programming and, frankly, the response was overwhelming. With 21 reasons in just a day of discussion, it is obvious that Pivots are passionate about developing, learning and results:
- Agile, Seriously. According to the Agile Development Survey, 83% of companies plan on doing Agile development in 2013, however very few practice the whole methodology like we do including pair programming, small user stories, measuring velocity, retrospectives, etc. We feel by doing the full practice, we derive the full benefits including faster time to market, increased productivity, reduced software defects and lowered cost of development. All these are great for the resume, and breed a feeling of achievement daily.
- Pair Programming. Initially, it may seem like a waste of a second developer, but in practice it is the best use of both developers on tasks today, and help them to learn for better performance on tomorrow’s tasks as well. Developers already ask co-workers, forums, and the internet for answers when they get stuck. Pairs offer you an expert right there and act as quality control as you are developing, resulting in better code output. Pairs also work to ensure code keeps flowing even through interruptions, since they tend to draw in only one person and the other can return to the pair’s task.
- Test Driven Development (TDD). This is basically where you write tests first, then develop the code. While it may seem backwards in your approach, highly disciplined TDD enables us to write better designed, more maintainable code. It allows us to continue refactoring aggressively and moving fast as the product grows. It also eliminates the need for design and code reviews since the test results speak for themselves.
- Sustainable Pace. We work hard on a regular schedule, but we don’t work extended hours. Clients are amazed at the speed and consistency which we deliver features, and also appreciate the predicable costs. New hires like the idea of a consistent schedule, and avoiding getting burned out by working long hours.
- Multiple Projects. We often work on four or more projects each year. We get experience with all sorts of teams, products, and technologies that builds on our individual value as a developer quickly. We carry that valuable experience to future projects, and importantly, we don’t get bored.
- We Don’t Try to Predict the Future. A lot of time in software development can be wasted trying to plan for features that may or may not be developed. We build software iteratively based on today’s requirements alone. Our tests protect the previous features while we refactor the system to support the new features and keep the code clean. This makes it easy to always just build the simplest thing that will work. Before you know it, you have a robust product with lots of features and no wasted effort. And we avoid the stressful, complex architecture planning up front that would have changed a few days into coding anyways.
- Craftspeople. We enjoy the craftsmanship of software construction. We build software for eight hours a day where we spend almost all of our time building, not just talking about what to build.
- Full-stack Engineers. We all work on every part of the project, which means we all learn everything from the front-end to the back-end allowing us to avoid building silos of knowledge that cause bottle-necks in development, or worse, can derail a project if that person is hit by a bus or moves to another job.
- Do-ocracy Rules. With everyone being full-stack engineers, and invariably familiar with the entire code base, it is really easy to trust everyone on your team. This also means that if any Pivot finds a problem, their attitude is to simply fix it. No bureaucracy. No toes stepped on. Just progress.
- Fellow Pivots. We work in an open-plan office space with talented, like-minded coworkers who have worked on tons of projects and solved countless problems. This is very motivating, and by working one-on-one with all of them, we develop a great sense of community and support network for just about any challenge in software we face.
- Energy. As soon as you walk into a Pivotal office, you’ll feel the energy in the air. Pivots are a passionate bunch, and we collaborate all day long every day. The sound of tens of pairs talking to each other all at the same time in an open floor plan creates a vibe that you won’t feel at any other office.
- Breakfast and Lunch. We have free catered breakfast every day, and snacks just like many Silicon Valley companies, but really we’ve also built our entire workday schedule around mealtimes more than the meals. Breaking bread together is a fun venue to discuss challenges and ideas, and to make friends. It also puts the entire team on the same schedule, making it easier to do all your meetings, work your day, and get out at a predictable hour.
- Learning. Pair programming and our levels of productivity mean we’re always learning new techniques and technologies on every project. While all of our developers are accomplished professionals, and coding concepts typically lend themselves across different languages and platforms, the devil is always in the details. One Pivot, Chris Adams, capsulated this concept perfectly with his story, “I started here with 7 years of .NET experience working on some of the largest sites an oldest codebases in the world. I know the “what” of software engineering, however being new to Rails and iOS I’ll often not know the “how”—but my pair does!”
- Teaching. The same way you have the opportunity to learn on each project, it is also inevitable that you will master something and become the expert instructor, able to share your knowledge and build your confidence.
- Highly Productive. We’re very productive. We work hard and stay focused. We avoid unnecessary meetings, e-mail, Facebook, and all other distractions. In turn, we go home each day with a satisfying feeling of accomplishment, knowing that we personally contributed to the team’s high rate of delivery, and there is no work that needs to come home with us.
- Technologies. We work with exciting technologies and platforms, from mobile to web-scale, employing cutting edge technology stacks with a modern approach. This makes the inner nerd in each of us very happy at the end of the day.
- Community. Our culture intentionally exposes us to lots of projects, ideas, and people. We work with everyone from recently formed startups to Fortune 500 enterprises. We pair with client developers. We’re active in open source projects. We have catered lunch talks every Tuesday where we invite speakers from the wider community. We host meetups, pair exchanges, and other community events in our office. This helps us all to build our knowledge and networks, and we are very proud of that.
- Startup Experience. More unique to Pivotal, we are a big company servicing the technology needs of all kinds of organizations. So, often we get the best of both worlds by working with hot startups on the cutting edge, without the drama and stress common to working at a startup. We also get some pride from helping to shape the company culture and development practices at many startups.
- Software as a Team Sport. We work in small, cross-functional teams. We integrate Product Managers and Designers tightly into the development team. We switch pairs every day, and every engineer works on every part of the software. This aligns us on the common goal of shipping software together. Our collaborative process gets people working together by breaking down silos of business, product, design, engineering, and quality. When something goes wrong, invariably, the whole team worked on it, so there’s no finger pointing. We don’t suffer from the rivalries and competition found at some other companies. Small teams also means that your contribution has a big impact.
- Travel As You Like It. Since we are set up for pair programming, its rare that we travel. However, Pivotal Labs does have offices around the world. For those interested, there’s an opportunity to visit and work in other Pivotal offices, which gives you the option to travel to a friendly place and learn from pairing with even more Pivots.
- Career Growth For Every Path. Pivotal offers a sustainable career growth path which does not have to include being a manager. We value skilled individual contributors, project leaders, and technology specialists. There are also management opportunities for those who are inclined.
Summary
The Pivotal Way, in many ways is about building great things on the backs of great people, and ensuring it is a great experience for those people. It is a self-renewing cycle of learning, engagement and successes that provide both the results our customers are looking for while still managing to place the needs of our developers first. To get there, you have to be fully on board, but once you are, we promise we can take you far in your career and give you a community unlike any other.