Being a Software Development Manager is a great job, if you are the right person for the job. You have to have a real passion for technology and leadership to excel in this role. I have spent the better part of the last 5 years studying leadership and software development, and have really enjoyed the journey. Below are some of the key things I try and focus on day to day as I interact with my team. Hopefully some of these points can help you!
Set Clear Goals
Setting clear goals is a key role of a Software Development manager. This means that just telling your team “Can you get project xyz done by Friday, thanks!” is not enough, in fact, it’s useless! You need to be able to clearly define the goal, and then describe the goal to your team in beautiful clarity! This is done both on paper, and in meetings for visualization of the goal. The clearer you can make the goal to your team, the more likely they will be to achieve the goal, and surpass it! Most goals are made up of mini-goals, or mini steps if you will. Once you have clearly defined the goal, you need to be able to setup the game plan for the goal, filling in the steps to get the goal achieved. Once your goal is defined in minute detail, you are set!
Lead By Example
There is nothing worse than working for a manager that barks orders all day long, and yet is never around when you need them. If you expect your team to come in on time and be totally devoted to the job, projects, and goals at hand, you have to be the most on time, focused individual of the team. If you expect your team to take amazing meeting minutes, keep meetings focused, and send awesome project status reports, then you need to ensure you are the best meeting minute taker on the team, creating action item reports, and detailed, easy to read, meeting minutes. During crunch time in a project, you need to not only have people are willing to come in on weekends, and put in the extra effort, you need to be the main resource available during these times! You need to practice what you preach, set examples, and share in all the hardships. Nobody wants to work for a manager that just wants to revile in his teams accomplishments, without actually helping the accomplishment happen!
Set Clear Direction and Vision
As a leader in your organization, your main goal should be to set the vision for the team, and do it in a clear and concise way! It’s not enough to simply send an email that says “Our vision is to create great bug free software fast!” that is pretty much useless. What you need to do is make your team live, breath, and act the vision. You need to be able to energize your team to follow the vision that you create, and have a clear roadmap on how each member of the team is helping the vision take shape. You also need to be up to speed with the rest of company, and be ready to update the team vision when it’s necessary. Especially in the current speed of the business world, you need to be ready to react, and move that ship in another direction when needed.
Motivate Your Team
Motivation is key. Nobody wants to work for someone that does not motivate them. But how do you motivate a team. It is actually easier said than done. Take interest in your team, learn about your team, involve them in decision making and make them feel special. Listen to your team when they have something to say. When they come to your door and want to talk, always make time for them. Have a lot of energy, get your sleep, eat healthy, and exude energy at every meeting, and every interaction. You need to connect with every person on your team in a different way. See, different people are motivated by different things. If you get to know them on a personal level, you will find out exactly what makes them tick, and how you can make them happy, and motivated. The more your team is motivated, the higher the retention of the individuals, and the more they will be able to contribute to your organization.
Focus On What Is Important
One of the single most important things you can do as a Software Development Manager is focus on what is important. There will be distractions coming at you and your team on a daily basis. You need to have the ability to quickly and easily avoid these distractions and lead your team to the important tasks at hand. Your team needs a beacon of light, a light house. You are the lighthouse of the team. Your team could be the most powerful, smart, energetic team on the planet, but if you are not focusing them on what is important, they will fail! The effort that your team puts into the job is very important, but if they are putting all their time and effort into solving the wrong problem, or the wrong problem the right way, they are wasting their time!
Be the Most Positive Member of the Team
Negativity kills! Both literally and scientifically! Negative thoughts and emotions have been proven to cause your immune system to weaken, and a big contributor to disease and death. Is it any shock that this same attitude in the work place slows down projects, and causes more bugs in software than are necessary! There are certainly times when feedback and criticism needs to be given to projects and teams, however there is a right way and a wrong way to do this. Think about this for a second: Why are people drawn to leaders in the first place? Because of their negativity? No. It is because of their ability to look at negativity and challenges straight on and be extremely positive, and able to find solutions. Great leaders add life to projects through their positive attitudes, and make teams achieve things that other, even more experienced teams, could never dream of achieving.
Be Decisive and Action Oriented
In order to be a great Software Development Manager, you need to have the ability to think carefully, and make decisive decisions quickly. You need to be able to take action and carry out the decisions you have made without looking back. While you are taking action, you also should not have your blinders on, and should be able to ask for feedback every step of the way. Should the feedback be negative, or not the result the wanted, you have to be quick to change direction if needed, and try a different approach.
Provide the Best Tools
Providing your team with the best tools available not only makes them more productive, and makes your team enjoy their jobs more by having cool toys, it also tells your team that you know their time is valuable! It shows your team indirectly that you realize that their time is precious, and that they are great assets to the team that cannot be wasted.
Provide the Best Hardware
How long does it take your developers to build their applications, debug, and run multiple tools they run? Do they have one monitor that they are forced to cram all of their applications on to, and switch between applications all the time to see what one has for output? How much are you paying them, and how bored are they getting wasting their time with this? Do everyone a favor, including the company you work for and make sure they have the best hardware you can buy. Especially with the cost of hardware these days, there is no excuse to waist hours a week for no reason, to save a few hundred bucks.
Trust Your Team and Their Judgement
Everyone on your team has been selected for a reason. If you are not able to trust them and their judgement, they should not be on your team. The reason you hire people that are experts in certain areas is so that you can trust them, and because they are just that, experts in their area. I’m not suggesting that you just let a new person run the show and trust them instantly that would definitely be a huge mistake. But as a manager you should get to know your team really well over time, and be able to know who are your experts, which areas they are experts in, and when you can, or cannot trust their judgment. For example if you have a masterful DBA working for you, that has built thousands of database designs in his career, would you go sit by him and micro-manage him and tell him what to do, and where to add index’s and how you would like the database structured? Of course not… So why do so many managers insist on micro-managing?
Be the Coach
I’ve always viewed myself as the coach of the team, and not a manager. You need to be able to find the right talent, and keep them interested. As a coach you have to be ready to make the plays, and provide feedback on the last period of play! What was done wrong, what was done right? Get to the point quickly, give the feedback, make the changes, and try again if there were mistakes made. If things are going well, still provide feedback and coaching! You always want to be improving the team! You want to try and get your team running to its fullest potential.
So there you have it! My One Minute Software Development Manager guide to running a Software Development team! Good luck, and enjoy the journey!