This matter that i want to talk about is subjective. Everyone has their own way of doing it. One way (that i am about to talk about) might or might not work for you. In my opinion there is no right or wrong in this matter, it is just simply what is work for you and your team.
OK, so this topic came up on my discussion with someone whose also a team lead of developers. He ask me how you manage your team? What is your way to challenge your subordinates? I won’t tell you how the discussion went, but i will tell you my experience and how i do it my way.
I started my career long time ago from “the bottom” as a junior programmer. I’ve experienced working with many supervisors with various way of the way they managed their team. I’ve experienced different roles as my career grow (like, senior developer, system designer, system analyst, team lead and so on and so forth). So i know quite much things that sometimes makes me frustrated on each role and what things that makes me excited on each role.
I recognized that i grow (skill wise) the fastest when i was working with supervisor that given me freedom to try new things, to solve problem with my own way (of course with direction). Supervisor that sometimes allowed me to do things outside my job description (of course when all main responsibilities are done). Supervisor that showed me, introduced me to knowledge that might help me in the future. For most of the time your supervisor doing those things and direct you without you noticed it, because you usually always excited with what is in front of you (eg: coding technique and else). You usually realized this when you are not working with them anymore.
So i adopted ways that made me grow fast, made me super comfortable as a subordinates before and adjusted with my own style. Give freedom to your subordinates to work with their own way. Find out what excites them, what things that interests them and then direct them to their interests. For example if they interested on database or code technique (or maybe outside of their responsibilities) direct them, let them experience and responsible for it, nobody likes always being told to do anyway, right? I believe they will learn A LOT when they actually doing it, no matter if that is right or wrong on their first try. As long as it is appropriate to your company road map, give them chance as much as possible. Use communication style and tools that suits for you and your team. For example, i personally like the “no boss” approach when the team are small. Change the communication style a long the way if necessary (eg: if the team grows big).
Well, i got to excited to write this. I could talk all day on this matter only. I hope you get the points. Again, please note this is subjective matter. You might experience the same thing as me, you might agree with me on this or maybe not. By writing this post i also want to say THANKS to my past supervisors and colleagues. There is no way i could go this far without all of you guys.