Home / Blog / A few words about leadership in code teams

A few words about leadership in code teams

I have been a programmer for 14 years, engaging in various projects across different platforms, utilizing multiple engines and languages. In this time, I led flagship projects, but also, I contributed as a team member or consultant. Additionally, my experience extends beyond gaming, offering insights from a broader perspective.

I would like to focus on leading teams, which is an overly complex and sometimes underestimated task. I will share my own experiences and give some tips you hopefully will find useful in your leadership roles.


Now, let us address fundamental questions: Who is a leader, what qualities define them, and why do they matter?

In any organization, as it scales, maintaining control becomes challenging. I do not believe in a completely flat structure. There is always a figure making final decisions. As a company expands, it becomes impossible for a single entity like a boss, product owner, or project director to control every little aspect of inner workings. This is where leaders step in. They guide groups with shared competencies or objectives. The decision-making individuals do not need to focus on every detail, but can focus on broader strategies, that are passed on to leaders delegating tasks accordingly. Their role involves ensuring transparent communication within and between teams, assisting in organizing work, facilitating task completion, decision-making, taking responsibility, mentoring, and preserving the company’s culture.


What qualities define a leader? There are a few theories on this. Firstly, there is the concept of servitude. Traditionally, organizational structures are depicted from the top-down. However, as a leader, it is crucial to invert this perspective. Being a leader should focus on serving and supporting your team, rather than pursuing personal gain, ambition, or pride.

Another theory is the Law of Buy-In by John Maxwell. This means being willing to invest your time, effort, and engagement. If you demonstrate that you are ready to sacrifice personal gains for the team. When people see your commitment to their well-being, they are more willing to follow and to give back.

Next, we have the theory of Major Winters, a World War II hero. His principle was that officers go first. As a leader, you must lead from the front. This means promoting ideas, being the first to face criticism or failure, and taking calculated risks. You should pioneer initiatives and support others in achieving their innovative goals.

Leaders must set an example. Your team looks up to you and emulates your actions. If you wish to discourage crunch, you cannot do it yourself. Similarly, if you desire effective communication or if you want your team to push the boundaries of excellence and provide the highest quality possible, then they need to see that in you first.

Then we have the three Cs: character, competence, and commitment. Character represents moral integrity; you do not lie to your team and are willing to prioritize long-term goals over short-term gains. Competence means having a broad perspective; you do not focus solely on your department but understand how distinct parts of the organization interconnect. Commitment is about demonstrating care for the company, its values, projects, and, most crucially, its people. Staying true to your values is paramount.

Then, there is the acronym PROMISE from John C. Maxwell’s “The 21 Irrefutable Laws of Leadership,” which is a highly recommended read for all leaders. It offers a valuable set of guidelines. Let us explore this promise:

P – Provide honest and actionable feedback. Merely stating something is “bad” without offering constructive suggestions is not helpful feedback.

R – Remove obstacles and anticipate problems. Take ownership of issues and proactively address them. Advocate for your team’s needs within the company.

O – Own the problems. Take responsibility and lead your team through difficulties.

M – Make time to support your team.

I – Influence the management to make decisions that benefit your team and the company as a whole.

S – Spread the praise. Acknowledge that achievements are often the result of team effort, not individual success.

E – Encourage to make decisions and take responsibility.

Throughout this article, you will notice how these elements of the PROMISE acronym manifest in various contexts.

I want to share two stories from my past. Back then, I was so focused on getting things done that I did not spend enough time with my team. I did not take the time to have one-on-one meetings, which are important for understanding what each person needs. One time, the most experienced team member told me he wanted to quit because he felt ignored. Being the most experienced, he felt like he had to help everyone else without anyone helping him. It made me realize that I was not doing my job properly. I managed to convince him to stay, but it was a wake-up call for me. From then on, I learned that it is crucial to be available for everyone on the team, no matter how experienced they are. Honest communication and understanding each person’s challenges are key to keeping the team together and doing well.

The second story is a more positive one. In another project where I was leading, we were crunching and feeling overwhelmed. One day, during a casual conversation, someone joked about considering this LinkedIn offers they have been getting lately and started looking for a new job.

I did feel like the team was underpaid for the work they were doing. So, I decided to mention it to my boss. I explained that we were close to losing valuable team members because they were feeling overworked and underpaid. I suggested that we ask the publisher for more time and money to properly finish our tasks and give everyone a raise. Surprisingly, my boss agreed. It was a big win for our team. This experience taught me that it is important to speak up and take risks for the sake of your team. If I had not raised the issue, my boss might not have realized how serious the problem was, and we could have lost some talented team members. Influencing management can make a real difference in keeping your team happy and motivated.


Making changes can be tough. It is best to avoid sudden, drastic changes because the bigger the change, the more resistance you will face. Instead, introduce changes gradually, taking small steps.

Do not force your ideas onto others because then you will be seen as a dictator, and people will only do what you say because they must, not because they want to.

If you want to see change, be the change yourself. Make sure you are living by the values you want to see in others. If you are not sure, ask someone to evaluate how well you are following those values before you expect others to follow them.

Be open about your values and beliefs because when people see your sincerity, they are more likely to follow you.

Instead of bombarding people with facts, start by explaining why change is important. This approach helps people understand the purpose behind the change and makes them more receptive to it. It is all about starting with why.


This is based on Simon Sinek’s theory, which applies to many aspects of life. Most people start from the outside, focusing on the goal and how to achieve it, but they do not explain why it is important. It is crucial to start from the inside out. By showing your values and beliefs first, you inspire people to follow you.

Here is the key takeaway: the quality of your leadership directly impacts the success of your team. There is a distinction between leaders and those who lead. Leaders often rely on their position of power to enforce their will onto others. True leaders, on the other hand, inspire. We willingly follow them not because we have to, but because we want to. It is essential to tap into that kind of leadership style.


Now, let us explore another theory from Mr. Sinek: trust versus performance. Each person possesses a range of hard skills, connected to their knowledge and expertise, as well as soft skills like communication, openness, willingness to cooperate, and engagement, which foster trust.

Sinek developed this idea while speaking with Navy SEALs, one of the best organized teams globally. They have a motto: “I can trust you with my life, but can I trust you with my money and my wife?” This illustrates that every team needs highly skilled individuals, but not at the expense of team structure and trust.

Nobody desires low performance or low trust individuals on their team. However, it is often preferable to have more trustworthy individuals than highly skilled but toxic ones. Toxicity can completely dismantle a team. If you observe your own team, you will identify one or two people who others naturally gravitate towards. These are the natural leaders that people want to follow. Interestingly, the highest performing individual is not always the best fit for a leadership role. Why? Because team management is time-consuming. It is not always efficient to burden the best performer with organizational tasks.

A common scenario is seen in game development or other industries where individuals are promoted to leadership positions due to their seniority, even though they excel at technical work. Now, they are required to handle people, organize tasks, discuss budgets, and more. This can lead to frustration and poor leadership. It is often better to choose someone trustworthy, communicative, and capable of thinking broadly, even if they are not the top performer in terms of skills.


Now that we understand the importance of trust, let us explore how to achieve it. Proper communication is the first step. Avoid assuming others have the same knowledge or mindset as you. Do not rely on your own assumptions or expect others to understand everything you do. Instead, ask questions and seek clarity. It is essential to find a balance between confidence and humility. Too much entitlement can lead to toxic situations, while low self-worth can disturb effective communication. Do not be afraid to ask questions and listen to others. Listening should be a leader’s priority.

Two effective communication techniques are the negotiation mode and the problem-solving mode. In the negotiation mode, you as a leader need to take the responsibility of the conversation. Focus on solving the issue while considering everyone’s input. By respecting and valuing others’ ideas, leaders can guide the team towards a common goal. It is also important to use unambiguous language and ask open-ended questions to encourage everyone to participate and ensure clear communication.

The second mode is NVC, or nonviolent communication, created by Marshall D. Rosenberg. This approach is more personal and emotional, often used to address conflicts and discuss difficult topics. In NVC, you begin by expressing how you feel in each situation and what led to those feelings, without blaming or judging others. It can be challenging at first, but reading Rosenberg’s book on nonviolent communication can be helpful in navigating these tricky situations.

Here are some general tips for effective communication:

  1. Be precise in your speech and avoid vague language. Clear communication leaves less room for misinterpretation. Remember that language carries certain intentions, which may be received differently by different people. The better you know someone, the more you will understand their perspective.
  2. Encourage others to ask questions, especially “why.” Asking “why” can lead to deeper understanding of the goal and will result in the team pursuing a common goal with greater conviction.
  3. The worst truth is better than the best lie. Being honest, even when it is difficult, builds trust and fosters genuine relationships.
  4. Explain any misinterpretation or problem ASAP. If you sense that you might be misunderstood, try to clarify your message as soon as possible to prevent any confusion or miscommunication.


Feedback is essential alongside regular communication. Criticism is tough to give and receive, especially in creative fields like game development. We often get emotionally attached to our work, so criticism can feel like a personal attack. It is hard to separate our work from ourselves, but it is important to try. Criticism can make us feel rejected and uncomfortable in group settings. If you need to give someone critical feedback, it is better to do it privately rather than in front of others. On the other hand, praise is best given in a group setting. Sometimes, we are not in the right mindset to receive feedback, and that is okay. You can ask for a rain check but remember to follow up later.

I once heard about the “sh*t sandwich” technique, where you sandwich criticism between two compliments. However, this approach can be manipulative and confusing. Instead, I suggest using the “keep-stop-start” method. Start by highlighting what is going well and should continue – keep. Then, address the weak points – things someone should stop doing and offer constructive suggestions for one can start doing to change.

Here are some general guidelines for giving criticism and praise:

  1. Evaluate the work, not the person.
  2. Be specific in your feedback.
  3. Praise publicly and criticize privately.
  4. Acknowledge and praise contributions appropriately but avoid excessive praise as it can lose its meaning.
  5. Approach failures with respect and try to understand the reasons behind them.
  6. Recognize every person who contributed to success.
  7. Avoid praising undeserving individuals.
  8. Recognize everyone who played a part in the success.
  9. Avoid giving praise out of habit.

In my experience, some leaders in IT and game development have a habit of avoiding praise by saying, “They know they’ve done a good job,” or claiming that success alone is praise enough. These attitudes are dismissive and unhelpful. But what is even worse is when they do not acknowledge big milestones at all. It hurts because it ignores all the hard work and creativity that went into making something great. In game development, people from different areas like art and technology work together to make something out of nothing. When you think about how much effort and skill that takes, it is clear there is a lot to appreciate. Not recognizing these achievements can really bring down morale and make people feel like their work does not matter.


Effective communication and feedback are crucial for team building. A well-informed team makes fewer mistakes and operates more efficiently. Additionally, effective communication reduces stress and boosts motivation, enhancing the company’s reputation and making hiring easier. To build a dedicated team, prioritize trust, create an open environment for discussing problems, and encourage questions.

Personally, when I join a new company, I make it clear from the start that I do not know everything and may ask simple questions. By demonstrating a willingness to ask for help and admitting mistakes, I set an example that encourages others to do the same. This openness to asking questions, including asking “why,” helps create a culture where learning and improvement are valued.

Łukasz Hacura, CEO of Ashar Studios, once said that a game development team should not function like a family, but rather like a sports team preparing for the Olympics. While my interpretation might differ from his, I strongly agree with the sentiment. The focus should be on honesty, respect, and efficiency rather than solely on emotional comfort. It is essential to address tough issues openly and guide team members toward goals without micromanaging or being overly protective. Providing autonomy and driving excellence through training rather than doing tasks for them will encourage individuals to perform at their best in the long run. In sports events, the emphasis may be on points and winning against other teams, but within a team, the dynamic is entirely different.

What is the game we are playing? According to Simon Sinek, there are two types: finite and infinite. A finite game has fixed rules, a set number of players, and clear objectives. We compete for points, and there is a winner. On the other hand, an infinite game involves both known and unknown players, with rules that can evolve over time. The goal is not to win but to sustain participation in the game. Players drop out when they run out of resources or lose the will to continue. Driving a company to thrive in the market is an infinite game, as is striving for excellence within your team. The aim of team building, and improvement is not to outdo others but to continuously grow and enhance yourself. Therefore, it is crucial to understand your goals and values, prioritize long-term gains over short-term wins, and foster an environment where team members feel comfortable sharing their fears, admitting mistakes, and asking for help.


Because we cannot predict everything, especially in volatile markets like this one, where trends change rapidly and unexpected events occur, such as people leaving their jobs or getting sick. Antifragility, a concept from Nassim Nicholas Taleb’s book, refers to things that benefit from disorder. In a broader sense, systems like human bodies, businesses, relationships, and teams can be categorized as fragile, robust, or antifragile. A “black swan” represents an unpredictable event with significant impact on the system. Fragile systems break under pressure, robust ones withstand it but return to their original state, while antifragile systems strengthen and improve through adversity.

In a gym, doing 100 one-kilo reps is not as effective as doing five sets of 20-kilo reps. Muscles, for instance, are antifragile—they strain and break a bit, then rebuild stronger. Similarly, taking risks and allowing for small mistakes can build resilience over time. However, people often resort to naive interventions, such as micromanaging, to prevent problems. By doing tasks instead of letting team members handle them, you deprive them of the chance to learn from mistakes. While this might seem less damaging on a small scale, it hinders learning and can lead to problems accumulating over time. Eventually, the system may break down entirely.

To build antifragility in practice, start by analyzing experiences through team retrospectives. This allows you to learn from both successes and mistakes. Utilize techniques like skip-stop-start to assess the process. Foster knowledge overlaps within the team so that multiple people understand each element of the system. This helps mitigate risks, such as when someone falls ill. Building confidence in your team enables you to delegate work and responsibility for the future system. When team members feel a sense of ownership, they care more about the outcome and are more proactive in anticipating and addressing problems.


Since the article’s title centers around code teams, let us focus on the programming department and why it differs from others. Our job requires meticulous attention to detail and following specific procedures. Many programmers possess an elevated level of conscientiousness and tend to be introverted, not thriving in social interactions but rather managing through them. Unfortunately, we are often not adequately taught communication and soft skills. Additionally, the nature of our work leads to constant stress, as even minor mistakes can have significant consequences for the entire project. Despite these challenges, proper communication is crucial, as design and code converge in the final product.

To enhance leadership at the production level and in code, first, ensure the proper implementation of agile methodologies. Agile is not just about Scrum or Kanban; it is adaptable to various needs. Conduct workshops within and between teams to facilitate knowledge sharing and increase redundancy. For instance, hold monthly workshops to share expertise and address overlapping areas like working efficiently with blueprints. Collaborate with other teams, such as art and tool teams, to stay updated on the latest advancements and refresh their knowledge of engines or custom tools. These efforts foster better collaboration and support the team’s overall success.

Organize lead’s vision meeting, where all leaders gather to receive updates from directors and bosses regarding the company’s significant events, project direction, and higher-level challenges. The primary objective is to ensure alignment among all leaders and management.

Additionally, individual one-on-one meetings are crucial for addressing specific needs and problems periodically.


In the production workflow, unlock – first approach uh the goal is here to prioritize uh tasks uh that others depend on is crucial. For coders, this means ensuring that after completing a feature, it undergoes review and testing before proceeding. Similarly, designers should have their features reviewed, and artists should receive feedback on their prototypes. The focus should be on unblocking others if the task is not critical.

To optimize productivity, it is important to compress communication blocks. We work better when we have longer periods of quiet time to focus and get into a flow state where we are at our peak efficiency. Interrupting this flow with short meetings disrupts our concentration. Instead, aim to schedule all meetings within a consistent time frame during core hours. Also, remember to include breaks between meetings.

Systematic checkups are crucial for maintaining quality as a leader. For code, we can conduct code reviews to ensure its quality. Similarly, for designers using Unreal Engine, diff utilities can be employed to review blueprints and GDDs. Artists can also benefit from regular feedback sessions led by department leaders or directors during vision meetings.

Focus on efficiency is crucial but it is also essential not to overlook leisure time. Organizing virtual coffees where team members can unwind and express frustrations, whether it’s about the engine acting up or certain features causing annoyance. While it should not be excessively prolonged, having a space to vent frustrations is crucial. This is particularly important for remote workers who may find it challenging to connect with colleagues beyond work-related matters.


Pair programming can be a valuable tool, especially when someone gets stuck. It allows for real-time problem-solving, maintains code quality, and can be effective both in-person and remotely. Additionally, it helps ensure redundancy of knowledge within the team.

Code review is a fundamental practice that everyone should engage in. Different teams may have varying rules, such as having code checked by more experienced members or ensuring that at least two people review the code. There are various methods for conducting code reviews, including static analysis, dynamic analysis, and automated systems for checking submissions. Additionally, teams can organize meetups to discuss and explain the code further.

Open consultations are a practice that evolved from having longer daily meetings after our scrum rituals with producers, where everyone from every department can bring up a problem to solve. This was a concept we implemented in one of our previous companies, allocating up to 30 minutes for consultations. By having all programmers listening, we were able to address many small problems on the spot, as someone always knew how to resolve the issue. This helped reduce the number of unresolved issues and improved overall efficiency.

Code on duty is another iteration of consultations, implemented during the “finishing line phase” when we freeze features and focus solely on bug fixing or testing the game. Throughout this process, we ensure that at least one coder is on duty, ready to address issues as they arise. While it has been praised for saving the day on many occasions, it comes with a cost, potentially leading to overburdening and crunch. It can be effective as a last resort, but ideally, project organization should aim to mitigate the need for it altogether.


If you aspire to be a responsible leader and build a company that endures, creating great games without sacrificing your personal life or the well-being of your team, at least some of these ideas can be applied to your teams and companies. The only thing you may need to sacrifice is pride, along with a bit of commitment, attention, and time. To sum it up, the quality of your leadership determines your team’s success. Serve the people you lead, demonstrate engagement and commitment, lead by example, prioritize smartly, communicate effectively, give feedback properly, build a sports team mentality, and understand that improvement is an ongoing journey.



Grzegorz Wątroba

Principal Software Engineer

Game programmer since 2010, specializing in designing code architecture, optimization and porting on various platforms. Cooperated with Polish and foreign companies such as Bloober Team, One More Level, Fool’s Theory, Vile Monarch, Covenant.dev or Polygon Treehouse among others. Worked as well on the standard IT market for Nokia, Autodesk and Xara but games turned out to be his true love.

See more posts by this author

Sounds promising?

We’re recruiting - reach out to us to learn more about
the projects we’re currently working on!

Hi! We use cookies and similar technologies to better know you and improve your experience with our website.
You can find out more by reading our Privacy Policy.