imperfect Team Lead

TL is not that familiar enough with the details of requirement and the existing system. TL can design a basic framework, but should let the developer have the freedom to modify details. TL should not keep questioning every change, as if TL knows the details best. Questioning take a toll on the developer’s productivity. Developer would simply decide to take the easy route and stick to the non-ideal design and not bother to improve it.
If I see a lot of code duplication and want to refactor, I worry about
* TL may not like how I refactor
* TL may not appreciate the improvement and my effort may lead to a delay. A lot of my quality improvments are things colleagues don’t do. My initiaitive was mostly unappreciated.
TL treats experienced developers just like fresh graduates.
TL keeps the final vote on every decision, and won’t delegate to even experienced developers.