There are tons of advice available for people who want to build high-performance teams, some of it provided by well-researched scholars and experts. This post is none of that. These are some practical findings, based on my own experience, about things that make people happy when working in teams.
Always be very clear about the "why"
Everyone on a team makes countless decisions every day. Some of them are big and critical, many are small and probably can't break anything badly. Knowing why a project is being done helps make these decisions much easier to make, and ensures they all point in the same direction.
Also, knowing the motivation behind what you're doing is a major factor in getting people engaged in the work. It gives everyone a common sense of purpose.
Get people involved early
People like being heard. Good professionals have good opinions about their work, and hearing them will not only make them feel valued, it will also very likely improve the quality of your work. Hear your people, as soon as it is feasible to do so.
If you don't trust them to give good inputs, why did you hire the people in the first place?
Empower people to change
We all make plans, and we all know that plans change. Particularly when writing software, it is often the case that you learn a lot about your project as you start working on it. This is not a failure of planning, it's just a fact of life that teams should embrace. You should trust team members to know when something needs to be changed, and let them change it. And no, this does not mean everyone can go around ignoring your plan or process at will.
Know what success looks like
"No wind is favorable for a ship without a destination". "If you don't know where you're going, you'll end up someplace else". There are countless sayings about the importance of knowing your goal. After you have made sure everyone knows why you're doing what you're doing, you should ensure that there are well-defined criteria for success. Have we finished? Did I do a good job? Did this thing we built serve its purpose?
People who are passionate and good at what they do get bored. If you take a top-notch, experienced software engineering and you keep this person building forms for several months, you can expect bad things to happen. Either they will start getting unproductive, their standards of quality will slip, or they will leave. Maybe all of these.
There are probably many more that I could add to this list. What would you add?