Last week I attended management meeting for a division of Tyler Technologies. We discussed many topics, one of them was centered around leadership. There is not a big difference between being a leader in software industry and really any other market. I wanted to summarize my thoughts on the subject in this post. I feel like all the examples and subjects in this blog could be applied universally, but I will specifically talk about technical leadership.
There are many management roles in a typical software company. Most, if not all, managers work with people and technology. They manage products, such as software packages. What does it take to be an effective leader? First of all, one has to be a true owner of your product. Product could be a software package or a grocery store, does not really matter. One cannot just feel or act like a an employee who does not care. Manager has to be, metaphorically speaking, a parent for the his or her baby software package. You have to care for the baby, make sure she get the nourishment she needs. In case of software you need to make sure the quality is high, user experience is excellent, interface is good looking, software engineers are well educated and cared for. You need to test your baby software, make sure there are no known problems. You need to research similar products to get new ideas how to make your software better. You need to inform your management of the investments you feel need to be made. You have help your customers to use the software and provide excellent support. You need to follow through on all the issues to bring them to successful completion. You get the idea now, right? Become the best parent / owner you can be, and you will own your and your software destiny.
Second of all, you need to instill confidence in your and your team’s ability to handle any issues thrown your way. This does not mean that you must know all the answers. It is perfectly OK to say “I do not know.” However, if you stop there, you will kill the confidence in your ability to handle problems. You must add “but I’ll find the answer.” In modern world of software development, Microsoft centric in my case, none could possibly know everything. We have internet at our fingertips though, boundless source of knowledge and information. You also do not work in a vacuum, so reach out to your peers and seek help. You should strive to inspire your employees and co-workers with your confident approach to issues. Work hard and continue to learn. Leading by example is the best way to build confidence in yourself and everyone else on your team. You will on occasion feel like an imposter. I know that I do. However, I look back then at my career and see that I was able to handle very complex, hard problems. This makes me feel like my confidence was just renewed. When I see my peers solving issues, I feel that I work on a great team with awesome people. Compliment people on their ability to function in complex world of software development. When they tackle complex problems and succeed in solving them, let them know they are employees you are proud of.
Thirdly, we want leaders who can solve problems. I have been advocating for a long time that we should look for smart people who work hard when we hire new team members. Those people can learn whatever technology we throw their way. When one is faced with an issue, there are a few behavioral patterns that I have seen in my life. Some people resort to finger-pointing. They have very prominent CYA attitude. Other people ignore the issues, hoping they would go away. In my career I have seen many times that issues you do not understand and ignore have a tendency to keep rearing their ugly heads. Real leaders face problems head on. They concentrate on solution, rather than the problem. They do not care who caused the issue, but they want to make customers happy. This requires determination and concentration. Sheer IQ, problem solving ability, thus is crucial to a success of a software team leader. At times you will feel like you loose control. Keep going. Mario Andretti once said: If everything’s under control, you’re going too slow. So, enjoy the ride, even if it gets rough at times. You know you solved problems before, and you can do it again! Do not panic, investigate the problems, and you will find solutions. I found that measured, methodical approach to problems solving tend to lead to success.
Fourthly, leaders build relationships with customers and peers alike. If you never read Dale Carnegie’s book “How to Win Friends and Influence People“, read it. You need to know how to talk to people and build trust. This is important when you are helping your customers. Everyone makes mistakes, and you will as well. Your approach to fixing them is what customers care about. Own up to your mistakes, but concentrate on solutions. If you show your customers that you care by proving help they need, you will build long lasting relationship with them. The same applies to your peers and subordinates. You need to show them you care about them as people, not just as code monkeys. Empathy is a must for managers. Meet with your subordinates regularly and discuss issues that are important to them. Setup 1:1 meetings and offer them help in career advancement. Setup team building events. Everyone loves free food for example, so lunch out once a quarter will go a long way. Celebrate accomplishments, such as software releases. Your peers need to trust you and you need to have trust in them. Without trust you cannot be an effective leader because people will question your every word.
Finally, you need to be able to provide direction for entire team you are leading. This applies to procedures and processes, as well as technology. In order to teach you have to learn however. Continuously improve your skills, technical and management. Show people that you are a deliberate and astute leader. Maybe start a blog, and write about your experiences. Talk to like minded people. You can attend users groups and meet-ups. You will certainly pick up some good ideas there. Again, you will make mistakes, everyone does. However, there is a difference between shooting from the hip and doing your research before you make a decision. When you provide direction, make sure to include the research you have done that justifies your answer. People will trust that you are a prudent leader, who at the same time is not afraid to make decisions. When you feel you have done your homework, make a decision ad move on.
In summary, here are the traits of a leader in software industry
- Take ownership of all aspects of your software
- Build confidence in everyone your manage
- Be a problem solver
- Build Relationships
- Provide Direction