If your goal is getting promoted, doing your job well might not be enough.

Being a great programmer does not necessarily mean you’ll make a great team lead. Working with people is not the same as working with computers. Computers are predictable and reliable (for the most part), and people, on the other hand, are flexible, creative and unique, at their best, and deceiving, disengaged and resentful when their needs aren’t met.

Managing a team is completely different from managing a cluster of servers. There’s no documentation. There’s no restart, reinstall or undo.

How much you know will always be important. But how much you care is what will determine your ability to lead.