1. Know your apps.
2. Understand your domain.
3. Understand your technology under the hood.
4. Have an idea of how you'd approach each project.
5. Write detailed technical specs for juniors.
6. Write general technical specs for seniors.
People
1. Be nice.
2. Understand you are a resource provider, not a boss.
3. Get shit done.
4. Ditch team building gimmicks (see #3 for what's important).
5. Listen!
6. Share. Share. Share.
7. Teach. Teach. Teach.
8. When you need a bad guy/gal, you're it.
9. When you need a good guy/gal, your people are it.
10. Know how to run a project as needed.
11. Know how to run a meeting as needed.
12. Don't be bashful.
13. Don't be (too) stubborn.
14. Stand your ground with users/bosses.
15. Have fun & foster an environment for others to too.
16. Always do the right thing.
17. Never stop being a programmer.
18. Never stop loving building stuff.
4. Ditch team building gimmicks (see #3 for what's important).
I'd say gimmicks aren't going to save you, but consider morale events and other subtler stuff to help build team cohesion. Things like going to lunch regularly together, for example. When people are more comfortable with each other it makes it a lot easier for them to collaborate, rely on each other, ask each other questions, mentor each other, etc.
The art is to distinguish between gimmicks and effective team building. I believe regular lunch together is great. Having a day-long team building event not so much. Watching a movie together is nearly useless because there is little interaction.
I think the important aspect is for people to interact in different contexts. Lunch is already different to the usual office context. Playing games is great in general (board games, paintball, rpg, team sports, whatever).
I think number 8 (& nine, because they are heavily related) mean that when higher ups want to blame someone, they should blame you as technical lead (and not individual team members) but when someone needs/is going to be praised make sure it's the team member that deserves it (and not you!). I heavily agree with this.
You'd be surprised how easy it is for teams to do the wrong thing. Most people have too narrow of a focus, not enough perspective, and not enough wisdom to even care about the right things. Without people with experience, vision, and influence often times the right things just don't get done.
Being nice means not being ruled by your emotions and not slipping into pettiness. If you have a disagreement with someone, do it nicely. Give people the benefit of the doubt. Etc.
But on the other hand, sometimes it's necessary to do or say things that are unpopular or difficult to accept. The difference is doing the unpopular thing that is necessary vs. being mean because you can't control your temper or you're just a jerk or you're trying to "win" some stupid technical argument. Don't be a jerk, don't yell, don't belittle people, but absolutely call people out on their shit when necessary.