The path to leadership in software usually looks something like this. A junior programmer takes a job out of college and works diligently. Every couple of years, that person hops to a new company to get a new job title and an accompanying raise. Eventually, they find a place to settle in for a while. They work into the senior role, get antsy for what ever is next, and poof, they are given a promotion and become a newly minted ‘lead’.
In that time, our developer friend learned to become competent at their trade (hopefully), became familiar with a couple of code bases, and probably has a reasonable professional network. But, where does the leadership come in?
The path to leadership in software, in short, usually has nothing to do with leadership. We take people at the prime of their abilities, and then throw them into a completely new domain. One example I saw of this was at a company several years ago. We had a very bright, and very skilled, programmer that was moved into a leadership role. He was the person that usually wrote good code and was on time, he would go to code reviews and comment on other peoples work. He was good as a programmer and worked well independently, but people weren’t coming to him for anything. He wasn’t actually leading.
For most people, it takes training and time to become a good leader. I like to see some intermediary steps built into the junior, staff, senior, lead pathway. My manager at that very same company was very good at bringing up peoples leadership skills. I enjoyed the experience at least. Rather than taking a technical contributor and sticking the leadership attribute on their shirt, he would gradually turn the dial till they were there.
He started small by taking a task he normally did, one on ones, and giving that to a person. Every two weeks I had a one on one with one of the members of the testing team, just one person consistently. We had normal conversations; how were they doing, was there anything I could help with, what were they working on at the moment. This thought the skill of asking important and sensitive questions in a sensitive way, and also helped develop trust with this team member. Over time, he increased the number of people I was working and decreased the number of people he had to do these one on ones with.
At the same time, he was giving me small suggestions for homework — books to read, Youtube videos to watch, internal company meetings I should attend.
This was a gradual process that spanned more than a year. By the time it was time to offer me the title, there was no question about whether or not I was the team lead. I had the relationship with our team to do the job, and I had been giving the opportunity (and privilege) to read what other leaders in the company were reading.
I see a lot of questionable leaders in software. A little bit of mentoring and care, just like we give for technical staff, would make more competent leadership.