Mindset

In 2022, I gave a presentation in my company to share about my experience. It is about building affective teams, producing high-quality outcomes.

As anything else in life, contexts matter. It works for me, might not work for you. We all struggle in our own ways. The key is to struggle well.

Everything starts with the mindset. Here are a few from my experience.

Changes are inevitable. Anticipate them, design to deal with them

Customers change their mind. They want different behaviors, different features. Whenever you start a project, a feature, a piece of code, keep that in mind. Just smile and say "Not a problem!" when they appear.

The key point is "design to deal with them." You cannot deal with changes from your wishes.

Ready to rework, to throw your beloved code away. You do not provide code, you provide solutions

Developers tend to treat their code as their babies. Code is simply text, a tool to solve problems. If it is not right, not solve the problem effectively, throw it away and write new one.

But that is a waste of time, of effort? Oh, then think carefully before you code next time. I usually do not accept any explanation if the code does not do the right things and do them right. Less code is better than more code.

Extreme Ownership: You own everything

As a team, we own the outcome. Everything. There is no such thing as "I am only responsible for backend, frontend, or QA." If you do not understand what "Extreme Ownership" means, ask Google. The right book, the right guy will appear at the top.

Win the war not the games

The war is the product in production. The games are sprints, incremental deliveries, phases, … all intermediate results during the development. Every sprint is a success, the team killed all the backlog items, PO/PM were happy. Boom, the system dies in production after a few days.

Every step, every decision must have "win the war" in mind, AKA production-ready mindset.

When something does not work, simplify/remove processes, and abstractions, NOT create more

Ask "what prevent us from delivery?" Usually, you will find some rocks standing in your way. Find and remove them.

I practice them in leading team, writing code, design systems.

Being a Scrum Player

Teams approach the Scrum with the eyes looking at the benefits of SCRUM without paying enough attention to what it costs to get them. We will get all those benefits if we have the right people. And that each member knows what to do in a SCRUM team. Unfortunately, that is the key part. If we have a team knowing what to do, any method will work. The reality is that a very few people know what they have to do. Human being is different. In a team, everyone has different abilities and skills.

The SCRUM guides encourages the team effort. It does not say anything about how the development team should be organized and run. That is the implementation detail part and very dependent to organizations, cultures.

The work is delivered by the Scrum Team. And a unit of work is done by a person. The actual work is carried by a person. So eventually, it comes to how to build a strong team and get the work done. At this level, it is not bounded to SCRUM anymore. It is a universal thing—team. And it is not something new. It started long time ago when human started hunting for food.

Context matters (since we are not teaming up for hunting anymore). We need to build a team that plays well in Scrum.

Welcome to Scrum Player. What does it take to play well in a Scrum team?

The below applies for a Software Development team.

Communication

Communication skill is vital for every job. Communicate well, you will get what you want. The opposite will confuse you and the others. How can it help if no one understands what you are trying to say.

Who do you communicate with?

  1. Teammates: happen daily via chatting, discussions, meetings, arguments, …
  2. Clients: Anyone outside the development team—PO, SM, employees in the same company when you ask for help

How?
If there is a formula, then no one will surfer from the misunderstanding, miscommunication. I have not found that formula yet. However, there are some guidelines from others, from book.

Read this for a complete guidelines from Basecamp. I pick here and there and make up a list

  1. Write a complete dialog before pressing the Send button. Do not force other to read 3 or 4 messages to understand what you are trying to say. Look at the rules 3,4, and 6
  2. Do you homework first before asking for help. When raising a problem, make sure to include your analysis and proposed solutions (if there is). It is not good that you raise a problem without spending time and effort on investigating first
  3. When a problem is raised, if you are looking into it, let others know
  4. It is ok to say "I do not know", "I am busy atm so I cannot help"
  5. Do not expect responses immediately. And do not let others wait too long. In daily work, 30 minutes is a good period to wait. So if you ask a questions, it is fine that there is no response within 30 minutes. And if someone mentioned your name, it was not ok if you have not responded within 30 minutes
  6. For urgent issues, do not use chat. Find other channels: Direct talk, SMS, phone call, … whatever it works

Be accountable

Every member should care for the outcome of the team. But that does not mean that all members should care all issues in the team. Everyone is encouraged to join solving problems. But there will be only one person in charge of the problem.

What does it mean by in charge?

  • Means be able to answer the question: What is the status?
  • Means find a way to solve the problem either by him/herself or by asking others internal or external. He/she can ask for the team effort if that is the way to solve it
  • Means report the final status and say thanks to the team effort

Why is it important?

  • It shows that each member cares about the team outcome; that they raise their hands to solve problems so other can focus on other tasks. That is the teamwork in action
  • Well-organized, well-managed. We know what problems we are dealing with and that they are in good hands
  • Personal growth. It is a chance to improve problem solving skill.

Specialized

Let’s face this: Everyone has different ability and skill so the price. No matter what kind of team you are in, a level 10 developer cannot just do the work that can be done by level 5. And a level 5 developer is not supposed to do the work that requires level 10. It is just delusion. It will not work.

For a software development team to work, these roles are required

  1. Architect: Without architect, the software is just a piece of code added over the time. And soon enough, it will fall apart. It will be hard, even impossible, to add features. This role is hard to find
  2. Abstract thinker: I want to use the term designer but afraid that it will confuse with the existing designer role. This role has the ability to think of component, of design pattern, of trade off between choices
  3. Specialized implementer: Good at low level implementation. He/she has specialized skill in certain languages, framework. For example, a FE developer that specializes in Angular
  4. Labor: Developers with limited experience. For every project, there are easy, repetitive but time-consuming tasks.

Do you think that it is good idea to assign an architect a labor task? No, of course not.

A developer can play many roles at the same time. It is a matter of knowing the strengths and weaknesses and assign the right tasks to the right person.

I like this saying from a wise man

Don’t send your ducks to an eagle school.

It won’t work!

 

So let put it to work. Let’s play well – Scrum Player.

Leadership 101

Leadership is earned nor by asked or given. One might be in Team Leader position does not mean they have leadership. Leadership is also a concept. There are many definitions that can be found easily by asking Google. What important is that how you think about it, about what makes sense to you when hearing the term Leadership.

One leads others and be led by another. Not many people have absolute power. In the old day, the king might have such a power. Nowadays, people are trying to approach with flat structure. Regardless of what people are trying to achieve, in my opinion, there is a group, there is a leader.

Ok, “Let’s me send you to a leadership class so you will be a great leader, a boss says. I do not think. It does not work that way. It does not happen overnight. You have to build it over time consciously. It is a god damn hard job, I must say. To go on that journey, you have to make up your mind

Do you want to become a leader? Do you want to build your leadership skill?

It is ok to say: No, Thanks. I am fine which whatever I am.

About 4 years ago, I decided to go on that journey. Am I a great leader? I do not know, honestly. But I do know that I am doing good in that direction. There is no an end on this journey. I am getting better over the time.

What I am sharing here is what I believe in, the principles I follow. There is no true/false in them, just my own experience.

Read Books

If you want to build leadership skill, you have to read books about the topic. Some can lead without reading books. Unfortunately I am not in that group.

Reading a book will not make you a good leader. How about a hundred, a thousand, will it make any difference? Yes, it is.

When reading a book, I get what I can make sense of. Then I think about them. Slowly apply them with care. It is difficult at the beginning but get better over the time.

Understand What Leadership Means to You

Can you tell me what it means to you? Can you write them down? Well well well! A simple question but not easy answer. How can one do a good job when they do not know what it means?

How to find out what it means to you? By reading books, observing other leaders around you. You will come up with ones that are truly yours. It must reflect your personality. Sometime it might take years to figure out.

Care and Trust People

People gather in a group/team to do a particular job, usually paid by cash. Get the job done, get money, and done. As a leader, what do you care? The job done or people or both? You know your answer best. Hey, we are professional, there is a separation between profession and person.

Really? No matter how hard you try. It is not going to work. People come to work with full emotion they got from yesterday, which includes some bad events, some bullshit stuff from the work, some personal selfishness, … everything comes with them. Why? Because they belong to them. They own their emotion. Not many people have the ability to control their own emotion.

To get the job done, you have to take care of their emotion as well. You do not have to solve their emotion problems. But you do have to care, or at least let them know that you care.

If you do not trust them, sooner or later they will leave you. People leave their boss not the job.

I believe that many leaders care and trust others. But that does not matter. What matters is how other feel, think about it. Recently, I know the concept Objective vs Subjective. You can look them on the internet easily. Most people care about objective: right or wrong, fact, logic. Subjective is about perception.

A leader can tell their team “I trust you“.

The team might think “Oh really, do you?“.

Understand How People Behave

Why are you doing this?” is a sign that you do not understand your members. Human being acts upon the habit they have been building since they are born. Some are very careful, some are fast, the other are slow. They react to the world as they see it, not how it is.

But that does not make any sense! Oh make sense to whom? if we, as leaders, spend time to learn how people behave, we can work together, we can help each other.

 

If I confuse you, sorry. I am mumbling my thoughts 🙂 But hope it helps you in some ways.

Team Practice – Work

A team is a group of people to accomplish something. That something usually calls Work or Job. In my job, that is building software, fixing bugs, maintaining systems; all sort of stuff related to software development. The common scenario is that we come to the office (or virtual office), pick tasks assigned to us, get them done. Mission Accomplished! So far so good! And if everyone can do just that, it would be a perfect team.

However,

  • The requirement is not clear.
  • The client changes their mind.
  • We do not control clients.
  • We cannot plan. We do not have authority to decide.

Looks like the team does not have control over their job. It is fine to do just fine. What if we can do it better, or make it worth our time when we are working?

We cannot improve what we cannot control

We have control our work; but not by the authority, not by asking for permission, not by making special requests. It might work that way, yet the chance is low. Why? Because those actions depend on other people. You, unconsciously, just move the control over to your boss, your clients, … those whom you cannot control.

I have a few tips to get it back.

  1. Scope – What the team can impact.
  2. Internalized empower – Goal, Inspection, and Adaptation
  3. Protect your coffee

Scope – What the Team Can Impact

If you draw a diagram where the team is in the central, you might come up with something like this

Team Impact Diagram
Team Impact Diagram

If you see a team is a unit, you can easily draw that impact diagram. In those connections, some you can impact, others are out of your reach. Focus on what you can impact. Ignore the rest because not much you can do.

What are your team main areas? What are the factors that decide your team success or failure? You do not need to make a full long list. But you need some, agreed by the team, without approval from anyone.

Internalized Empower – Goal, Inspection, and Adaptation

Your team is doing a good job. We want to improve the team deliveries. Some might seek help from external resources. But I prefer the internal empowerment. By heading toward internal, we have the full control of what, how we want to improve. Asking for help is a good solution, but it must come after the internalized empowerment.

Regardless circumstances, we can start by setting goals for a week. When talking to people, I realize that setting goals is not easy for many. Many struggle with the perfection, focusing too much on how to set a good one. No. Stop doing that. Just pick any thing to get started. What important is the process, not the goal itself. Once you get into the process, it is much easier to define a good goal. It will come naturally. So you should not worry about that.

Inspection! Without inspection, we cannot grow. Inspection helps the team know where they are standing, how far they have gone to accomplish the goal. Inspection can be as simple as asking yourselves questions: Am I moving in the right direction? Is there any potential issues? … Inspection should happen daily basic.

Adaptation! The output of inspection is the input for adaptation. Everyday comes with new information, new challenge. You have to adapt. You have to response to them. Some expect a fixed period without changes. That is so naive. Requirements change. Deadline comes. Oh maybe a team member is on vacation, is sick, … By making Adaptation explicitly, you will deal with the changes better.

The whole thing sounds theoretical and vague. Yes they are. What you should take from here is the keywords Goal, Inspection, and Adaption. Either you start it now, or your team stays the same week by week. A good way to grow is depending on your internal power, not from outside or someone else.

Protect Your Coffee

I asked the kids, ” What would happen if somebody dropped sugar in my coffee?” They said ” you would be ok”. I said “What will happen if somebody drop strychnine in my coffee?” Well you’d be dead”. I said correct.
Lesson one: life is both sugar and strychnine, you got to be careful. I said ” what if my worst enemy drops in the sugar? They said ” you would be OK. I said ” what if my best friend even by accident drops in the strychnine? ” they said ” well you’d be dead. ” I said “correct “.
Lesson two: watch your coffee.
You got to be careful see it doesn’t matter who hands you the bad stuff it doesn’t matter where you get the bad stuff it’ll still do its damage on your bank account wherever you get it. Mr Shoaff gave me one of the greatest phrases when I first met him when he said ” Jim everyday stand guard at the door of your mind”, how important. Stand guard at the door of your mind and you decide what goes into your mental factory don’t let anybody just dump anything they want to in your mental factory because you have got to live with the results.

Jim Rohn

I like that story so much. It does not matter who hands you the bad stuff. It does not matter where you get the bad stuff. The result is the same. You get the consequences.

The team has been working so hard. The result is good. They are reaching the goal. And at the last minutes something bad happens because of a team member, because of managers, … because of … Regardless of “because of”, your goal is affected, your hard work is draining.

We cannot prevent bad things. It is a part of life, of Mother Nature. But we can reduce the impact if we raise our awareness.

 

Everyday we have to think of how to improve the team. Otherwise, a team is simply a group of people. No mission! No direction! I do not like such a team.

Team Practice – People

What we call a team is a group of people. What we call a work is a thing that will be done by people. In IT industry I am in, people build software, not a machine. When we look at a team, there are many roles. Some are developers; some are testers; some are called QA; some are architects and so on. And then we come up with many processes to make those roles worked well together. Sooner or later, we just prefer to team as Roles and Processes. People are eliminated. That’s sad!

I started to step into building a great team by looking at its components in my own eyes. I do not judge anyone or how they run their teams. This is purely my observations and practices.

I started to pay attention to how things work; where they come from. In that quest, I met Simon Sinek where I found inspirational speeches about leadership, about people, about what have been missing these days. Last year, I decided to study SCRUM seriously. There is a match between them: The People — The heart of everything.

Not many people say “I do not care about others“. It does not matter what we say. What we do matters. To get me engaged with the people, I constantly practice asking myself

  1. What have I done to help others?
  2. When was the last time I did?
  3. Do I really mean what I did?
  4. Do I foster the caring environment?

Why do I have to ask myself those questions? Because I really mean it. I do not want to stop at saying that I care about others, in the team context.

Part of the practice is to get others involved. The end goal is not you become a good guy. The end goal is to have a good team where everyone cares each other, brings out the best, and deliver the best. What if every member practices asking those questions?

With the growing of collaborative tools, team members are preferring to chat on tools than talking to each other. The tools are perfect for remote team. But when everyone is sitting at the same office, each can reach others in a matter of tick, is it better if we can talk directly to each other? Yes. They have their own reasons. However, if they might talk a lot when discussing non-work topics.

I do not advocate for right or wrong regarding to the people in the team. There is no silver bullet of how to do it right. However, I do have some suggestions that I believe in, and that I am practicing.

First, a team leader should have the correct mindset when looking at people. He/she should reflect base on these questions

  1. Do I pay attention to helping my teammates?
  2. I might. Oh what was the last time then?
  3. Do I foster a good team spirit? That they help each other.
  4. What is my next step that I can start immediately?

In general there are 3 steps

  1. Recheck your intentions
  2. Reflect your actions in the light of your intentions
  3. Define immediate next doable actions

Second, Team Leader should share it with their team. You cannot do the right thing without honesty first. This is a hard step because of emotional barrier. It is not easy to speak out in the first time, honestly accepted our own faults. Regardless, you have to do it to reach the third step.

Third, foster the team spirit. The reason we are in a team is to help each other to accomplish certain things, usually defined as our job. We are there, team up, to build a software, to deliver a feature. What you have done individually does not much matter. What matter is the delivery of the whole team. A member might be very smart, work fast. He/she might finish his/her tasks quickly. But if he/she just stops there, the whole team still sucks.

To foster that spirit, one can practice

  1. Do I help other teammates?
  2. Oh when was that?
  3. Look after the guys next to you.
  4. Look at the team goals.

We cannot get everyone participated in that at the first time. There will be resistant. But, very important but, there will be some who are willing to change and see it as a good way to work.

 

We spend a major time of our live at work, with people we call coworkers, with people we call teammates. We team up to finish a job, to get things done. To accomplish those, and have fun at those major time spent, we have to start with us first. We are the one who makes a difference. All we need is to bring back our old behavior: Talk to each other and Help each other.

That how I believe it should work. I fight for it.