Some of these thoughts you can read from some links i collected here
p.s. IMHO anyone that is intermediate in in all skills can be a great Team Leader, since the main thing about being a TL is the mentoring and grouping part. I see many TL that are noobs/juniors in many of these fields.
Don't think i am anywhere near senior, am a "proud" junior trying to advance into mid, but i take a look at a couple of real senior @work and this is more of my observation about them and after getting pounded by their feedback.
|tech skill - measured by Programmer Competency Matrix||0-30||30-50||50-70||70+|
|human skills||unaware of his severe lack of skills||aware but cant understand how it will take him forward in his career||continuously learning||able to read people, giving them what they want to hear while saying what they need to hear, is wanted in all meetings|
|time table||cant manage a time table, need to be nanny-ed||can manage his own time per task||can manage his own time for multiple tasks and help / prepare / nanny others||can manage the entire project, including spec, QA, deployments, surprises, ect., can expect realistic delays|
|task management||cant manage more that his current task||can manage few parallels tasks||can manage most tasks that matches his skills-set in the project, to a limit||can manage the entire project, including .....|
|mentoring||cant even accept help||able to accept help||able to give good productive help||able to identify the real backset of the other and give him aimed and specific help (able to say dont learn this)|
|profession / code skills||knows about his code only||knows what is happening with system around his code, both framework, server, ect, and whatever the team has make and can understand the impact on his code and react accordingly||like the former but can also plan ahead and even take use and advantage||understand everything around the code and the project, knows IT better that the IT guys, can plan the project according to the hardware|
|methods / patterns||can code only strait forward||knows about them yet still competing which is best||used multiple and knows that there is no best, only appropriate||able to understand a pattern from reading, knows to choose the most appropriate per project|
|business||cant relate business to his work||understands that someone is paying and able to adjust a bit||understands that the money in the final say and able to adjust accordingly by demand (doing it "less best practice")||completely aware and design all work according to budget|
|QA||blames someone else for his wrongs ("you didn't tell me to do it like this")||hate QA since he is still unable to connect his wrongs to the bugs||doesn't hates QA anymore and is implementing bug fixes as lessons to himself||after QA cant find any bugs he teaches them that real QA should test the flows and he adds smoothness to that|
|self-estimation||thinks he can handle the entire project, hard to learn||thinks he knows best, able to learn after hard failure||understands he is a junior, able to learn from anything||can handle the even he can handle the project ect. he is still always exposed to mistakes ect., is asking for help and second opinion, able to learn without a cause (like bug or feedback)|