I'm a one-time software engineer, turned software task manager. Right now, I don't get to do any coding, management is a full time job. In fact, I also look for and promote team leads to help me.
Having been on both sides of the equation, here's some other thoughts.
- Figure out the corporate culture - nothing beats talking to people in your company. Your manager is a good first bet. Also, other coworkers, managers in positions like the one you seek, and uber-managers (managers several rungs up the ladder), if possible. The key - it must be someone you trust, whose guidance you are willing to consider. If your direct manager isn't in that category - reconsider getting a position in this group and find another group or company.
- Be trustworthy - when I have to pick someone to delegate to, this is my #1 thing. For me, this means that the person is willing to tell me the truth - whether that's a failure on his part, my part, or just a technical snafu. Also, if you make a commitment to do something, keep it. If that fails, admit it, apologize and suggest ways to fix the failure. The bottom line - I need to know that when I'm not looking, I can trust the lead to be telling me what's really happening and making commitments he can keep.
- Show listening skills - this means listening not only to me, but also to others on the team. Also, listening to what isn't said - body language and omissions. Listening isn't necessarily shutting up and letting the other person talk. It's also asking insightul questions and restating the speakers message so you show you understand. I need to know that the lead will hear the suggestions and problems of his team.
- Be terse but clear - the higher you go in management, the more "clear" means able to speak the business lingo. At a technical lead level, it means a short, sweet problem statement, a short sweet impact statement, and a short, sweet solution.
- Be a problem solver - not just technically, but interpersonally. Good software developers can solve (and even prevent) code problems. Good team leads have to also solve tasking problems, and technical strategy problems.
- Show the ability to learn from mistakes - we're all going to make them, but we all need to learn. Most software developers learn from coding mistakes. I like to know that team leads will also learn from communication mistakes.
- Have a degree of ownership and/or expertise in a critical area - Wow. The only technical one on my list. This means having ownership of a particular, significant feature, -or- having expertise in a particular part of development (database, GUI, logic, etc, or a particular flavor of technology being used). Note that this is the last one on my list. I'm not sure what I'd do with someone who excelled at #7 and was abysmal at #2-6. But if I had someone who rocked #2-6 and wasn't outstanding at #7, my first action would be to assign them somewhere to get experience in a critical area, knowing that once the person was up to speed, promotion would quickly follow.
All of this is demonstrable as an independant contributor. When I think about why people in my company have been promoted, these are the big reasons.
As someone who wants good team leads, I don't need the person to know all the tasks that a team lead has to do - I take on the responsibility for that part of the training myself. And I don't expect perfection - but I do expect the personal dedication to strive to correct past mistakes.
Sadly, there's a second, less fixable, part of the equation - the state of the company. There are times when the most tremendously wonderful potential team leads won't get an opportunity -- namely, when the opportunity isn't available. This was true for several years at a company I worked at - we had enough work to sustain, but not enough work to grow. So, no one was hired, and no one was laid off. But... no one was promoted. Generally, teams stayed together, and moved from one assignment to the next with the same infrastructure.
Concurrently, it's dumb, and I hate to say it - but different companies will have a different, totally unspoken, expectation about how a manager "looks". I hope that most companies these days would not discrimate for any ethically awful reasons - like race, gender, sexual orientation, or family status. But I have suspected cases in my career where these assumptions may have been true:
"managers dress nice" - this is more true in the business end of most companies, but many times, managers dress a slight cut above the rest. In a very old school company, this may be an unrealized, unspoken expecation. It's not completely without merit. In many lead positions, there will more customer facing time. The company may need to know that you have more than the 10 year old Token Nice Suit hanging in your closet.
"managers are old" - we'll call it "experienced". While I would agree that you want to promote a manager who has been around long enough to grasp the nuances of the corporation and to have seen the product go through at least one lifecyle, I'd argue that in some companies, there may be an unspoken age barrier to certain positions.
You can fix the first item by scoping out how managers dress, and imitating them.
The second is not always fixable. I wish I had a solution - I've seen companies loose good employees over this one.