In my career in technology, I have had the chance to serve in several leadership roles, latest being Twiga foods. My first time, I assumed leadership, or as the organization referred to it, management involved defining what was good for the organization, breaking that up to tasks then delegating the tasks to individual developers.
Over time, I have come to realize this model of leadership is seriously flawed, not in the least because developers are very smart people, smarter than I am.
Even more important, by monopolizing the work of visioning, I simultaneously lost out on great ideas from others and demotivated them at the same time!
In this entry, we will be looking at what I see is the role of the leader in a software team.
Custodian of priority
All teams face a bombardment of new information every single day. In this blizzard, its very easy to get lost and like the proverbial hyena get split in half!
Your job is to make sense of this incoming mess of requests, messages and bug reports and in the light of your team goals, give them meaning.
Not all tasks are the same, by giving them context, the team can then decide which tasks will give them the greatest return on their time and energy investment.
This also means you guide them in reviewing old commitments to see if they still make sense.
Trawl for new useful information
Nassim Taleb in his classic book The black swan introduced the concept of the unknown unknowns.
A black swan is an event, positive or negative, that is deemed improbable yet causes massive consequences.
In software, this translates to unplanned work. As mentioned in How you pay for technical debt
Like matter and antimatter, in the presence of unplanned work, all planned work ignites with incandescent fury, incinerating everything around it
As the leader, you need to be constantly monitoring your environment for signs of this black swans. It may come in the form of changing business environment for your clients or even unresolved disputes in choices to be made.
Either way, bring them up to the team for discussion and resolution.
Ensure personal growth
Maybe I have been more lucky than others. All engineers I have worked with have been naturally curious autodidacts. Yet for those new in the field, they may have no idea what they need to know or the experiences they need to have to mature into senior roles.
Your work as a leader then is to appreciate raw talent and provide support for growth.
Peter Senge establishes Personal Mastery as one of the core disciplines. He defines it as:
Personal mastery is the discipline of continually clarifying and deepening our personal vision, of focusing our energies, of developing patience, and of seeing reality objectively.
This is very important to understand and practice yourself while encouraging it for others as well.
You see, the higher the skill level of those around you, the more peace of mind you experience. When you are knee deep in a project this is not the time to start wondering if your colleague will drop the ball.
Provide feedback to the team
All successful systems are so because they have someway of getting and acting on feedback from their environment.
This means even as the team is working on the next iteration, you must be mindful of how the last release is being used. What do the users think of it?
Even here, you must be careful the team does not develop a culture of aloofness and insensitivity to the message coming from the rest of the business.
Through this entire entry, you may have noted the leadership I talk about does not need any official designation to execute, yet it will provide a lot of value to your team.
How have you provided leadership to your team today? Talk to me in the comment section below or on my twitter @jchex