A Software Developer's Guide to Working Well with Others
Brian W. Fitzpatrick, Ben Collins-Sussman

#Team_Geek
#soft_skills
In a perfect world, software engineers who produce the best code are the most successful. But in our perfectly messy world, success also depends on how you work with people to get your job done.
In this highly entertaining book, Brian Fitzpatrick and Ben Collins-Sussman cover basic patterns and anti-patterns for working with other people, teams, and users while trying to develop software. This is valuable information from two respected software engineers whose popular series of talks—including "Working with Poisonous People"—has attracted hundreds of thousands of followers.
Writing software is a team sport, and human factors have as much influence on the outcome as technical factors. Even if you’ve spent decades learning the technical side of programming, this book teaches you about the often-overlooked human component. By learning to collaborate and investing in the "soft skills" of software engineering, you can have a much greater impact for the same amount of effort.
Team Geek was named as a Finalist in the 2013 Jolt Awards from Dr. Dobb's Journal. The publication's panel of judges chose five notable books, published during a 12-month period ending June 30, that every serious programmer should read.
Chapter 1: The Myth of the Genius Programmer
Chapter 2: Building an Awesome Team Culture
Chapter 3: Every Boat Needs a Captain
Chapter 4: Dealing with Poisonous People
Chapter 5: The Art of Organizational Manipulation
Chapter 6: Users Are People, Too
Team Geek Tips
JOIN THE TEAM
Don’t work alone. Create a low-friction environment for rapid feedback loops with other programmers.
Keep the "bus factor" high. (Bus factor = the number of people that would have to get hit by a bus before your project is completely doomed)
Practice humility, respect, and trust. Almost every social conflict can ultimately be traced back to a lack of one or all of these behaviors:
Humility: You’re not the center of the universe. You’re neither omniscient nor infallible. You’re open to self-improvement.
Respect: You genuinely care about the people with whom you work. You treat them as human beings, and appreciate their abilities and accomplishments.
Trust: You believe others are competent and will do the right thing; you’re okay with letting them drive when appropriate.
SET THE STAGE FOR SUCCESS
Build a strong team culture. Base that culture on humility, trust, and respect— and consensus-based decision making.
Write a mission statement. It's just as important to agree on what you're NOT doing as what you are.
Run efficient meetings:
Build strong processes and tools around team communication. They're just as important as your software tools.
Never underestimate the bandwidth (and power) of a face-to-face conversation. It trumps all forms of electronic communication.
BE A TRUE LEADER
Remove roadblocks for the team. Strive to be a "servant leader."
Be a leader, not a manager. Managers worry about *how* to get things done, while Leaders worry about *what* things get done, and trust their team to figure out how to do it.
Provide direction and intrinsic motivation. Figure out how much guidance the people on your team need to stay on track—and happy.
MANAGE PROBLEMS WITHOUT DRAMA
MANAGE UP & OUT
Example:
Please get us a pony.
TAKE CARE OF YOUR USERS
When marketing your product, under-promise and over-deliver. Be aware of how people perceive your software; it determines whether they’ll even try it out.
Make your software easy to use. If your software isn’t easy to try, fast, friendly, and accessible, users will eventually walk away.
Listen to your customers. Users want to be heard and acknowledged. Proactive engagement with long-term users has a positive effect on the evolution of your software, and on retaining your customers.
Brian Fitzpatrick leads Google's Data Liberation Front and Transparency Engineering teams and has previously led Google's Project Hosting and Google Affiliate Network teams. He cofounded Google's Chicago engineering office and serves as both thought leader and internal advisor for Google's open data efforts.
Ben Collins-Sussman, one of the founding developers of the Subversion version control system, led Google's Project Hosting team, and now manages the engineering team for the Google Affiliate Network. He cofounded Google's engineering office in Chicago and ported Subversion to Google's Bigtable platform.









