URL has been copied successfully!

“Nonviolent Software Engineering”

URL has been copied successfully!

Since I first discovered Nonviolent Communication (NVC), my understanding of communication, both personally and professionally, has taken new directions. It’s time to practice “Nonviolent Software Engineering”!

NVC, developed by Marshall Rosenberg, is a transformative approach that aims to improve interpersonal communication and conflict resolution.

Its principles, while widely applied in personal and social contexts, prove equally valuable for Software Engineering teams, where effective communication is the cornerstone of success.

Why is NVC significant in Software Engineering?

Software Engineering teams are diverse microcosms, bringing together individuals with different personalities, skills, and perspectives. The pressure to deliver projects on time, the inherent technical complexity of the work, and the interdependencies between tasks can lead to friction and misunderstandings. NVC offers a framework to handle these situations constructively, fostering empathy, collaboration, and peaceful conflict resolution.

The four pillars of NVC in action

  • Observation: Instead of judging or labeling, objectively describe what you observe. For example, instead of saying “You always delay deliveries,” an NVC approach would be: “I’ve noticed the last three deliveries were completed after the established deadline. Could you explain what happened?”
  • Feelings: Express your feelings about the situation, avoiding blame or attack. Say “I feel frustrated when deliveries are delayed because it impacts our schedule” instead of “You are sabotaging me with these delays.”
  • Needs: Identify and communicate your underlying needs. For example, “I need deliveries to be on time so we can meet our client commitments and maintain team trust.”
  • Requests: Make clear, specific, and actionable requests, focusing on concrete actions that can meet your needs. “I’d like to discuss how we can optimize our workflow to ensure future deliveries are made on time. Can we schedule a meeting for tomorrow?”

Applying NVC in different Software Engineering scenarios

Meetings

Meetings are a central element in the routine of any software team. However, they can easily become sources of frustration if not well-conducted. NVC can help create an environment where everyone feels heard and respected.

NVC Application:

  • Observation: Describe the situation without judgment. For example, instead of saying “Nobody pays attention in meetings,” say “I noticed some team members are using their laptops during meetings.”
  • Feelings: Express how you feel about the observation. “I feel frustrated when I see this because it seems like the meeting isn’t valued.”
  • Needs: Identify the needs that are not being met. “I need everyone to be engaged so we can make effective decisions.”
  • Requests: Make clear and concrete requests. “Could you please avoid using your laptop during the meeting unless it’s necessary for the discussion?”

Sprints

During sprints, clear and effective communication is a key for team success. NVC can help ensure all team members are aligned and motivated.

NVC Application:

  • Sprint Planning: Use NVC to ensure everyone understands the sprint objectives and feels comfortable with their responsibilities. “I’ve noticed some backlog items weren’t well understood. Can we take some time to clarify this so everyone feels confident with their tasks?”
  • Daily Meetings: Keep daily meetings focused and productive using NVC to address obstacles. “When you mention you’re having difficulty implementing a feature, I feel concerned because we want to ensure everyone meets their deadlines. What can we do to help?”

Conflict Resolution

Conflicts are inevitable in any workplace, but how they’re managed can make all the difference. NVC offers a framework for resolving conflicts constructively.

NVC Application:

  • Problem Identification: Start by describing the problem without judgment. “I noticed there was a misunderstanding about task assignments in the last sprint.”
  • Expression of Feelings: Share how you feel about the conflict. “I’m concerned because this misunderstanding could affect our productivity and morale.”
  • Exploration of Needs: Discover the underlying needs of all parties involved. “It seems both of you have legitimate concerns about workload and clarity of assignments. Can we talk about this to find a solution that addresses both?”
  • Solution Proposal: Work together to find mutually beneficial solutions. “What do you think about us reviewing the task assignment process together to ensure it’s clearer and fairer for everyone?”

Feedback

Feedback is essential for the growth and development of any team. NVC can transform feedback into a positive opportunity for learning and improvement.

NVC Application:

  • Positive Feedback: Use NVC to express genuine appreciation. “I noticed you dedicated a lot of time to fixing critical bugs in the last release. That made me feel very confident in our product. Thank you for your commitment!”
  • Constructive Feedback: Address areas for improvement sensitively and constructively. “I noticed some recent commits didn’t follow our code standards. This concerned me because it could lead to maintenance issues in the future. Could you review the guidelines and perhaps discuss any difficulties you’re facing?”

General Communication

NVC can be applied in all daily interactions within an engineering team, fostering a more harmonious and productive work environment.

NVC Application:

  • Emails and Messages: When sending emails or messages, be clear and empathetic. “I’d like to discuss the design of the new feature. Can we schedule a meeting for tomorrow at 10 AM? I need your feedback to ensure we’re on the right track.”
  • Code Collaboration: During code reviews, use NVC to offer suggestions. “I’ve observed that this function could be optimized. I’m concerned about performance in high-volume data cases. Can we work together to improve it?”

Final thoughts: Just about a better team communication

NVC can transform how Software Engineering teams collaborate, resolve conflicts, and grow together.

By adopting NVC practices, teams can create a more empathetic, respectful, and productive work environment where everyone feels valued and understood.

Some time ago, I presented NVC to an engineering team in a talk while working on projects at Vizir.

The content and examples are still very relevant. I plan to record new content soon.

Enjoy the bloopers!

Share this content:
Facebook
X (Twitter)
Reddit
LinkedIn
Bluesky
Threads
Telegram
Whatsapp
RSS
Copy link

Leave a Reply

Your email address will not be published. Required fields are marked *

Gravatar profile