Writing good code is only part of being a senior software engineer.

As engineers become more senior, companies expect them not only to solve technical problems, but also to understand who should be involved, what information each person needs, how much detail to provide, and when a problem needs to be escalated.

A production crash, unclear requirement, missed deadline, API failure, or disagreement between developers may all require completely different communication strategies.

The key principle is simple:

The right problem should reach the right person, with the right level of detail, at the right time.

This article explains that idea through practical software engineering situations.


The Basic Communication Model

When something happens in a software project, a senior engineer should think through five questions:

  1. What exactly is the problem?
  2. Who owns this area?
  3. Who needs to know about it?
  4. What information does each person need?
  5. Am I only reporting a problem, or am I also bringing possible solutions?

A junior engineer may simply say:

“There is a bug.”

A senior engineer is more likely to say:

“I reproduced the issue, identified the likely cause, evaluated the user impact, and I see two possible solutions. I recommend the second one because it has lower release risk.”

That difference is not about speaking more.

It is about communicating better information.


1. You Find a Production Crash

Imagine that users are experiencing a crash during checkout.

The first step should usually be technical investigation.

You reproduce the problem and identify as much information as possible before involving other people.

Communication with the responsible developer

You might say:

“I reproduced the crash. It happens after the payment callback when the response is null, and the stack trace points to PaymentCoordinator.”

The developer needs:

  • reproduction steps
  • logs
  • stack traces
  • affected code
  • expected behavior
  • actual behavior

They do not need a long business presentation.


Communication with the Tech Lead

The Tech Lead needs a broader picture.

You might say:

“This affects checkout and appears to be high impact. I found the likely root cause and recommend fixing it before the next release.”

Now you are communicating:

  • impact
  • severity
  • technical risk
  • proposed action

Communication with Product

A Product Manager usually does not need to know which Swift class caused the crash.

Instead:

“Users who encounter this condition cannot complete checkout. I recommend treating this as high priority.”

Product needs to understand:

  • who is affected
  • how serious the problem is
  • whether the roadmap or release should change

Communication with QA

QA needs something different again:

“Here are the exact reproduction steps. The expected behavior is an error message, but the application currently crashes.”

QA needs:

  • steps to reproduce
  • test environment
  • expected result
  • actual result
  • regression scope

One technical problem therefore produces several different conversations.


2. The Requirement Is Unclear

Suppose the requirement says:

“Handle cancelled payments.”

That is not enough information to implement the feature.

A developer might immediately start coding.

A senior engineer first identifies what is unclear.

For example:

“When the user cancels payment, should we preserve the shopping cart or reset it?”

This is primarily a product or business requirement.

The right people may include:

  • Product Manager
  • Product Owner
  • Business Analyst

But consider another question:

“Should we implement this using Coordinator or NavigationStack?”

That is not a product question.

That is a technical implementation decision.

It should normally be discussed with:

  • another developer
  • Senior Engineer
  • Tech Lead
  • Staff Engineer

Understanding this distinction is important.

Product defines what the product should do. Engineering decides how the system should do it.


3. You Disagree With Another Developer

Technical disagreement is normal.

Maybe you prefer one architecture and another developer prefers another.

The first step should generally not be escalation to management.

Talk directly to the engineer.

For example:

“I see a maintainability issue with approach A. Can we compare approaches A and B based on complexity, testability, coupling, and future changes?”

Now the discussion is about engineering trade-offs rather than personal preference.

Good criteria might include:

  • maintainability
  • complexity
  • performance
  • scalability
  • testability
  • development time
  • technical debt
  • compatibility with the existing architecture

If you still cannot reach a reasonable decision, then involve the Tech Lead.

You might say:

“We have two reasonable approaches. Here are the trade-offs we identified. We would like your input before proceeding.”

This is healthy escalation.

You are not saying:

“The other developer is wrong.”

You are saying:

“We have a technical decision that needs another level of input.”

That distinction matters.


4. The Deadline Will Not Be Met

Suppose a feature was estimated at three days, but during development you discover an unexpected backend dependency.

A weak status update would be:

“We are not going to finish.”

That gives management almost nothing useful.

A much stronger communication would be:

“The original estimate was three days, but during implementation we discovered an additional dependency on the backend API. We currently have two options: reduce the scope and keep Friday's release, or move the complete feature to Monday. I recommend reducing the scope and delivering the remaining functionality in the next iteration.”

This communicates:

Problem → Cause → Options → Recommendation

That pattern is extremely useful for senior engineers.

Do not only bring problems upward.

Whenever possible, bring options and a recommendation.

The relevant people may include:

  • Tech Lead
  • Engineering Manager
  • Product Manager

The Product Manager may decide whether reducing scope is acceptable.

The Tech Lead may evaluate technical risk.

The Engineering Manager may need to adjust capacity or delivery expectations.


5. The Backend API Is Failing

Suppose your mobile application calls:

POST /payments

and receives an HTTP 500 response whenever paymentMethod is null.

The first conversation should probably be with the Backend Engineer responsible for that API.

A useful message could be:

“POST /payments returns HTTP 500 when paymentMethod is null. Here is the request payload, response, and reproduction scenario.”

That is much better than:

“The backend is broken.”

Good developer-to-developer communication contains enough technical evidence for the other engineer to start investigating immediately.

If the API problem blocks a major release, you may also inform the Tech Lead or Product Manager.

But the level of detail changes.

Backend Engineer:

request, response, logs, payload, API contract

Product Manager:

feature blocked, user impact, expected delay

Engineering Manager:

delivery risk and dependency

Again, the same problem is communicated differently depending on the audience.


6. A Design Is Technically Difficult to Implement

Suppose a designer proposes a complicated animation.

It looks excellent, but testing shows that it performs poorly on older devices.

Simply telling the designer:

“SwiftUI performance is bad.”

does not help much.

A better conversation is:

“The animation works well visually, but on older devices it causes frame drops and makes the interaction feel unresponsive. Can we simplify the animation while keeping the same user experience?”

Now you are discussing the problem in terms that matter to both engineering and design.

The goal should not be:

Engineering versus Design

It should be:

Engineering + Design versus the user problem.

Senior engineers learn to translate technical constraints into product and user experience language.


7. You Release a Feature and Nobody Uses It

Suppose your team spends several weeks developing a new feature.

The release succeeds technically.

No crashes.

No major bugs.

But almost nobody uses it.

This is no longer primarily a coding problem.

Now you should probably talk to:

  • Product Manager
  • Data Analyst
  • UX Researcher

You might say:

“Feature adoption is much lower than expected. Can we look at the funnel and identify where users are dropping off?”

The Data Analyst might examine:

  • feature activation
  • conversion
  • retention
  • click-through rates
  • user funnels
  • session behavior

Engineering should also verify:

  • analytics events are firing correctly
  • event properties are correct
  • tracking is not broken

A feature can be technically perfect and still fail as a product.

Senior engineers understand that successful delivery and successful product outcomes are not always the same thing.


8. You Discover a Security Vulnerability

Security problems require a different communication pattern.

Suppose you discover that an authentication token may be exposed under certain conditions.

This should not become:

“I will put it in the backlog and someone can look at it later.”

Depending on severity, you may need to quickly involve:

  • Security Engineer
  • Tech Lead
  • Engineering Manager
  • SRE
  • relevant system owners

Useful information includes:

  • what is affected
  • how the vulnerability can be triggered
  • whether it can be exploited
  • whether customer data may be exposed
  • affected versions
  • possible mitigation
  • whether immediate action is required

Sensitive security issues also should not necessarily be posted in a large public Slack channel.

The communication channel itself matters.


9. A Junior Developer Submits Poor Code

Suppose you review a merge request from a junior developer and notice duplicated logic in several places.

A poor approach would be to tell the manager:

“This developer writes bad code.”

That helps nobody.

Instead, use the code review as a mentoring opportunity:

“This implementation works, but the same logic is currently duplicated in three places. I suggest extracting it into a shared component because future changes would otherwise require updating all three paths.”

Notice what happened.

You did not only say:

“Change this.”

You explained:

  • what the problem is
  • why it matters
  • what could happen later
  • what improvement you recommend

Senior engineers should help other engineers understand why something should change.

The goal of mentoring is not to make someone dependent on you.

The goal is to help them solve similar problems independently in the future.


Communication Tools Also Matter

The tool itself is rarely the important part.

What matters is choosing the appropriate communication channel.

Slack or Microsoft Teams

Useful for:

  • quick questions
  • asynchronous coordination
  • short status updates
  • lightweight technical discussions

But a 70-message architecture debate probably should not remain in Slack.

At some point, it becomes more efficient to say:

“This is becoming difficult to resolve in chat. Let's have a short call and compare the options.”


Zoom or Teams Calls

Useful when:

  • the topic is complex
  • several people need to align
  • misunderstanding is increasing
  • architecture decisions need discussion
  • conflict is difficult to resolve asynchronously

The meeting should still produce an outcome.

Important decisions should usually be documented afterward.


Jira

Jira is useful for making work visible and trackable.

A useful engineering ticket may contain:

  • context
  • problem description
  • reproduction steps
  • expected behavior
  • actual behavior
  • priority
  • dependencies
  • acceptance criteria

A Jira ticket should contain enough information that another engineer can understand why the work exists.


GitHub or GitLab

Pull requests and merge requests are not only places to approve code.

They are engineering communication tools.

During review, senior engineers may evaluate:

  • correctness
  • architecture
  • maintainability
  • naming
  • test coverage
  • edge cases
  • security
  • performance
  • unnecessary complexity

Good review comments explain reasoning.

Instead of:

“This is wrong.”

Prefer:

“This creates a second source of truth for the state. Could we reuse the existing state owner instead? That would reduce the risk of these values becoming inconsistent.”


Confluence, Notion, ADRs, or Technical Documentation

Chat disappears.

Important architectural decisions should not.

Long-term knowledge belongs in documentation.

Examples include:

  • architecture decisions
  • API contracts
  • operational procedures
  • onboarding documentation
  • system design
  • incident learnings

For significant architecture decisions, teams may also use Architecture Decision Records (ADRs).


Understanding Escalation

One of the most important senior engineering skills is knowing when not to escalate.

If two developers disagree about a small implementation detail, they should normally try to resolve it together.

If they cannot resolve a meaningful architecture decision, involve the Tech Lead.

If the issue creates delivery risk, Engineering Management and Product may need to know.

If production is down, SRE, engineering leadership, and relevant system owners may need immediate involvement.

Escalation should not mean:

“I could not solve this, so it is someone else's problem.”

Healthy escalation means:

“This issue now requires a decision, authority, information, or coordination beyond my current scope.”


Different Roles Need Different Information

A useful mental model is:

Developer → technical details

Architecture, code, APIs, implementation, tests.

Tech Lead → technical decision + trade-offs

Architecture, risk, alternatives, technical direction.

Product Manager → user + product impact

User value, priority, scope, product behavior.

Engineering Manager → delivery + people + risk

Capacity, deadlines, dependencies, team issues.

QA → reproducibility + expected behavior

Test scenarios, regression risk, acceptance criteria.

DevOps / SRE → infrastructure + production

Deployments, environments, observability, availability.

Designer → user experience

Interaction behavior, usability, accessibility.

Data → measurement

Events, funnels, adoption, retention, conversion.

Knowing this prevents one of the most common communication mistakes in engineering: giving everyone the same information.


The Senior Engineer Mindset

Before communicating an issue, ask:

1. What type of problem is this?

Technical?

Product?

Business?

Process?

Infrastructure?

People?

2. Who owns the problem?

Do not automatically go to your manager.

Find the person closest to the problem.

3. Who needs to know?

The person solving the problem and the person affected by the problem may be different people.

4. What information does this person actually need?

A Product Manager probably does not need a stack trace.

A Backend Engineer probably does.

5. Can I bring a recommendation?

Instead of:

“We have a problem.”

Try to reach:

“We have a problem. I investigated it. These are the options, and this is the option I recommend.”

That is one of the clearest differences between simply reporting problems and taking ownership of them.


Senior Communication Is Not About Talking More

Senior engineers are not necessarily the people who speak the most in meetings.

Strong senior communication means being able to:

  • identify the real problem
  • find the right person
  • provide the right context
  • distinguish technical and business decisions
  • communicate risk early
  • resolve disagreements professionally
  • escalate appropriately
  • document important decisions
  • mentor other engineers
  • bring solutions rather than only problems

Technical expertise remains essential.

But as the scope of an engineer grows, communication becomes part of engineering itself.

The question is no longer only:

“Can I solve this problem?”

It becomes:

“Can I help the team understand the problem, make the right decision, and move toward a solution?”

That is a significant part of what companies expect from a senior software engineer.