LoneStarRuby Conf 2010

Summarized using AI

How to Build a Sustainably Awesome Development Team

Jim Remsik and Les Hill • August 26, 2010 • Earth

In the presentation titled 'Sustainably Awesome: How to Build a Team' at the LoneStarRuby Conf 2010, speakers Jim Remsik and Les Hill share insights from their experiences at Hashrocket, focusing on how to create and maintain a successful development team. They highlight the importance of fostering a positive team culture and offer practical strategies for achieving sustainable productivity.

Key points discussed include:

- Hiring the Right People: Emphasizing the necessity of selecting candidates based on measurable criteria, fit with company culture, and their ability to contribute effectively to the team.

- Openness and Transparency: Discussing how these values cultivate trust and engagement among team members, leading to better collaboration and results.

- Agility and Discipline: Reinforcing that agile methodologies require practice and discipline while allowing for flexibility and adaptability.

- Environment and Culture: Stressing the significance of a comfortable office environment and maintaining a flat organizational structure to uphold accessibility and communication.

- Commitment to Sustainable Pace: Highlighting Hashrocket's approach of maintaining a sustainable work pace, limiting meetings, and prioritizing productivity without sacrificing team morale.

- Learning from Mistakes: Sharing anecdotes about encounters with challenges, such as accidental data loss, and the lessons learned about the importance of autonomy and trust in developer capabilities.

- Community Engagement: Encouraging team participation and contribution to the Ruby community, which provides essential perspectives and growth opportunities.

- Use of Tools: Describing the transition from physical to digital tools, like Pivotal Tracker, to improve project tracking and communication.

Significant examples used in these discussions include:

- The experience of helping a client develop a minimum viable product (MVP) under pressure, which emphasizes the value of trust and agile methodologies in delivering quality work.

- Anecdotes from Hashrocket’s early processes with story cards evolving into a more structured format through tools like Pivotal Tracker, demonstrating their iterative improvement journey.

The conclusions from the talk underline the necessity of:

- Hiring intelligent, effective individuals who align with the company’s cultural values.

- Creating an environment that promotes trust, creativity, and collective growth.

- Focusing on continuous evaluation and adaptation of methodologies to foster an engaged and productive team.

Overall, the speakers advocate for a deliberate approach in team-building that respects individual contributions while emphasizing teamwork and cultural fit to achieve sustainable success.

How to Build a Sustainably Awesome Development Team
Jim Remsik and Les Hill • August 26, 2010 • Earth

by: Jim Remsik, Les Hill

LoneStarRuby Conf 2010

00:00:12.000 All right, we're going to go ahead and get started. The name of our talk is 'Sustainably Awesome: How to Build a Team.'
00:00:17.439 When I started at Hashrocket, I came from a place of great pain. It was government work doing .NET, and I reached the point where I realized that spending 40 hours a week at a job, which is more time than I spend awake with my wife, and not liking the people I was working with so much anymore was unsustainable.
00:00:29.720 So, I sought out a different opportunity. John Lowski had just moved to Hashrocket and found out that they had an opening. I went over there with him. Hi, hello! I’m Les Hill. I was introduced to Ruby on Rails in the fall of 2007. A friend and fellow Rocketeer, Wes Gibbs, had been using Rails for a while and convinced me to attend the inaugural Ruby JAX meeting.
00:00:49.920 That was my introduction to the unique and vibrant community that has grown up around Ruby. At that meeting, we also met people who would go on to start Hashrocket in early 2008: Obie, Desi, Lark, and Tiger. They exemplified the spirit of Ruby on Rails—getting things done quickly, doing it right, and having fun while doing so. This marked the beginning of my adventures with Ruby on Rails.
00:01:17.439 By March of 2008, I built three web apps and contributed a little to Haml, and at that Ruby JAX meeting, Obie announced that Hashrocket was hiring. One week later, I was the seventh Rocketeer. When we started Hashrocket, we had this idea that we could build some awesome products and get rich doing it. I think many of us share that dream.
00:01:48.320 However, after a few successful launches and a few payrolls, we realized we had to pay the bills. Therefore, we decided to do some consulting to get by, and ultimately, our product efforts got shelved. During that time, it became apparent that with consulting, we could maintain a sustainable pace and still enjoy things like boat trips on Friday.
00:02:18.800 So, basically, we took the easier route and found that it worked. We learned some lessons about building a successful software culture along the way, and we are here to share those lessons with you so that you, too, can build a sustainably awesome team.
00:02:50.680 Hiring the right people is critical to building your awesome team. Openness and transparency are essential to maintaining trust and focus within your organization.
00:03:03.400 Participation and giving back to the community provide your team with perspective and an opportunity to grow. Agility takes practice and discipline, as we heard from Glenn this morning, but when done well, it leads to an awesome development team.
00:03:12.080 A comfortable, productive environment is crucial to nurturing an awesome team. Let’s start with some practices that we avoid.
00:03:30.239 Developers have the authority and responsibility to get work done; it’s on their shoulders. We don’t penny-pinch—we have a budget, and we stick to it. For example, our weekly grocery bill runs about $400, but a well-stocked kitchen helps keep us from leaving the office and keeps us energized.
00:03:44.360 Sustainable pace is not just a phrase for us; we practice it. We have no meetings at Hashrocket other than the daily standup, monthly mission control, and our book club. Realistically, your day-to-day working environment isn’t one where you're stuck at meetings all day long.
00:04:01.000 You have a daily standup with everybody that typically lasts 5 to 10 minutes, and you have a daily stand-up with your client, which can last anywhere from 5 to 15 minutes, depending on their needs. We remain as flat as possible; today we are about 40 people, and we are still as flat as we were on day one.
00:04:35.880 We don’t believe in future-proofing. If you’re fireproof, you keep the fire out; if you’re weatherproof, you keep the weather out. But if you future-proof, you keep the future out. We love the future and are excited about it, but we adopt the mindset that you are not going to need it.
00:05:00.720 This picture shows a recent team photo; it’s not the entire team, as there are some visitors in there as well. We have people from Sweden and Germany, and some from the Chicago and Chile offices. As we prepared for this talk, we realized this picture represents our team at that moment, and we will discuss it more as we proceed.
00:05:42.200 This picture is a cultural artifact of Hashrocket. Cultural artifacts help us understand cultures both past and present, but they are not the culture itself. So who remembers Ra's maturity model? See, like the entire Hashrocket table—nobody else? Okay, sweet!
00:06:07.839 The idea behind the maturity model was to capture best practices within the Rails community that would help practices emerge. However, the maturity model is mostly—if not completely—dead. If you go to the RMM site, you will find that thanks to Heroku, it’s still there.
00:06:30.479 Let’s take a quick digression on cargo cults. I think everyone is familiar with the term cargo cult programming, which is programming done with little to no understanding of how the code you're working with functions. This term is well-known because of the John Frum cult in Vanuatu, which arose in the 1930s. The movement was heavily influenced by existing religious practices.
00:07:02.160 During World War II, around 300,000 American troops arrived on the islands of Vanuatu, bringing with them large amounts of supplies, or 'cargo.' After the war, followers of the John Frum cult, which predated the Americans' arrival, engaged in ritualistic practices such as building imitation landing strips in an attempt to attract further deliveries.
00:07:31.520 Reflecting on the maturity model, it turned out to be a collection of cultural artifacts designed to capture practices, but it failed to capture the context of why or how these practices contributed to success. They were easy to parrot, but lacked the rationale and context needed for successful adoption.
00:08:03.080 Over the course of this talk, we'll cover empowering developers, structuring your team, and the important methodologies.
00:08:17.280 Early on, John Lowski and I were working on a Bash script, cleaning up some old files—temporary images. Unfortunately, we forgot to 'cd' up a directory, and the script started removing everything. After about two and a half minutes, we realized something was wrong.
00:08:39.640 What would your organization do when faced with this policy where the developers don’t have sudo access to your systems? Would they just say, 'Don't do that,' or would they develop a backup solution? Would they know this could happen in the future and protect against it? The moral of the story is: don’t handcuff your developers.
00:09:11.440 There’s a quote by Clay Shirky: 'Process is an embedded reaction to prior stupidity.' In my previous government job, which was structured from 9 to 5, the processes were embedded due to the stupidity of those before me.
00:09:49.800 So, it's essential to trust your team. One of our clients approached us after spending six months with two development firms trying to create a detailed requirements document with extensive high-fidelity mockups and diagrams. Unfortunately, they ended up with software that didn’t work.
00:10:17.760 On top of that, they were faced with a looming deadline, about six weeks out, to demo this app they had been working on for six or seven months. The pressure was immense as they were meeting with Facebook to showcase their app, which was critical for their company’s survival.
00:10:54.680 In desperation, they came to us for help. How did we address this? We gathered everyone together and declared it an emergency. We decided not to pair program or write tests because forced heroics could destroy trust and lead to poor results.
00:11:37.680 Instead, we listened to the client and helped them craft a minimum viable product (MVP). This MVP was not in their initial mockups, as they had been building the wrong thing for six months. We worked at a sustainable pace; despite the late-night work environment, we maintained the quality and effectiveness of our deliverables.
00:12:08.640 We adopted an iterative design and development approach. This involved outside-in testing and delivering working software, adhering to the processes that had proven successful for us in the past. We met the deadline, and that company is now one of only nine global Facebook partners for their Ads API.
00:12:34.960 The lesson here is to stick to what you know is right, even when pressured by deadlines or financial constraints. Reinforcing trust within your team is critical for ensuring productivity and enabling the delivery of software.
00:12:59.040 Another anecdote: in the early days at Hashrocket, everything was a bit chaotic. We didn't have established processes, other than some basic story cards; everything felt exploratory. Early on, we wrote story cards on 3x5 cards. When a story was picked up for work, we would move it from one lane to another on a board.
00:13:26.400 This system worked well until someone was not in the office. For instance, Desi would sometimes work remotely from Chile. This led us to realize that the person working remotely didn’t have access to that physical board, so we needed to adjust our approach.
00:14:00.880 By early 2008, we started using Pivotal Tracker. It’s a great tool and allowed us to evolve our story formatting process. We were addressing everything differently, becoming more comfortable with the Tracker.
00:14:39.160 When we started, we were a blank slate, experimenting with various practices and identifying what worked best for us. To this day, we continuously challenge what we’re doing, ensuring that we adapt and adopt methods that yield the best results.
00:15:05.560 Now let’s discuss hiring. Hiring decisions need to be made based on concrete, measurable criteria. If you're hiring someone merely because you like them, you're doing it wrong. Passionate excellence does not come cheaply; it requires hard work and diligence.
00:15:43.360 When someone is not truly engaged, they contribute little to a team filled with people who are motivated. It's crucial to hire people who take their work seriously and are eager to be part of a successful team.
00:16:24.960 You may know this person: Joel Spolsky of Fog Creek Software, who writes the Joel on Software blog. One of his most popular posts is 'The Gorilla Guide to Interviewing.' If you're involved in hiring and haven't read it, you should. His advice is to look for smart people who get things done.
00:16:58.640 These are passionate individuals who love to communicate and explain their work to others. They often take leadership roles and have a history of shipping software, solving problems, and contributing to open source.
00:17:23.040 We believe everyone should hire smart, effective people. However, there's one more aspect: they must be a great cultural fit. While many creative and innovative individuals exist, not all align with your company's culture.
00:17:44.400 At Hashrocket, we've experienced challenges when bringing in people who didn’t fit, regardless of their competencies. Spending 40 hours each week, it’s important to align on values and make the working environment enjoyable.
00:18:07.280 We invest a lot of thought into our hiring process and take time with candidates before making decisions. First, we distribute candidate work among multiple reviewers and then conduct phone screens to dive deeper into any points of interest.
00:18:39.120 If both sides remain interested after that initial screen, we invite candidates for a week-long interview onsite at Hashrocket, where they can pair with team members and engage with our culture.
00:19:06.080 Examining the work a candidate has produced is far more effective than merely reviewing a resume. We look for mastery of Ruby and APIs, the quality of their testing, adherence to accepted coding practices, and the cleanliness of their code.
00:19:43.600 We evaluate commit hygiene on GitHub, analyzing the clarity and conciseness of commit messages. We also review a candidate's online presence—be it Twitter, GitHub, or blogs—for insights into what they consider important in software.
00:20:00.960 A candidate needs at least one person on the reviewing team to be excited about bringing them in. Following initial reviews, one or two of us will conduct phone screenings to engage in a focused discussion to gauge their communication skills.
00:20:33.600 Finally, we do have the week-long interview where we provide accommodation and expect participants to integrate into our environment. This often includes evening activities, whether it’s happy hours or something else that creates a personal connection.
00:21:29.440 During the week, the candidate pairs with several people. Each pairing focuses on meaningful work rather than mundane tasks. We expect candidates to take an active role, showcasing their skills while allowing us to evaluate their effectiveness and whether they fit our culture.
00:21:56.720 We assess coding ability, design sense, refactoring skills, and work style. We value attention to detail and openness to new ideas. Additionally, we seek adaptability to our testing and development practices.
00:22:28.960 Everyone is encouraged to engage with the candidate throughout the week. Opportunities arise for informal interactions, such as lunches or happy hours, where team members can get to know the candidate better.
00:22:54.160 Ultimately, when it comes time to decide whom to hire, the team deliberates. We ask three key questions: Are they smart? Do they get things done? Are they a great cultural fit? If a team member expresses enthusiasm for a candidate on all three counts, they own that decision.
00:23:13.920 This is especially important at Hashrocket, where we don't write things down. Knowledge is shared through conversation, observation, and participation, allowing new techniques to spread throughout the entire company.
00:23:52.160 This is how you build your awesome team—one hell yeah at a time. So how do you build that awesome team? By hiring smart, effective people who align with your culture.
00:24:06.560 Establish open communication that fosters trust and focus within your organization. Get developers engaged through community participation and giving back. Such activities energize developers and create connections.
00:24:37.720 Maintain disciplined practices and continuously evaluate your software processes. Invest in your team's tools—for example, we experienced a couple of robberies and chose to buy new iMacs because we value our culture.
00:25:16.800 Encourage creativity and imagination to shape your team culture. Fostering these elements will pave the way to success.
00:25:57.720 We are open to questions.
00:26:06.040 Yes, where do you primarily find most of your hires? Do you use recruiters or connections? Or do people find you?
00:26:30.640 We often use Workables.com and post ads on GitHub when they launch job opportunities. Additionally, we tweet about openings, which invites many interested developers.
00:26:45.640 Do we have other methods of attracting candidates? Absolutely, we've gotten many applicants who were already following us.
00:27:02.080 You mentioned creativity and imagination; do you believe culture defines creativity? Isn’t it also about the behaviors expected?
00:27:28.960 That's a great observation. As we mentioned, it's not about specific practices like whether you use Vim. It’s actually about the principles behind those practices.
00:28:00.560 Practicing diligently, being disciplined, and sharing values are all integral. For instance, if one pair of developers values test-first practices and the other opposes tests, that pair's productivity is likely to decline.
00:28:27.520 Though refined practices matter, it’s the collective approach that accumulates to achieve success. You’re right; it's crucial for teams to focus on shared values and understanding why they adopt certain techniques.
00:29:02.920 When we bring in new practices, it’s essential that everyone understands the rationale behind them. Through deliberate assessment and evaluation of the practices, we cultivate an environment of continuous improvement.
00:29:24.840 As for our remote offices, we’ve encountered challenges with culture transfer. Hashrocket operates three offices: our main one in Jacksonville Beach, Florida, a new office in Santiago, Chile, and another in Chicago.
00:30:12.680 While our teams in South America and Chicago bring their perspectives, they face cultural disparities with the original Hashrocket. The lack of immediate interaction leads to uncertainties in translating those cultural values effectively.
00:30:31.880 Remote teams are indeed attending daily standups, but virtual meetings feel different than in-person interactions. We use a microphone to capture dialogues, yet many employees miss those spontaneous conversations.
00:30:55.680 Ultimately, the distant connection diminishes the feeling of connection with those working remotely, creating delays in information sharing. We’re continually working to bridge this gap.
00:31:25.800 We’ve also had discussions on how our week-long immersion works—a practice beneficial for both hiring and team cohesion. We acknowledge this approach requires a financial commitment, yet it's vital for establishing rapport.
00:31:45.880 Exposing potential candidates to our culture allows them, as well as us, to identify mutual compatibility. While not all companies can afford such a strategy, adapting the essence of this practice to fit one's context is worthwhile.
00:32:05.880 Maintaining an open-door policy has opened avenues for connections we’re interested in. This leads to inviting interested candidates back for opportunity discussions.
00:32:28.880 We welcome anyone interested in joining us to apply, sharing the culture we've cultivated. We appreciate everyone's questions and participation!
00:32:46.960 Thank you for your attention.
Explore all talks recorded at LoneStarRuby Conf 2010
+22