Agile Principle #5: A team of motivated individuals
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
This Agile principle is such good business advice, I could approach it from many other non-Agile directions. It almost transcends business and applies to all human endeavors.
Starting with the motivation issue. Larry Bossidy, one of the world's top CEOs, says that when hiring, a person with absolute determination to succeed will always do better than someone with a high IQ and elite education who is cruising.
Approaching this from a different direction, I recently read a football coaching book, and one of NCAA coaches who contributed to the book said that given the choice between a player with solid technique and a player who is 100% motivated, he will pick the motivated player 9 out of 10 times. This advice is coming from a top performer in an industry that is incredibly well-scrutinized with clear outcomes and performance metrics. This gives me good reason to trust it.
So, speaking of trust, let's move to that. I think that motivation can be universally agreed on as valuable, and if you don't believe me, you're probably not motivated enough to post a comment and debate it. :D
Trust is tricky. A favorite Warren Buffet quote of mine is that "it takes 20 years to build a reputation and five minutes to ruin it." How can you quickly decide if a team is trustworthy? Of course we've all got markers for trust, but I think that a track record of similar and successful projects is a good place to start developing trust. If you can get access to the person who filled the "product guy" or client roles, ask them how they felt the team handled it. Did they feel that the team made intelligent decisions, but kept the client in the loop? Most importantly, did the team provide good value for the dollar spent?
Another thing that can help identify trustworthy people is talking directly to them. Are their answers clear and specific, or vague and filled with jargon? Do they make an effort to understand the client's business and perspective, or do they insist on a particular solution no matter what the context?
Since trust is something that naturally has to build over time, don't wait for 100% trust. If you're always waiting for the perfect conditions, you'll never get anything done. Jump in and give them a shot. This is one place where Cloudspace takes advantage of fast delivery and iterative development. Our process is based off single weeks of work. Of course, we'd love to work with you for several months, but if you have 10 weeks of work, start off for a week or two and see if you're happy. Our clients are free to leave at any point, so this makes for an environment where we consistently perform and deliver. It also makes for an incredibly simple contract.
The last parts of this principle relate to the environment and support. I think this primarily involves internal teams, although a smooth client relationship is always helped when the client trusts the technology decisions and doesn't second guess how things are constructed. There's a balance between understanding the infrastructure and guiding the project, versus micromanaging and dictating. If you were going for surgery, you wouldn't tell the doctor to use a #5 scalpel because you read an article on WebMD. You'd ask the doctor what is going on, expect clear and intelligent answers, then give the doctor space to work.
With respect to internal teams: Cloudspace helps create a healthy environment for our engineers by treating them both as engineers whose skills need to be kept current, and as human beings who have higher needs (think Maslow's hierarchy). Because we treat our people well, our clients get great results from them.
To keep technical skills sharp and communication healthy, we have daily standups that last about 15 minutes where everyone gets a turn to share what they did since yesterday's standup, and anything new they learned. We have weekly "hack sessions" where we review a new technology, or spend time cross-training (teaching things that are immediately relevant to our projects). We constantly talk to people and make sure they are happy with the progress of their project, and to identify things that may limit progress. We're all in a private IRC channel so that we can instantly tap collective team knowledge, or jump to a public channel and tap the knowledge of the community.
Also, good milk comes from happy cows (I know this; I saw them gazing out at the ocean at Point Reyes a few weeks ago in California before eating some of the amazing cheese their milk produced at Cowgirl Creamery). We have team outings where we'll go out for beers, bowling, laser tag, go-karting, or a movie. We have a comfortable dress code -- sandals and shorts are common in our Florida summers -- but we still respect our clients enough to put on a collar to greet them. Since we pair program our Agile projects and have to communicate, we don't wear headphones, but it's typical to trade off on choosing music to put on the speakers (I personally love Pandora, Grooveshark, and The Hype Machine).
All of these things add up to a lean and effective team that has what it needs to execute client strategy and deliver great code. We trust our engineers to do a great job -- we don't micromanage them. Our turnover is virtually zero and we're proud of it. That's the value of a good environment and healthy support.