In my team, I feel like I am the one who got an early experience in building production-ready software (which I am very grateful and I also recognize my privilege) so I get a sense of responsibility that I should guide and help others technically. I really like guiding because it is very proud to see someone has a huge progress and then finding out we are part of the reasons why someone changes. I found out that guiding will also help us individually to check if we understand the problem or not. We want to make sure that what we tell is right so we will study it deeper.
Here is my experience in guiding the team technically:
1. Invest your time in assisting the team in the early time
During our first sprint, I personally spent a lot of time code with others until early morning (don't copy our bad habit!). You might think that it is a bit of wasting time and it took a lot of time that could be use in doing other thing, but apparently it is not. By investing a lot of your time very early, you are making sure that everyone understands and then, everyone could work independently. Since everyone could work independently and later, probably doesn't need your help very often, your time could be used to work in other thing!
2. Know other's strength and weakness
By spending your time with team early, you will be interact with team members very often and personal. In my experience, seeing someone who codes together with us will help me to understand what their strengths and weaknesses are. You will understand too on how they think and ask a question.
When the team wants to assign tasks, since you know each of the team, you will try to pair the task with the right person. For our first sprint, we tried to pair the tasks with each member's interests. Later on, we tried to make sure everyone get tasks that are different than previous task so everyone get same experience. For example, Nurul did backend in the first sprint, but on the second sprint, she got tasks in frontend.
By knowing members' strength and weakness early, we can evaluate their progress. In the end, we hope that everyone learns a lot from this project and can overcome their weakness.
3. Trust each other
After I make sure that everyone could do work independently and the result is very great, then it is time to give our trust. There are many ways of showing trust. One of example is that assigning a task that has a huge impact. By assigning an impactful task, team members will feel that their work is very important and get a sense that they are trusted to be assigned the task.
How do you define an impactful task? Apparently, an impactful task is not a task that cost a lot of effort. An impactful task means that the task will cause significant result. Since we are developing an early project, we consider a task is impactful if it covers a big part of a feature. For example, connecting React components to backend API is considered as an impactful task for us. Not finishing this task will make our timeline of developing product messy.
4. Have an empathy with others
I admit that I have a huge standard with work and sometimes I expect people do the same too. But, I realize not everyone has the same opportunity, experience, and time like me. I need to be empathized with others. There might be some team members that had a longer time in looking for solution. Team members might had a personal problem too so they couldn't spend a lot of time in working. As a team member, we should be empathized and offering helps to others. The help itself doesn't need to be in technical. You can offer yourself to listen and that is counted as offering help 😄
Here are some changes that I felt personally after guiding the team:
1. Adapting communication skills
Since everyone in the team shares different traits, I need to adapt on how I talk to them based on their trait. Apparently, it is beneficial for me in a lot of time. Now, whenever I meet new people, I will try to adapt on how I talk to the person I am interacting with. My way of interacting with Lia will be different with Yasmin since they have different traits. I know this earlier since I invested a lot of time in upfront to assist the team when we did our first sprint.
2. Understand people better
Since I begin practice to have an empathy with others, I understand people are very unique and different. We cannot set same standards on everyone. For example, I might estimate building form IUMK (small enterprise registration form) only takes 2 days to build, but the person who did it took it longer than 2 days. If I don't understand others, I might not be patient with this case and surely it will hurt team dynamics. Now, if there is a case that developing feature takes time longer than the estimation, I always look if there is a thing that I could help.
3. Learning to trust people
One of my bad habit is that having a high standard so that's why i sometimes don't trust people. If I still maintain this habit, this surely will hurt our team dynamics. Other than that, don't you remember that in Agile, it is encouraged to develop product iteratively? We are not looking for perfection in developing our product since we want to know feedback faster. Oh, I forgot that trust is very important in Agile🤫