I have managed a couple of teams for my university projects but for the past few months, I got the chance to manage some teams doing software projects for some real world clients. I learned many things that some of them were contrary to what I believed I knew before.
Here are the top things I learned:
- Team members have different reasons for doing a project. There’s nothing wrong with any of them; it’s just something that exists. Some agree to do it purely because they want to make money. Some agree to do it because they enjoy the job and don’t care about money that much. Some agree to do it because they believe that what they do in that project will have positive effects on their surroundings, world, etc. And of course, there can be a combination of reasons with different priorities for each person. It’s the manager’s job to know what each member wants to earn out of this project and inspire and help them to reach their personal goals (if it doesn’t have conflicts with project’s policies and goals)
- Leader’s vision about the project is [most likely] different from other members. The leader might see how this project will be after a couple of months or years of development and what impact can it have but other team members will probably only care about 3–4 upcoming sprints or getting a raise. And again, it’s just a fact; there’s nothing wrong with it.
- Time management won’t mean anything if the team members don’t care about it. There are always deadlines ahead. It’s the manager’s job to make sure that everybody is doing their tasks on time. When the team members don’t care about the deadlines and scrum’s principles (in my team’s case), the manager should either talk and communicate with them and resolve this issue.
- Always sign a contract with your team members even if they are your friends. This is one of the more important things that didn’t come in my mind when I started the project. I thought that everybody would act as I thought they would in the development phase but it surprised me that how can humans act in different situations. Their actions didn’t have any influence on me personally but they influenced the project and the vision I had in my mind for the project.
- Always think about the worst case scenarios and come up with potential solutions before anything happens. Even think about the fact that what would you do if all of your team members left the team all at once. This also helps you set up a better contract with your clients. The solutions that you come up before anything happens, might not be 100% practical but they sure will help you if that situation really happens!
- Communication is the key! There might be arguments in the team and it comes to each person’s (especially the manager) skills in communication and self-management to control themselves and try to resolve conflicts and reach the project’s goals. Other than arguments, there was a situation in which I learned that each team member might do some tasks that have not been defined before and some of the team members didn’t report doing them to me. These invisible tasks caused them to not work on their predefined tasks in the sprints and this made me think that they are not putting enough time in the project. The fact that these tasks were not predicted beforehand might be because of the lack of experience in me and other team members or not putting enough time in planning.
- It’s ok to be a d*ck in certain situations. As a manager or leader, it’s your job to have a vision and goals, and lead the team in a way to reach them. You have to have strong principles and beliefs but you also should be a flexible and reasonable enough to accept the times that you made wrong decisions and be willing to change. But on the other hand, there are also some situations that you need to act firm and do what should be done despite the fact that you might not like it. There should be a balance between acting purely logical and acting based on your feelings.
Thank you for reading this article :)