<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://eduklein.com.br/feed.xml" rel="self" type="application/atom+xml" /><link href="https://eduklein.com.br/" rel="alternate" type="text/html" /><updated>2026-09-29T02:53:18+00:00</updated><id>https://eduklein.com.br/feed.xml</id><title type="html">Edu Klein</title><subtitle>Edu Klein&apos;s thoughts about leadership, management, software development and random stuff</subtitle><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><entry><title type="html">Why Great Performance Isn’t a Case for Promotion</title><link href="https://eduklein.com.br/peter-principle/" rel="alternate" type="text/html" title="Why Great Performance Isn’t a Case for Promotion" /><published>2026-08-24T00:00:00+00:00</published><updated>2026-08-24T00:00:00+00:00</updated><id>https://eduklein.com.br/peter-principle</id><content type="html" xml:base="https://eduklein.com.br/peter-principle/"><![CDATA[<p>The best engineer on your team is not necessarily your next best engineering manager. The best engineering manager is not necessarily your next best leader of leaders. And yet, most companies promote on a criteria that ignores this entirely: they look at how well someone performs in the role they hold today, and treat that as evidence that they will perform well in a role they have never done.</p>

<p>This is the <strong><a href="https://en.wikipedia.org/wiki/Peter_principle">Peter Principle</a></strong>, and it’s one of the most persistent traps in <a href="/mgmt/people/performance">performance management</a>.</p>

<h2 id="what-is-the-peter-principle">What is the Peter Principle?</h2>

<p>Formulated by <a href="https://en.wikipedia.org/wiki/Laurence_J._Peter">Laurence J. Peter</a> in his 1969 book <em>The Peter Principle</em>, the idea is deceptively simple:</p>

<blockquote>
  <p>In a hierarchy, every employee tends to rise to their level of incompetence.</p>
</blockquote>

<p>The logic is straightforward. If promotions are granted based on performance in the <em>current</em> role, then people keep being promoted as long as they perform well. The moment they reach a role where they no longer perform well, the promotions stop — and they stay there.</p>

<p>Over enough time, the argument goes, every position ends up occupied by someone who is not competent at it. It is of course an exaggeration, but the mechanism behind it is very real, and I’ve seen it play out in tech many times.</p>

<h2 id="why-it-hits-software-engineering-so-hard">Why It Hits Software Engineering So Hard?</h2>

<p>The Peter Principle is particularly damaging in software engineering because <strong>the skills that make someone excellent at one level are often not the skills required at the next one</strong>.</p>

<p>An excellent Senior Software Engineer is deeply technical, delivers complex projects, and is a trusted authority within their team. Promote them to Staff and the job changes: influence without authority, technical direction across teams, and the ability to pick the right problems rather than solve the assigned ones.</p>

<p>Promote a Senior Engineer to Engineering Manager and the change is even more radical. The craft that earned the promotion — writing code, designing systems, solving hard technical problems — is no longer the job. The new job is <a href="/mgmt/people">people management</a>, <a href="/mgmt/people/delegation">delegation</a>, <a href="/mgmt/people/feedback">feedback</a>, hiring, and <a href="/mgmt/team">team management</a>. It’s a career change, not a promotion.</p>

<p>The same happens one level up. Going from managing a team to managing managers means you no longer lead the work — you lead the people who lead the work. My own experience taking on a full product vertical taught me that lesson: the levers you have as a leader of leaders are strategy, organizational design, and developing other leaders, not the day-to-day execution you used to control.</p>

<p>I explored some of these transitions in <a href="/swe-traits-pitfalls">The traits and pitfalls in Software Engineering careers</a>. The pitfalls listed there are, in a sense, a catalog of what happens when someone lands at a level they were not prepared for.</p>

<p>The cost is real, and it’s paid by everyone:</p>

<ul>
  <li><strong>The person</strong>: They lose the sense of mastery they had, their confidence erodes, and they may be pushed into a <a href="/mgmt/people/performance">performance improvement plan</a> for a role they never really chose;</li>
  <li><strong>The team</strong>: They get a leader who is struggling to learn the basics of a role instead of one who can support them;</li>
  <li><strong>The organization</strong>: It loses a great performer at one level and gains a struggling one at the next.</li>
</ul>

<p>And there’s a second-order effect that’s often ignored: the person who is <em>not</em> promoted because there was no room left. Levels occupied by people who plateaued block progression for everyone below them.</p>

<h2 id="the-fix-promote-for-the-next-level-not-the-current-one">The Fix: Promote for the Next Level, Not the Current One</h2>

<p>The antidote to the Peter Principle is straightforward to state and hard to execute: <strong>promote people who are already performing at the next level, not people who are performing well at their current one</strong>.</p>

<p>This is the principle the Tech Org career track at VTEX follows. Promotion is not a reward for a great cycle in your current role — it is the formal recognition of a reality that is already visible. By the time someone is promoted, they have been consistently demonstrating the expectations of the next level, and the promotion simply makes the title match the behavior.</p>

<p>This changes the nature of the whole conversation:</p>

<ul>
  <li><strong>Promotion becomes evidence-based</strong>. The question a leader has to answer in a <a href="/performance-review-cycle">calibration committee</a> is not <em>“do they deserve it?”</em> but <em>“where is the evidence that they are already operating at that level?”</em> Evidence is concrete: scope owned, decisions made, impact delivered, autonomy demonstrated;</li>
  <li><strong>Development comes before promotion, not after</strong>. If someone needs to perform at the next level to be promoted, then the leader’s job is to create the opportunities where that performance can happen. This is what an <a href="/personal-dev/template-individual-development-plan">Individual Development Plan</a> is for;</li>
  <li><strong>Nobody is set up to fail</strong>. A person promoted for behaviors they already demonstrate does not fall off a cliff on day one. The role gets bigger, but it is not foreign to them;</li>
  <li><strong>The bar is explicit</strong>. Since expectations are defined per level in the <a href="/swe/career-dev">career ladder</a>, both the engineer and the manager can point at the same document. There is much less room for surprise or perceived unfairness.</li>
</ul>

<p>It also has an uncomfortable but healthy consequence: <strong>excellent performance at your current level is not, by itself, a case for promotion</strong>. It is a case for recognition, for compensation adjustments, for scope and for trust — but the promotion conversation requires something different. Being clear about this early, in <a href="/mgmt/people/one-on-ones">one-on-ones</a>, avoids frustration much later.</p>

<h2 id="the-compensation-caveat">The Compensation Caveat</h2>

<p>There is a fair objection to this model: if someone has to perform at the next level before being promoted, they can spend a long time delivering next-level scope while being paid for the previous one.</p>

<p>The objection is legitimate, but the problem is not the promotion criteria — it’s treating title and compensation as the same lever. They should move on different cadences. <strong>A promotion recognizes a level that has been consistently demonstrated; compensation should follow the value being delivered along the way.</strong> This is why salary bands are tipically broad and overlap between adjacent levels in the industry: so that someone operating above their level can be moved toward the top of their band, without waiting for the title to catch up.</p>

<p>If a person is delivering next-level scope and their compensation hasn’t moved at all, the failure isn’t in the promotion model. It’s in not using a tool the company already has.</p>

<p>Two things make this work in practice: a defined horizon, so the person knows roughly how long the demonstration period is expected to last, and explicit criteria, so they know exactly what is still missing. Without those, “perform at the next level first” stops being a development path and becomes an open-ended request.</p>

<h2 id="what-this-looked-like-for-me">What This Looked Like For Me</h2>

<p>I took on the senior engineering leadership of the Omnichannel Experiences vertical at VTEX in November 2024 — four teams, 35 engineers and engineering managers across Brazil and Colombia. I was promoted to Senior Engineering Manager in August 2026.</p>

<p>Almost two years separate those two dates. That gap is the point.</p>

<p>I did not get the scope because I was promoted. I got promoted because I had been operating at that scope, consistently, across several <a href="/performance-review-cycle">performance review cycles</a> — leading managers, owning the technical direction and organizational health of a vertical, and contributing to hiring and engineering leadership beyond my own teams. The promotion did not hand me a new job to figure out. It recognized the job I had already been doing.</p>

<p>That interval was not a formality either. It was where the actual development happened, and the gaps were not the ones I expected. Leading through other managers was something I had already practiced in previous roles. What my development plan actually targeted was different:</p>

<ul>
  <li><strong>Multiple problem spaces</strong>: going from a single domain to holding several distinct problem spaces at once — marketplace integrations, in-store and remote sales, live shopping — each with its own technical challenges, and none of which I could afford to go deep on the way I used to;</li>
  <li><strong>Strategic vision</strong>: shifting from planning execution to shaping where the vertical should be in a year, and being able to defend that direction with a rationale that connects technical decisions to business outcomes;</li>
  <li><strong>Stakeholder management</strong>: operating with product, business, and leadership peers across the company, where influence and alignment replace the direct authority you have inside your own teams.</li>
</ul>

<p>Those three are precisely the skills you cannot acquire from a title. They come from sitting in the chair, adjusting your <a href="/leadership/styles">leadership style</a> to a much wider range of situations, and getting comfortable with the fact that at that level you influence outcomes far more than you control them. Had I been promoted first and asked to grow into them afterwards, that learning would have happened under pressure, with much higher stakes, and with a real chance of becoming a textbook Peter Principle case.</p>

<p>It requires patience, from both the individual and the organization. Waiting is uncomfortable when you feel ready. But the alternative — being promoted into a role you have never actually practiced — is far worse.</p>

<h2 id="the-leaders-responsibility">The Leader’s Responsibility</h2>

<p>If you lead engineers, this principle puts a specific obligation on you. Promoting for the next level only works if people are actually given the chance to perform at the next level <em>before</em> the promotion. Otherwise it becomes a circular trap: you can’t be promoted without demonstrating the behaviors, and you never get the chance to demonstrate them.</p>

<p>Concretely, this means:</p>

<ul>
  <li><strong>Delegate scope that stretches</strong>. <a href="/mgmt/people/delegation">Delegation</a> is not only about your own bandwidth — it’s the primary mechanism for creating next-level opportunities;</li>
  <li><strong>Be explicit about the gap</strong>. Tell people exactly which expectations they are already meeting and which ones they are not. Vague encouragement is not <a href="/mgmt/people/feedback">feedback</a>;</li>
  <li><strong>Make the ladder visible</strong>. People cannot aim at a target they can’t see;</li>
  <li><strong>Validate the aspiration</strong>. Not everyone wants the next level, and moving to management in particular should be a deliberate choice, not a default reward. Assuming that everyone wants to climb is its own version of the trap.</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>The Peter Principle is not a law of nature. It is the predictable outcome of a specific design choice: rewarding past performance with a different job.</p>

<p>Change the criteria and the outcome changes with it. When promotion recognizes performance that is already happening at the next level, you stop converting great performers into struggling ones. People arrive at new levels prepared, teams get leaders who can actually lead them, and career progression becomes a process people can understand and plan for, rather than a lottery.</p>

<p>The question to ask in a promotion discussion is not <em>“have they earned it?”</em>. It’s <em>“are they already doing it?”</em></p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Performance Management" /><category term="Personal Development" /><category term="Performance Evaluation" /><category term="SWE Career" /><category term="VTEX Way" /><summary type="html"><![CDATA[Promoting on current performance turns great performers into struggling ones. The Peter Principle, and how promoting for the next level avoids it.]]></summary></entry><entry><title type="html">Situational Leadership</title><link href="https://eduklein.com.br/situational-leadership/" rel="alternate" type="text/html" title="Situational Leadership" /><published>2026-07-15T00:00:00+00:00</published><updated>2026-07-15T00:00:00+00:00</updated><id>https://eduklein.com.br/situational-leadership</id><content type="html" xml:base="https://eduklein.com.br/situational-leadership/"><![CDATA[<p>There is no single leadership style that works for everyone in every situation. A new hire full of energy and an experienced engineer who lost motivation require very different approaches from their leader.</p>

<p><strong>Situational leadership is the ability to adapt your <a href="/leadership/styles">leadership style</a> to the context you find</strong>, which involves three skills:</p>

<ul>
  <li><strong>Diagnosis</strong>: Assessing the development level of the person for a given task or goal;</li>
  <li><strong>Flexibility</strong>: Being comfortable using different leadership styles;</li>
  <li><strong>Matching</strong>: Applying the leadership style that fits the situation.</li>
</ul>

<h2 id="the-four-development-levels">The Four Development Levels</h2>

<p>The <a href="https://en.wikipedia.org/wiki/Situational_leadership_theory#SLII">Situational Leadership II model</a>, by <a href="https://en.wikipedia.org/wiki/Ken_Blanchard">Ken Blanchard</a>, describes development as a combination of two factors: <strong>competence</strong> and <strong>commitment</strong>.</p>

<p>Competence is a function of knowledge and skills, which can be gained from learning and experience. Commitment is a combination of confidence (the ability to perform a task well without much supervision) and motivation (the interest and enthusiasm to do it well).</p>

<p>When someone doesn’t perform well without direction, it may be a problem of competence, commitment, or both. The combinations of these two factors form four development levels:</p>

<ul>
  <li><strong>D1 — Enthusiastic beginner</strong>: Low competence, high commitment;</li>
  <li><strong>D2 — Disillusioned learner</strong>: Low to some competence, low commitment;</li>
  <li><strong>D3 — Capable but cautious performer</strong>: Moderate to high competence, variable commitment;</li>
  <li><strong>D4 — Self-reliant achiever</strong>: High competence, high commitment.</li>
</ul>

<h2 id="the-four-leadership-styles">The Four Leadership Styles</h2>

<p>To match the four development levels, the model describes four leadership styles, characterized by different degrees of directive and supportive behavior:</p>

<ul>
  <li><strong>S1 — Directing</strong>: Indicated for enthusiastic beginners (D1). They are motivated, but need direction and frequent feedback to build their skills. This style also fits situations where a quick decision must be made and the stakes are high;</li>
  <li><strong>S2 — Coaching</strong>: Indicated for disillusioned learners (D2). They still need direction and feedback due to their limited experience, but they also need support and recognition to build confidence, and involvement in decision-making to restore commitment;</li>
  <li><strong>S3 — Supporting</strong>: Indicated for capable but cautious performers (D3). They don’t need much direction because they already have the skills, but they need support to reinforce confidence and motivation;</li>
  <li><strong>S4 — Delegating</strong>: Indicated for self-reliant achievers (D4). They are high performers, willing to work on their own with little direction and support. This is where <a href="/mgmt/people/delegation">delegation</a> shines.</li>
</ul>

<p><img src="/images/posts/2026-07-15-situational-leadership/situational-leadership-ii-model.png" alt="Situational Leadership II Model" title="The Situational Leadership II Model, by Ken Blanchard." /></p>

<h2 id="matching-style-and-situation">Matching Style and Situation</h2>

<p>The key insight of the model is that <strong>development levels are task-specific, not people-specific</strong>. The same person can be a self-reliant achiever (D4) in one activity and an enthusiastic beginner (D1) in another. A senior engineer joining your team may have great technical skills, but may not know the priorities, policies, or processes of the company yet, and will benefit from some direction at first.</p>

<p>As a leader, your job is to diagnose the development level for the task at hand and provide the corresponding balance of direction and support. <strong>Over-supervising a high performer is as harmful as abandoning a beginner.</strong></p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Leadership" /><category term="People Skills" /><category term="Leadership Styles" /><category term="Delegation" /><summary type="html"><![CDATA[Situational leadership is the ability to adapt your leadership style to the development level of the person you are leading.]]></summary></entry><entry><title type="html">The Escalation Trap</title><link href="https://eduklein.com.br/escalation-trap/" rel="alternate" type="text/html" title="The Escalation Trap" /><published>2025-11-12T00:00:00+00:00</published><updated>2025-11-12T00:00:00+00:00</updated><id>https://eduklein.com.br/escalation-trap</id><content type="html" xml:base="https://eduklein.com.br/escalation-trap/"><![CDATA[<p>Have you ever noticed how a small disagreement can spiral into a massive conflict? A minor miscommunication escalates into heated arguments? These are examples of the <strong>escalation trap</strong>, a concept rooted in systems theory that shows how seemingly minor actions can trigger reinforcing feedback loops, amplifying problems far beyond their original magnitude.</p>

<p>In this post, I explore the escalation trap and how de-escalation — a critical soft skill often overlooked in professional environments — can break these destructive cycles.</p>

<h2 id="what-is-the-escalation-trap">What is the Escalation Trap?</h2>

<p>The escalation trap is a reinforcing feedback loop where one party’s action triggers a reaction from another party, which in turn prompts a stronger counter-action, creating a self-amplifying cycle of conflict and tension. Unlike balancing feedback loops that tend toward equilibrium, escalation loops push systems toward extreme states.</p>

<p>In <em>Thinking in Systems</em>, Donella Meadows explores how systems are governed by feedback loops. The escalation trap is a specific type of <strong>reinforcing feedback loop</strong> (also called a “vicious cycle”) where each action amplifies the system’s tendency toward conflict. The more a person escalates, the more another one feels justified in reacting back, and the cycle accelerates, leading to outcomes neither party originally intended.</p>

<p>A good example of quick escalation is a traffic conflict. One driver unintentionally cuts off another, who gets angry and honks and yells. If both parties become angry and allow themselves to escalate, the conflict may quickly lead to physical threats and violence. On the other hand, the ability to de-escalate may quickly resolve the issue, allowing everyone to move on in a matter of seconds.</p>

<p>Extreme examples include arms races by nuclear powers and quick escalation of violence between religious groups or soccer fans.</p>

<h3 id="a-simple-business-example">A Simple Business Example</h3>

<p>Imagine two engineering teams in a tech company: the backend team and the frontend team.</p>

<ul>
  <li><strong>Day 1</strong>: The frontend team reports a critical bug in the API response format. The backend team, feeling blamed, responds defensively: “The API is correct. The frontend team isn’t using it properly.”</li>
  <li><strong>Day 3</strong>: The frontend team, frustrated by the dismissal, reacts by escalating the issue to their engineering manager and labeling it as a “critical blocker.”</li>
  <li><strong>Day 5</strong>: The backend team’s manager intervenes, escalates back by questioning the frontend team’s technical competence in a larger meeting.</li>
  <li><strong>Day 7</strong>: The conflict has now involved senior leadership, created tension between teams, slowed down product development, and damaged working relationships.</li>
</ul>

<p>What started as a technical issue evolved into an organizational conflict through escalation. Neither team is malicious; both believed they were defending their interests. Yet the system’s structure trapped both teams to an outcome worse for everyone.</p>

<p>This reflects what Meadows describes as a fundamental principle of systems: the structure of the system determines its behavior. The escalation trap emerges from a system where actions trigger defensive counter-actions, creating reinforcing loops.</p>

<h2 id="the-cost-of-escalation">The Cost of Escalation</h2>

<p>Escalation may get expensive, both emotionally and economically:</p>

<ul>
  <li><strong>Emotional toll</strong>: Stress, anxiety, and reduced morale spread through teams</li>
  <li><strong>Productivity loss</strong>: Energy spent on conflict diverts from productive work</li>
  <li><strong>Relationship damage</strong>: Trust erodes, making future collaboration harder</li>
  <li><strong>Poor decision-making</strong>: When threatened, people make defensive rather than optimal choices</li>
</ul>

<h2 id="de-escalation-the-way-out">De-escalation: The Way Out</h2>

<p>The antidote to the escalation trap is <strong>de-escalation</strong> — the intentional action of reducing tension and breaking the reinforcing feedback loop. Rather than matching escalation with escalation, de-escalation introduces a <strong>balancing feedback loop</strong> that reduces conflict and creates space for resolution.</p>

<p>De-escalation is not a weakness. It’s an important skill and an strategic choice to interrupt the negative spiral and create conditions where problems can be solved effectively.</p>

<p>De-escalation operates by changing how you respond to provocative actions. Instead of triggering the next loop in the escalation cycle, you can respond with:</p>

<ul>
  <li><strong>Calm language and tone</strong>: Signals that you’re not a threat</li>
  <li><strong>Empathy and understanding</strong>: Shows you recognize the other party’s concerns</li>
  <li><strong>Acknowledgment</strong>: Validates their experience without necessarily agreeing</li>
  <li><strong>Collaborative framing</strong>: Shifts from adversarial (“you vs. me”) to cooperative (“us vs. the problem”)</li>
  <li><strong>Clear boundaries</strong>: Maintains respect without aggressive defensiveness</li>
</ul>

<h3 id="traffic-conflit-resolution">Traffic conflit resolution</h3>

<p>Let’s further explore the traffic conflit I previously mentioned. Consider both scenarios:</p>

<p><strong>Without de-escalation:</strong></p>
<ul>
  <li>Driver A cuts off Driver B</li>
  <li>Driver B honks angrily</li>
  <li>Driver A, feeling attacked, slows down intentionally</li>
  <li>Driver B becomes furious and makes an obscene gesture</li>
  <li>Driver A, now enraged, escalates further</li>
  <li>Both drivers are now in a dangerous situation, risking accidents, injuries, or worse</li>
</ul>

<p>This is the escalation trap. Two reasonable people became dangerous through escalation.</p>

<p><strong>With de-escalation:</strong></p>
<ul>
  <li>Driver A cuts off Driver B</li>
  <li>Driver B, though frustrated, takes a breath and assumes an honest mistake</li>
  <li>Driver B doesn’t honk; instead, gives a brief, friendly wave</li>
  <li>Driver A, recognizing their mistake, appreciates the grace and waves back</li>
  <li>Both drivers move on, and everyone arrives safely</li>
</ul>

<p>In the second scenario, Driver B made a strategic choice to de-escalate. By not matching Driver A’s error with aggressive honking, Driver B broke the escalation loop. The result? Safety, reduced stress, and everyone moving forward.</p>

<h3 id="backend-and-frontend-teams-de-escalation">Backend and frontend teams’ de-escalation</h3>

<p>Now, let’s also return to our earlier example of the backend and frontend teams, but imagine a de-escalated version:</p>

<ul>
  <li><strong>Day 1</strong>: The frontend team reports a critical bug in the API response format. Instead of becoming defensive, the backend team responds: “Thanks for reporting this. Let’s schedule a quick call to understand what you’re seeing.”</li>
  <li><strong>Day 2</strong>: Both teams meet. The backend team listens carefully to the frontend team’s concern. They discover the issue stems from a misalignment in expectations, not malice. Both teams contributed to the confusion.</li>
  <li><strong>Day 3</strong>: Together, they create a solution: updated documentation, a quick API adjustment, and agreed-upon communication protocols for future issues.</li>
  <li><strong>Result</strong>: The problem is solved faster. Relationships strengthen. Trust is built. Both teams learned something. The organization benefits from improved collaboration.</li>
</ul>

<h2 id="developing-your-de-escalation-skills">Developing Your De-escalation Skills</h2>

<p>De-escalation is a learnable skill. Here are practical ways to develop it:</p>

<ul>
  <li><strong>Develop Self-Awareness</strong>: Before you can de-escalate others, learn to recognize your own escalation triggers.</li>
  <li><strong>Practice Pause and Breathe</strong>: The most powerful de-escalation tool is the pause between stimulus and response.</li>
  <li><strong>Listen for the Underlying Concern</strong>: Escalation often masks deeper concerns: fear, feeling unheard, loss of control.</li>
  <li><strong>Assume Positive Intent</strong>: Most escalation happens when people assume the worst of each other. Always assume the best intentions from other people.</li>
  <li><strong>Use Calm, Cooperative Language</strong>: Words shape people’s behavior. Choose them wisely.</li>
  <li><strong>Validate Before Disagreeing</strong>: When people feel heard, they’re less likely to escalate.</li>
  <li><strong>Seek Common Ground</strong>: Escalation thrives on division. De-escalation thrives on cooperation.</li>
  <li><strong>Know When to Step Back</strong>: Sometimes, the best de-escalation is recognizing when continuing a conversation will only escalate further.</li>
  <li><strong>Build a Culture of Psychological Safety</strong>: De-escalation works best in environments where people feel safe being vulnerable.</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>The escalation trap is a fundamental pattern in systems: small actions trigger reinforcing loops that amplify conflict and drive systems toward destructive extremes.</p>

<p>De-escalation is the lever that interrupts this trap. By choosing calm over defensiveness, empathy over blame, and collaboration over adversarialism, you don’t just resolve immediate conflicts—you transform relationships.</p>

<p>Businesses are typically high-pressure environments focused on delivering results and meeting ambitious, often uncertain deadlines. Management deliberately introduce some level of conflict and pressure to drive performance. In this scenario, avoiding the escalation trap is no easy task. It demands both skill and intentional action.</p>

<p><strong>Leaders who understand de-escalation become invaluable. They transform potential crises into opportunities for strengthening teams and improving outcomes.</strong></p>

<p>The next time you’re in a conflict — whether with a teammate, customer, or leader — pause and ask yourself: “Will my next action escalate or de-escalate this situation?” Choose wisely.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Leadership" /><category term="People Skills" /><category term="Systems Thinking" /><category term="Systems Theory" /><category term="Conflict Resolution" /><category term="Soft Skills" /><summary type="html"><![CDATA[Exploring the escalation trap through systems thinking and discovering how de-escalation is a powerful skill for resolving conflicts in business and life.]]></summary></entry><entry><title type="html">Problem-Solving in Software Engineering</title><link href="https://eduklein.com.br/problem-solving-swe/" rel="alternate" type="text/html" title="Problem-Solving in Software Engineering" /><published>2025-10-26T00:00:00+00:00</published><updated>2025-10-26T00:00:00+00:00</updated><id>https://eduklein.com.br/problem-solving-swe</id><content type="html" xml:base="https://eduklein.com.br/problem-solving-swe/"><![CDATA[<p>Problem-solving is at the heart of <a href="/swe">software engineering</a>. Whether debugging a production issue, designing a new system, or optimizing performance, the ability to approach challenges methodically and effectively distinguishes exceptional engineers.</p>

<p>In tech companies, where complexity scales rapidly and novel challenges emerge daily, strong problem-solving skills are non-negotiable. Yet, for many engineers, it is challenging to define what “good” problem-solving looks like or how to develop these capabilities systematically. Without a clear framework, it’s difficult to assess growth, identify development areas, or set meaningful career goals.</p>

<p>In this post, I share my perspective on the varying levels of problem-solving competency for software engineers within tech companies. By breaking down this skill into actionable levels — from beginner to expert — I aim to provide a framework that <a href="/mgmt/sem/sem-role">software engineering managers</a> (SEMs) can use to assess and develop their team’s problem-solving capabilities.</p>

<p>This is similar to the work I’ve previously done for <a href="/effective-communication-swe">Effective Communication</a>, which I’ll compile with other skills at some point in the future into a guide for software engineering competencies.</p>

<p>This structure can be integrated into career ladders, supporting personal development and career progression. It can help engineers identify growth opportunities and set clear goals, fostering an environment where challenges are approached confidently and systematically, and product development thrives.</p>

<h2 id="problem-solving-expectations-and-levels">Problem-Solving Expectations and Levels</h2>

<p>To make problem-solving more tangible, I will describe it through five dimensions:</p>

<ol>
  <li><strong>Framework and Tool Proficiency</strong>: Masters a variety of frameworks, tools, and libraries commonly used to solve engineering problems, enabling efficient and effective solutions.</li>
  <li><strong>Coding and Design Craftsmanship</strong>: Demonstrates the ability to craft elegant, efficient, and maintainable code solutions through the thoughtful application of algorithms, data structures, and design patterns.</li>
  <li><strong>Architectural Understanding</strong>: Develops architectural solutions that address complex system requirements and integration challenges, ensuring scalability, reliability, and maintainability.</li>
  <li><strong>Analytical Thinking</strong>: Breaks down complex problems into smaller, manageable parts and systematically approaches their resolution using appropriate strategies.</li>
  <li><strong>Continuous Learning and Practice</strong>: Engages in continuous learning to acquire new problem-solving methods and improve existing skills through regular practice and exploration of emerging technologies.</li>
</ol>

<p>I try to establish adequate expectations for each level and provide evidence and examples.</p>

<h3 id="beginner">Beginner</h3>

<ul>
  <li><strong>Framework and Tool Proficiency</strong>: Understands basic functionality and can utilize frameworks and tools with guidance.</li>
  <li><strong>Coding and Design Craftsmanship</strong>: Demonstrates awareness of fundamental algorithms and data structures. Writes functional code that follows team standards and applies simple design patterns in straightforward scenarios.</li>
  <li><strong>Architectural Understanding</strong>: Has a basic grasp of software architecture, focusing mainly on individual components rather than the system as a whole. Follows architectural guidance and design decisions made by more experienced engineers.</li>
  <li><strong>Analytical Thinking</strong>: Breaks down simple problems and identifies potential solutions with some guidance.</li>
  <li><strong>Continuous Learning and Practice</strong>: Actively seeks out learning resources and begins incorporating them into daily practice with regular mentorship.</li>
</ul>

<h4 id="evidence">Evidence</h4>

<ul>
  <li>Completes tasks with low assistance</li>
  <li>Proactively seeks support in the face of obstacles</li>
  <li>Asks questions to clarify problem requirements and solution approaches</li>
  <li>Attends and participates in training sessions and workshops on frameworks and tools</li>
  <li>Engages in regular code reviews and refinement sessions to learn from more experienced engineers</li>
  <li>Approaches feedback received in code reviews with an open mindset</li>
</ul>

<h4 id="example">Example</h4>

<ul>
  <li>An engineer who regularly consults with peers or a mentor while working on projects, asking for advice on which design patterns and tools to apply, and uses tutorials to understand the basic functionality of frameworks and design patterns.</li>
</ul>

<h3 id="competent">Competent</h3>

<ul>
  <li><strong>Framework and Tool Proficiency</strong>: Comfortably uses common frameworks and tools to solve routine problems efficiently.</li>
  <li><strong>Coding and Design Craftsmanship</strong>: Crafts readable, modular code for moderately complex projects by thoughtfully selecting appropriate data structures, algorithms, and design patterns while ensuring adherence to team conventions.</li>
  <li><strong>Architectural Understanding</strong>: Understands basic architectural principles and can contribute to discussions on system components and their interactions.</li>
  <li><strong>Analytical Thinking</strong>: Analyzes problems effectively, proposing logical solutions and alternatives.</li>
  <li><strong>Continuous Learning and Practice</strong>: Regularly updates skills with new techniques and frameworks, integrating them into work processes.</li>
</ul>

<h4 id="evidence-1">Evidence</h4>

<ul>
  <li>Independently solves problems using standard frameworks and tools</li>
  <li>Successfully applies design patterns and can effectively explain their benefits</li>
  <li>Actively participates in team discussions about architectural decisions</li>
  <li>Provides logical reasoning for chosen solutions to problems</li>
  <li>Enrolls in courses or reads books on software development topics</li>
</ul>

<h4 id="example-1">Example</h4>

<ul>
  <li>An engineer who efficiently utilizes existing frameworks to build new features, chooses design patterns that optimize performance, and contributes meaningfully during team architectural discussions.</li>
</ul>

<h3 id="proficient">Proficient</h3>

<ul>
  <li><strong>Framework and Tool Proficiency</strong>: Proficiently navigates and adapts frameworks and tools to address complex problems. Identifies gaps in current tools and introduces improvements when necessary.</li>
  <li><strong>Coding and Design Craftsmanship</strong>: Chooses appropriate design patterns, data structures, and algorithms, and proactively refactors existing codebases to improve maintainability and performance.</li>
  <li><strong>Architectural Understanding</strong>: Contributes to the design of system architectures and can foresee the implications of architectural decisions.</li>
  <li><strong>Analytical Thinking</strong>: Proactively identifies potential problems and implements effective solutions before issues arise.</li>
  <li><strong>Continuous Learning and Practice</strong>: Actively seeks out cutting-edge practices, integrating them into existing workflows and sharing knowledge with peers.</li>
</ul>

<h4 id="evidence-2">Evidence</h4>

<ul>
  <li>Leads projects that require the use of advanced frameworks and custom tools</li>
  <li>Conducts workshops on design patterns and tools and their real-world applications</li>
  <li>Proposes architectural changes that enhance system scalability and reliability</li>
  <li>Conducts thorough analysis and presents findings to influence strategic decisions</li>
  <li>Creates custom tools or frameworks that are adopted across the organization</li>
  <li>Contributes to technical blogs or speaks at conferences to share knowledge</li>
  <li>Identifies architectural issues (e.g., scaling challenges) and suggests improvements</li>
</ul>

<h4 id="example-2">Example</h4>

<ul>
  <li>An engineer who anticipates scaling issues, designs robust architectures, and implements advanced design patterns to optimize the system’s performance while mentoring others on these approaches.</li>
</ul>

<h3 id="expert">Expert</h3>

<ul>
  <li><strong>Framework and Tool Proficiency</strong>: Innovates and customizes frameworks and tools to create unique solutions for unprecedented challenges.</li>
  <li><strong>Coding and Design Craftsmanship</strong>: Masters design patterns, mentors their strategic application, anticipates maintainability challenges, and shapes engineering culture around algorithmic thinking and sustainable design.</li>
  <li><strong>Architectural Understanding</strong>: Architects complex, scalable, reliable, and maintainable systems, making strategic decisions that align with long-term company goals.</li>
  <li><strong>Analytical Thinking</strong>: Identifies systemic issues and implements strategic solutions that have a positive impact on product direction, overall efficiency, and user experience.</li>
  <li><strong>Continuous Learning and Practice</strong>: Leads the adoption of emerging technologies and practices, fostering a culture of innovation and excellence.</li>
</ul>

<h4 id="evidence-3">Evidence</h4>

<ul>
  <li>Innovates and customizes frameworks and tools to create unique solutions for unprecedented challenges</li>
  <li>Mentors engineers on using design patterns to solve complex problems</li>
  <li>Develops and implements long-term architectural strategies</li>
  <li>Leads cross-functional teams to solve high-impact problems</li>
  <li>Publishes articles and papers or contributes to open-source projects</li>
  <li>Sets technical direction that influences the entire organization and industry</li>
</ul>

<h4 id="example-3">Example</h4>

<ul>
  <li>An engineer who architects technology strategies for the company, designing innovative solutions that set industry standards, while mentoring teams to elevate their problem-solving capabilities.</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Problem-solving forms the foundation of effective software engineering. By focusing on these five dimensions, we can create a structured approach to developing these competencies within our teams.</p>

<p>Setting clear expectations for each level of problem-solving proficiency allows <a href="/mgmt/sem/sem-role">SEMs</a> to guide their teams toward continuous improvement. Like building a utility belt of tools and techniques, developing problem-solving skills is an ongoing journey that requires deliberate practice and regular refinement.</p>

<p>This framework provides engineers with a roadmap for growth, helping them identify where they are, where they want to go, and what skills they need to develop along the way.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Technical Skills" /><category term="Performance Management" /><category term="Problem-Solving" /><category term="SWE Career" /><category term="Performance Evaluation" /><summary type="html"><![CDATA[Understanding problem-solving expectations and levels to build a robust engineering toolkit and advance your career.]]></summary></entry><entry><title type="html">The traits and pitfalls in Software Engineering careers</title><link href="https://eduklein.com.br/swe-traits-pitfalls/" rel="alternate" type="text/html" title="The traits and pitfalls in Software Engineering careers" /><published>2025-08-04T00:00:00+00:00</published><updated>2025-08-04T00:00:00+00:00</updated><id>https://eduklein.com.br/swe-traits-pitfalls</id><content type="html" xml:base="https://eduklein.com.br/swe-traits-pitfalls/"><![CDATA[<p>Over the years, I’ve seen software engineers grow from new hires to trusted technical leaders, but I have also witnessed many competent engineers stall out in their careers, stuck in patterns and behaviors that hold them back.</p>

<p>What separates those who thrive from those who plateau isn’t just technical skill, but a combination of habits and subtle pitfalls that shape their professional journey.</p>

<p>As individuals, we need to be intentional about our career growth, and as leaders, we must provide our teams with clear paths to progression. Yet we often lack a practical model or reference point for this development.</p>

<p>The following lists represent my personal perspective on what truly matters in the software engineering career journey. If you’re a Software Engineering Manager, I hope these traits and pitfalls help you assess your team during performance reviews and guide their skill development. If you’re a software engineer, you might recognize patterns in your own work and discover concrete ways to advance your career.</p>

<p>These are the key signals I look for, and the common traps I’ve seen catch even the most talented professionals.</p>

<h2 id="software-engineer">Software Engineer</h2>

<p>A competent Software Engineer independently delivers well-structured solutions to defined problems, collaborates effectively with teammates, and demonstrates solid technical judgment within their area of responsibility.</p>

<h3 id="traits">Traits</h3>

<p>The typical characteristics of a software engineer.</p>

<ul>
  <li><strong>Proficient Coder</strong>: Writes clean, efficient, and testable code with minimal supervision.</li>
  <li><strong>Debugging Skills</strong>: Independently troubleshoots issues across the stack.</li>
  <li><strong>Basic System Design</strong>: Understands trade-offs in small-scale systems (e.g., database choices, API contracts).</li>
  <li><strong>Tool Mastery</strong>: Comfortable with team workflows (version control, CI/CD, debugging tools).</li>
  <li><strong>Team Player</strong>: Actively participates in code reviews, standups, and retrospectives.</li>
  <li><strong>Task Ownership</strong>: Delivers medium-complexity features end-to-end.</li>
</ul>

<h3 id="pitfalls">Pitfalls</h3>

<p>Common pitfalls that prevent a junior engineer from becoming a competent software engineer.</p>

<p>Technical Skills</p>
<ul>
  <li><strong>Shallow code reuse</strong>: Reusing code without understanding why it works, leading to fragile solutions.</li>
  <li><strong>Over-engineering</strong>: Adding unnecessary complexity to prove skills.</li>
  <li><strong>Testing neglect</strong>: Writing code without tests, assuming “it works on my machine”.</li>
  <li><strong>Debugging dependency</strong>: Relying too heavily on seniors to solve tricky bugs instead of deep-diving.</li>
</ul>

<p>Soft skills</p>
<ul>
  <li><strong>Silent struggling</strong>: Wasting time stuck on problems instead of asking for help early.</li>
  <li><strong>Code review passivity</strong>: Approving PRs superficially, like “LGTM”, or not defending feedback constructively.</li>
  <li><strong>Task focus</strong>: Focusing only on assigned tasks without understanding the bigger picture.</li>
  <li><strong>Process subversion</strong>: Dismissing rituals, such as standups and retrospectives, as “overhead”, instead of leveraging them.</li>
  <li><strong>Comfort zone stagnation</strong>: Only volunteering for tasks in known areas.</li>
</ul>

<h2 id="senior-software-engineer">Senior Software Engineer</h2>

<p>A Senior Software Engineer leads complex technical initiatives with minimal guidance, makes architectural decisions that balance technical and business needs, and actively mentors others while serving as a trusted technical authority within their team.</p>

<h3 id="traits-1">Traits</h3>

<p>The typical characteristics of a senior software engineer.</p>

<ul>
  <li><strong>Technical Excellence</strong>: Deep expertise in their domain (coding, debugging, system design).</li>
  <li><strong>Ownership</strong>: Accountable for projects end-to-end, including failures and maintenance.</li>
  <li><strong>Problem-Solving</strong>: Breaks down ambiguous problems into actionable solutions.</li>
  <li><strong>Mentorship</strong>: Guides junior engineers and fosters team growth.</li>
  <li><strong>Communication</strong>: Articulates trade-offs clearly to both technical and non-technical stakeholders.</li>
  <li><strong>Autonomy</strong>: Solves complex problems independently but knows when to escalate.</li>
  <li><strong>Code Quality Advocate</strong>: Ensures maintainability, testing, and scalability within their team.</li>
  <li><strong>Collaborative Leadership</strong>: Coordinates work across teammates (e.g., reviews, design discussions).</li>
  <li><strong>Tactical Decision-Making</strong>: Balances short-term deliverables with long-term tech debt.</li>
  <li><strong>Domain Specialization</strong>: Deep knowledge of their team’s systems and product area.</li>
</ul>

<h3 id="pitfalls-1">Pitfalls</h3>

<p>Common pitfalls that prevent a software engineer from becoming a senior software engineer.</p>

<p>Technical Skills</p>
<ul>
  <li><strong>Ignoring system design</strong>: Focusing solely on code without understanding broader architecture.</li>
  <li><strong>Prioritizing speed over quality</strong>: Sloppy code, tech debt, or ignoring long-term impact.</li>
  <li><strong>Stagnating technically</strong>: Not learning new tools, patterns, or domain knowledge.</li>
  <li><strong>Staying in the execution zone</strong>: Only completing tasks without designing solutions or questioning requirements.</li>
</ul>

<p>Soft skills</p>
<ul>
  <li><strong>Focusing only on technical skills</strong>: Neglecting leadership, communication, and mentorship.</li>
  <li><strong>Underestimating communication</strong>: Not documenting work, explaining trade-offs, or aligning stakeholders.</li>
  <li><strong>Avoiding collaboration</strong>: Working in isolation instead of influencing cross-team initiatives.</li>
  <li><strong>Neglecting mentorship</strong>: Not helping junior engineers grow or share knowledge.</li>
  <li><strong>Resisting feedback</strong>: Defensiveness instead of treating feedback as a growth opportunity.</li>
  <li><strong>Not thinking proactively</strong>: Waiting for direction instead of spotting and solving problems early.</li>
  <li><strong>Avoiding ownership</strong>: Not taking responsibility for projects end-to-end, including failures.</li>
</ul>

<h2 id="staff-software-engineer">Staff Software Engineer</h2>

<p>A Staff Software Engineer shapes technical strategy across teams, solves ambiguous problems with organization-wide impact, and influences engineering culture through technical leadership that extends beyond their immediate scope of work.</p>

<h3 id="traits-2">Traits</h3>

<p>The typical characteristics of a staff software engineer.</p>

<ul>
  <li><strong>Strategic Vision</strong>: Aligns technical work with business goals.</li>
  <li><strong>Influence Without Authority</strong>: Drives consensus across teams/orgs on high-impact initiatives.</li>
  <li><strong>System-Level Thinking</strong>: Designs architectures that span multiple services/teams.</li>
  <li><strong>Ambiguity Navigation</strong>: Thrives in unstructured problems with no clear “right” answer.</li>
  <li><strong>Breadth Over Depth</strong>: Connects dots across domains (e.g., product, infra, security).</li>
</ul>

<h3 id="pitfalls-2">Pitfalls</h3>

<p>Common pitfalls that prevent an engineer from becoming a staff software engineer.</p>

<p>Technical Skills</p>
<ul>
  <li><strong>Not thinking strategically</strong>: Failing to align work with business goals or long-term impact.</li>
  <li><strong>Over-specializing</strong>: Lacking breadth in architecture, product, or domain knowledge.</li>
  <li><strong>Prioritizing speed over quality</strong>: Sacrificing scalability, maintainability, or long-term value.</li>
</ul>

<p>Soft Skills</p>
<ul>
  <li><strong>Poor stakeholder management</strong>: Inability to articulate trade-offs.</li>
  <li><strong>Waiting for permission</strong>: Not taking initiative to drive projects or solve high-impact problems.</li>
  <li><strong>Failing to delegate</strong>: Micromanaging instead of empowering others.</li>
  <li><strong>Not adapting to ambiguity</strong>: Struggling with unstructured problems or unclear requirements.</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Career growth in software engineering is rarely about a single breakthrough moment. It is about consistently developing the right traits while avoiding the pitfalls that trap even talented engineers.</p>

<p>Take a moment to reflect on where you are in your journey. Which skill are you actively cultivating and what may be holding you back? The difference between thriving and plateauing often comes down to this kind of honest self-assessment and deliberate action.</p>

<p>Whether you’re a junior engineer looking to make your first step up or a senior engineer aspiring to Staff level influence, the path forward is clearer when you know what to build and what to avoid.</p>

<p>Your career is yours to shape. Start with one trait to strengthen or one pitfall to address, and build from there.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="SWE Management" /><category term="Personal Development" /><category term="Performance Management" /><category term="SWE Career" /><category term="Performance Evaluation" /><summary type="html"><![CDATA[What separates engineers who thrive from those who plateau? The key traits to develop and common pitfalls to avoid at each career level.]]></summary></entry><entry><title type="html">Effective Communication in Software Engineering</title><link href="https://eduklein.com.br/effective-communication-swe/" rel="alternate" type="text/html" title="Effective Communication in Software Engineering" /><published>2024-10-04T00:00:00+00:00</published><updated>2024-10-04T00:00:00+00:00</updated><id>https://eduklein.com.br/effective-communication-swe</id><content type="html" xml:base="https://eduklein.com.br/effective-communication-swe/"><![CDATA[<p>Effective communication is vital for successful product development teams in tech companies, including software engineering teams. As software engineers (SWEs) and <a href="/mgmt/sem/sem-role">software engineering managers</a> (SEMs), our focus often leans heavily on technical excellence and delivery processes. Yet, without clear communication, great ideas and initiatives can fail.</p>

<p>In tech companies, where cross-functional collaboration is crucial, the ability to convey complex ideas clearly is not just a nice-to-have — it’s essential. Effective communication bridges gaps between leadership, product and growth teams, partners, and clients, ensuring alignment and shared understanding. However, many teams struggle to articulate their thoughts or adapt their language to diverse audiences, leading to misunderstandings and inefficiencies.</p>

<p>In this post, I share my perspective on the varying levels of communication skills for SWEs within tech companies. By breaking down the competency of effective communication into actionable levels — from beginner to expert — I aim to provide a framework that SEMs can use to assess and develop their team’s communication skills.</p>

<p>This structure can also be integrated into career ladders, supporting personal development and career progression. It can help SWEs identify growth opportunities and set clear goals, fostering an environment where communication flows freely, and product development thrives.</p>

<h2 id="effective-communication-expectations-and-levels">Effective Communication Expectations and Levels</h2>

<p>To make effective communication more tangible, I will describe it through four dimensions:</p>

<ol>
  <li><strong>Empathy and Perspective-Taking</strong>: Understands and appreciates others’ feelings and viewpoints. Empathizes with others to better understand and address their concerns.</li>
  <li><strong>Active Listening</strong>: Fully concentrates on and understands what is being said. Acknowledges the speaker and gives feedback to show understanding.</li>
  <li><strong>Clarity</strong>: Expresses ideas in a straightforward and clear way. Uses precise words and logical sentences. Avoids jargon to minimize misunderstandings.</li>
  <li><strong>Adaptability</strong>: Adjusts communication style for different audiences. Modifies language and tone to ensure the message resonates.</li>
</ol>

<p>I try to establish adequate expectations for each level and provide evidence and examples.</p>

<h3 id="beginner">Beginner</h3>

<ul>
  <li><strong>Empathy and Perspective-Taking</strong>: Demonstrates basic awareness of the need to understand and consider others’ viewpoints. Begins to ask questions to clarify others’ perspectives.</li>
  <li><strong>Active Listening</strong>: Listens to others but occasionally interrupts or misses key points.</li>
  <li><strong>Clarity</strong>: Communicates basic ideas clearly but may struggle with complex topics. Uses jargon without ensuring others understand.</li>
  <li><strong>Adaptability</strong>: Tends to use the same communication style regardless of the audience and may need guidance to adjust language for different stakeholders.</li>
</ul>

<h4 id="evidence">Evidence</h4>

<ul>
  <li>Listens attentively during team meetings and one-on-ones</li>
  <li>Asks clarifying questions when unsure about tasks or requirements</li>
  <li>Communicates project status and blockers to immediate team members</li>
  <li>Uses basic technical terminology correctly in team discussions</li>
  <li>Writes clear documentation for their code and processes</li>
</ul>

<h4 id="example">Example</h4>

<ul>
  <li>An engineer who effectively explains their work to colleagues, using simple language and checking for understanding through questioning.</li>
</ul>

<h3 id="competent">Competent</h3>

<ul>
  <li><strong>Empathy and Perspective-Taking</strong>: Regularly attempts to understand others’ perspectives and asks clarifying questions to ensure they grasp the other person’s viewpoint.</li>
  <li><strong>Active Listening</strong>: Demonstrates consistent active listening by paraphrasing and summarizing others’ points.</li>
  <li><strong>Clarity</strong>: Communicates more complex ideas clearly and tailors messages to the audience.</li>
  <li><strong>Adaptability</strong>: Adjusts communication style for different audiences but may need support to fully align with stakeholders’ needs or preferences.</li>
</ul>

<h4 id="evidence-1">Evidence</h4>

<ul>
  <li>Actively participates in team discussions and contributes ideas</li>
  <li>Facilitates productive team meetings and discussions</li>
  <li>Adapts communication style when speaking with non-technical teammates</li>
  <li>Provides regular, unprompted updates on project progress</li>
  <li>Explains technical concepts to junior team members effectively</li>
  <li>Prepares and delivers presentations and demos on their work</li>
  <li>Writes comprehensive technical documents and proposals</li>
</ul>

<h4 id="example-1">Example</h4>

<ul>
  <li>An engineer who leads team meetings and technical discussions, as well as ensures all participants understand the key points by summarizing and asking for feedback.</li>
</ul>

<h3 id="proficient">Proficient</h3>

<ul>
  <li><strong>Empathy and Perspective-Taking</strong>: Consistently considers and integrates multiple perspectives into communication. Demonstrates empathy in discussions and decision-making.</li>
  <li><strong>Active Listening</strong>: Engages in active listening as a natural part of communication. Frequently verifies mutual understanding and encourages others to express their views.</li>
  <li><strong>Clarity</strong>: Communicates complex technical ideas clearly and effectively, adapting language and style to suit diverse audiences. Regularly ensures mutual understanding.</li>
  <li><strong>Adaptability</strong>: Flexibly adjusts communication style based on audience feedback and context. Proactively seeks to build a common vocabulary where necessary.</li>
</ul>

<h4 id="evidence-2">Evidence</h4>

<ul>
  <li>Communicates complex technical ideas to both technical and non-technical audiences</li>
  <li>Negotiates effectively with leadership and other stakeholders</li>
  <li>Presents confidently to larger groups, including leadership and cross-functional teams</li>
  <li>Proactively addresses potential miscommunications or conflicts within the team</li>
</ul>

<h4 id="example-2">Example</h4>

<ul>
  <li>An engineer who facilitates cross-functional meetings, including leadership, using clear and concise language to ensure all stakeholders understand the discussion.</li>
</ul>

<h3 id="expert">Expert</h3>

<ul>
  <li><strong>Empathy and Perspective-Taking</strong>: Intuitively understands and anticipates others’ perspectives and needs. Guides conversations to foster understanding and collaboration.</li>
  <li><strong>Active Listening</strong>: Exemplifies active listening, creating an environment where others feel heard and valued. Facilitates discussions, ensuring all voices are included and understood.</li>
  <li><strong>Clarity</strong>: Articulates complex ideas with exceptional clarity and precision across diverse audiences. Coaches others in effective communication strategies.</li>
  <li><strong>Adaptability</strong>: Seamlessly adapts communication style to suit any audience, situation, or context. Establishes and promotes effective communication norms within teams and across the organization.</li>
</ul>

<h4 id="evidence-3">Evidence</h4>

<ul>
  <li>Develops and implements communication strategies for large-scale projects</li>
  <li>Represents the engineering team in high-level discussions with executives and external partners</li>
  <li>Mediates complex discussions and conflicts across multiple teams</li>
  <li>Delivers compelling presentations at company-wide events or conferences</li>
  <li>Creates and maintains a shared technical vocabulary across the organization</li>
  <li>Writes influential articles or blog posts that enhance the company’s reputation in the tech community</li>
  <li>Coaches other leaders on effective communication techniques</li>
  <li>Establishes communication best practices and guidelines for the entire engineering organization</li>
</ul>

<h4 id="example-3">Example</h4>

<ul>
  <li>An engineer who leads initiatives across the company, ensuring all stakeholders have a common understanding.</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Effective communication is a multifaceted skill that is crucial for the success of tech teams. By focusing on those four dimensions, we can create a structured approach to developing these competencies within our teams.</p>

<p>Setting clear expectations for each level of communication proficiency allows <a href="/mgmt/sem/sem-role">SEMs</a> to guide their teams toward continuous improvement.</p>

<p>This framework provides engineers with a roadmap for growth, helping them identify where they are, where they want to go, and what skills they need to develop along the way.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="People Skills" /><category term="Performance Management" /><category term="Communication" /><category term="SWE Career" /><category term="Performance Evaluation" /><summary type="html"><![CDATA[Understanding communication expectations and levels to enhance team communication and collaboration.]]></summary></entry><entry><title type="html">The Ivy Lee Method for Managing Priorities</title><link href="https://eduklein.com.br/ivy-lee-method/" rel="alternate" type="text/html" title="The Ivy Lee Method for Managing Priorities" /><published>2024-07-15T00:00:00+00:00</published><updated>2024-07-15T00:00:00+00:00</updated><id>https://eduklein.com.br/ivy-lee-method</id><content type="html" xml:base="https://eduklein.com.br/ivy-lee-method/"><![CDATA[<p>The Ivy Lee method is a classic productivity method popularized by <a href="https://en.wikipedia.org/wiki/Charles_M._Schwab">Charles M. Schwab</a>, an American steel magnate who supposedly sought <a href="https://en.wikipedia.org/wiki/Ivy_Lee">Ivy Lee</a>’s advice in 1918. Ivy Lee taught this method to Charles Schwab and his employees at Bethlehem Steel Corporation. Under Schwab’s leadership, the company became the second-largest steel maker in the USA.</p>

<p>It is said that Lee asked Schwab to send him a check for whatever he thought the advice was worth. After three months, Schwab was so impressed by the results that he sent Lee a check for USD 25,000, equivalent to several hundred thousand dollars nowadays, highlighting the importance of Lee’s advice.</p>

<h2 id="the-ivy-lee-method">The Ivy Lee Method</h2>

<p>Here’s the straightforward method Ivy Lee suggested:</p>

<ol>
  <li><strong>At the end of each day, write down the six most important tasks you need to accomplish the next day.</strong></li>
  <li><strong>Prioritize those tasks in order of importance.</strong></li>
  <li><strong>When you arrive the next day, concentrate only on the first task. Work on it until finished before moving on to the second task.</strong></li>
  <li><strong>Approach the rest of your list in the same fashion. At the end of the day, move any unfinished tasks to a new list of six tasks for the following day.</strong></li>
  <li><strong>Repeat this process every day.</strong></li>
</ol>

<p>What I would like to highlight from the method:</p>

<ul>
  <li>Its simplicity is outstanding. It is quite simple to get started and continue using.</li>
  <li>The method runs counter to the idea of multitasking, which is scientifically recognized as detrimental to productivity. Multi-tasking causes us to make more mistakes, retain less information, and spend time in context switching.</li>
</ul>

<h2 id="prioritizing-your-six-tasks-with-the-eisenhower-matrix">Prioritizing your six tasks with the Eisenhower Matrix</h2>

<p>Modern productivity advice suggests using the <a href="/eisenhower-matrix">Eisenhower Matrix</a> to help you prioritize the six most important tasks. I find this idea really useful; I’m a true believer in the Eisenhower Matrix paradigm.</p>

<p>I’d guess Ivy Lee taught Schwab and his team how to effectively prioritize those six tasks to make that big amount of money, but that lesson was probably lost in history.</p>

<p>Equivalent in structure, you could prioritize the six most important tasks following other prioritization systems, such as the Value vs. Effort matrix, 1-3-5 rule, 3-3-3 method, etc.</p>

<p>Following the Eisenhower Matrix system, it is advised to:</p>

<ul>
  <li>Choose the six items from quadrants 1 (Urgent and important), 2 (Not Urgent but important), and 3 (Urgent but not important) of the matrix. Always avoid quadrant 4 (Not urgent and not important).</li>
  <li>Give more room to important tasks (quadrants 1 and 2), leaving just one or two slots for urgent but unimportant tasks (quadrant 3).</li>
</ul>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Self-Management" /><category term="Personal Development" /><summary type="html"><![CDATA[A productivity method that consists of listing the six most crucial tasks to accomplish the next day and working through each in order of importance.]]></summary></entry><entry><title type="html">Developing Software Engineering Strategies</title><link href="https://eduklein.com.br/software-engineering-strategy/" rel="alternate" type="text/html" title="Developing Software Engineering Strategies" /><published>2024-05-26T00:00:00+00:00</published><updated>2024-05-26T00:00:00+00:00</updated><id>https://eduklein.com.br/software-engineering-strategy</id><content type="html" xml:base="https://eduklein.com.br/software-engineering-strategy/"><![CDATA[<p>Since the previous year, I’ve been studying and practicing the development of software engineering strategies as part of my development into senior engineering leadership roles.</p>

<p>My first introduction to this topic was through the excellent book <em><a href="/book/an-elegant-puzzle">An Elegant Puzzle</a></em> by <a href="https://lethain.com/">Will Larson</a> (CTO at Carta).</p>

<p>In essence, a software engineering strategy consists of the following components:</p>

<ol>
  <li><strong>Diagnosis</strong>: The theory describing the challenge at hand, including its factors and constraints, along with a problem statement;</li>
  <li><strong>Guiding Policies</strong>: These are the policies that will be applied to address the challenge. They describe the general approach taken to tackle the problem;</li>
  <li><strong>Actions</strong>: These are the specific steps implemented to address the challenge.</li>
</ol>

<p>From my experience, I have found software engineering strategies useful in two contexts:</p>

<ol>
  <li><strong>Writing guides to help teams tackle specific operational challenges</strong>: I have explored this in <a href="/writing-guides">Writing Guides to Support Your Teams</a>. The diagnosis usually identifies one specific challenge, and the guiding policies and actions are tailored to address that challenge;</li>
  <li><strong>Developing mid or long-term software engineering strategies for my team or business unit</strong>: In this context, the strategy explores multiple challenges, identifies the guiding policies and actions to tackle them, and aims to inspire and guide leaders and individual contributors in their work towards common goals.</li>
</ol>

<p>I have also been writing a dedicated page called <a href="/mgmt/sem/swe-strategy">Software Engineering Strategy</a> on this website, where I document the key learnings, insights, and resources that I find useful in my journey to deeply understand this topic.</p>

<p>I hope you find it helpful as well. Please feel free to reach out if you have any questions or comments about software engineering strategies.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="SWE Management" /><category term="Written Communication" /><category term="SWE Strategy" /><summary type="html"><![CDATA[A high-level plan or approach designed to achieve specific objectives in software engineering teams and projects.]]></summary></entry><entry><title type="html">Reasons People Get Laid Off</title><link href="https://eduklein.com.br/reasons-people-get-laid-off/" rel="alternate" type="text/html" title="Reasons People Get Laid Off" /><published>2024-01-24T00:00:00+00:00</published><updated>2024-01-24T00:00:00+00:00</updated><id>https://eduklein.com.br/reasons-people-get-laid-off</id><content type="html" xml:base="https://eduklein.com.br/reasons-people-get-laid-off/"><![CDATA[<p>The beginning of 2024 has witnessed a resurgence of layoffs in the tech industry, catching many by surprise. Once again, employees are afraid and uncertain about their futures. The pressing question on everyone’s mind is: Which company will make the next cut, and who will be affected?</p>

<p>Today, I came across an insightful article on <a href="https://hbr.org">HBR.org</a> titled <a href="https://hbr.org/2024/01/5-reasons-people-get-laid-off">5 Reasons People Get Laid Off</a> by Marlo Lyons. This article offers valuable insights, and I highly recommend you read it.</p>

<p>Understanding why layoffs occur can empower us to proactively safeguard our careers and mitigate some of the associated stress. With this in mind, I’d like to share and summarize some key insights from the article.</p>

<p>Here are a few reasons why people get laid off:</p>

<h2 id="lack-of-skills-advancement">Lack of skills advancement</h2>

<blockquote>
  <p>Employees are 100% responsible for continually upskilling and reskilling. While companies may offer resources to learn new skills, they tend to teach to the entire employee population, so most talent development programs focus on management skills […]</p>

  <p>But employees need to continue to advance their hard skills, such as becoming technically proficient in AI applications or new programming languages. Those who don’t continue to evolve their skills to keep up with rapidly changing business needs may be targeted for layoffs.</p>
</blockquote>

<p>In most tech companies, particularly in software engineering roles, the job inherently involves continuous learning. It is crucial to demonstrate a commitment to reskilling and to develop personal growth plans that align with your team’s or company’s objectives.</p>

<h2 id="youre-an-overseer-not-a-doer">You’re an “overseer,” not a “doer”</h2>

<blockquote>
  <p>The most straightforward method to meet the assigned cut percentage is to eliminate the positions of individuals with the highest salaries, particularly if they’re not actively involved in accomplishing the work. Managers who lack hands-on involvement may be seen as less valuable to the organization, as there is a perception that they’re not directly contributing to task and project execution.</p>

  <p>Managers who are invaluable to an organization find a balance between strategic leadership and hands-on involvement without micromanaging their teams.</p>
</blockquote>

<h2 id="lack-of-visibility">Lack of visibility</h2>

<blockquote>
  <p>Being the quiet worker bee won’t protect you from being laid off. In fact, being invisible could be your downfall. When determining which roles to cut, if senior leadership doesn’t know who you are, what you do, or the impact you make, your job could be an easy choice for elimination.</p>
</blockquote>

<h2 id="lack-of-performance">Lack of performance</h2>

<blockquote>
  <p>When companies need to cut their budgets, they’ll likely try to eliminate those who are considered non-performers. Where more than one person is doing a particular job, layoffs provide managers a ripe opportunity to cut low performers without having to do the hard work of giving them more feedback or putting them on a performance improvement plan.</p>

  <p>Employees must realize their manager’s perception means everything. So even if you think you’re doing a great job, if your manager doesn’t agree, you could be deemed a poor performer and be on the chopping block.</p>
</blockquote>

<p>This one is particularly relevant for software engineering roles, as it accounts for many terminations I’ve observed in the tech industry’s post-pandemic layoffs. It appears to be the primary criterion used by senior leadership.</p>

<p>I’ve witnessed competent engineers who had one performance cycle rated ‘below expectations’ being selected for layoffs. Under normal circumstances, these individuals might have been placed on a Performance Improvement Plan (PIP) and given a chance to improve.</p>

<p>Maintain constant vigilance regarding your performance. Proactively seek feedback on your work, learn from it, and ensure alignment with your manager and peers.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Tech Industry" /><category term="Layoffs" /><summary type="html"><![CDATA[A summary of the HBR.org article 5 Reasons People Get Laid Off, by Marlo Lyons.]]></summary></entry><entry><title type="html">An Approach to Career Development</title><link href="https://eduklein.com.br/career-development-approach/" rel="alternate" type="text/html" title="An Approach to Career Development" /><published>2023-11-20T00:00:00+00:00</published><updated>2023-11-20T00:00:00+00:00</updated><id>https://eduklein.com.br/career-development-approach</id><content type="html" xml:base="https://eduklein.com.br/career-development-approach/"><![CDATA[<p>Career development is essential to reaching our potential. Committing to self-improvement enhances our current roles and prepares us for future opportunities and challenges. As the owners of our professional journeys, we must continually expand and adapt our skills.</p>

<p>Our careers are not just defined by what we work on but mainly by what we aspire to become. This pursuit is a continuous effort that shapes our career aspirations and enhances learning, contributing to personal growth and collective success in companies.</p>

<p>To empower individuals and facilitate career advancement, I’ve documented a structured approach to guide the process. It consists of:</p>

<ul>
  <li><strong>Resources</strong>: A collection of guides and templates that help you understand how to pursue career development;</li>
  <li><strong>Tools</strong>: The tools that help you navigate the journey, leveraging your relationship with your manager and peers;</li>
  <li><strong>Approach</strong>: A structured approach to go from envisioning your desired future to realizing tangible growth.</li>
</ul>

<h1 id="resources">Resources</h1>

<ul>
  <li><a href="/personal-dev/template-individual-development-plan">Individual Development Plan (IDP) template</a>: A straightforward template to help you create your development plan;</li>
  <li><strong>Your company’s career track</strong>: This is something your company should provide. It is essential to understand the career track laid out by your organization. Learn how to progress in your career by discussing with your manager. Learn more about software engineering career ladders and progression frameworks <a href="/mgmt/sem/swe-career">here</a>;</li>
  <li><strong>Your company’s performance review process</strong>: This information should also be provided by your company or manager. Most organizations have a documented schedule and process for performance reviews. It is beneficial to align your development plan with it to ensure your goals are in sync with the company’s expectations;</li>
  <li><strong>Your company’s and team’s strategy and vision</strong>: This information should also be provided by your company or manager. Understanding your company’s and team’s strategy and vision is crucial. It helps you identify relevant projects and opportunities that align with your objectives and contribute to organizational goals.</li>
</ul>

<h1 id="tools">Tools</h1>

<p>The following is a collection of tools that you can leverage, together with your manager, to communicate your goals, commit to them, and progress in your career.</p>

<h2 id="one-on-one-meetings">One-on-one meetings</h2>

<p>A <a href="/mgmt/people/one-on-ones">one-on-one</a> is a recurring, individual meeting that managers schedule with each team member. Its primary goal is to support your career development, providing a platform for discussing professional growth, addressing tactical issues, and receiving guidance and feedback. They are also an opportunity for you to share feedback, raise concerns, and discuss your aspirations.</p>

<p>Ideally, this meeting should occur regularly, preferably weekly, to ensure consistent communication and support. If you’re not currently having these meetings, I recommend you talk to your manager to establish a schedule.</p>

<p>Some advice for your one-on-ones:</p>

<ul>
  <li>Connect with your manager. Let them know about yourself, your desired future, and your dreams and goals. Your manager should be the person to help you maximize your development inside the company.</li>
  <li>To make the most of this relationship, own the one-on-one agenda. It is about you, not about them, so be proactive in bringing topics to the table. Don’t expect your manager to guide your development; do it yourself.</li>
</ul>

<h2 id="feedback">Feedback</h2>

<p>Feedback is a powerful tool for personal and professional growth. It involves both giving and receiving constructive comments about performance, behavior, or learning strategies. Regular feedback can help you understand your strengths, identify areas for improvement, and align your efforts with your team’s and organization’s objectives.</p>

<p>Some advice on feedback:</p>

<ul>
  <li><strong>Seek feedback often</strong>: Don’t wait for formal reviews. Ask for feedback regularly from your manager, peers, etc;</li>
  <li><strong>Be specific in your requests</strong>: Instead of asking for general feedback, focus on specific areas or recent projects;</li>
  <li><strong>Create a feedback-friendly culture</strong>: Encourage open and honest communication within your team. Show appreciation for the feedback you receive, and be respectful and constructive when giving feedback to others.</li>
  <li><strong>Act on the feedback</strong>: Demonstrating that you value and act upon feedback is crucial. Reflect on it, make necessary adjustments, and use it as a stepping stone for growth.</li>
</ul>

<p>Remember, effective use of feedback is a key component in driving your personal development and achieving your career goals.</p>

<h2 id="individual-development-plan">Individual Development Plan</h2>

<p>An Individual Development Plan (IDP) is a document you create, preferably in collaboration with your manager. It serves as a roadmap for career growth and skill development, outlining specific, achievable objectives aligned with both your career aspirations and your team’s and the organization’s goals.</p>

<p>The creation of an IDP is a proactive process. Reflect on your strengths, feedback received, areas for improvement, and long-term career goals when writing it. Regular reviews and updates to the IDP are crucial, as they allow for adjustments based on progress, changing circumstances, or evolving career objectives.</p>

<p>An effective IDP not only guides an individual’s professional development but also fosters a culture of continuous learning and growth within the organization. If you haven’t developed your IDP yet, consider scheduling time with your manager to start this valuable process.</p>

<h1 id="taking-the-drivers-seat">Taking the driver’s seat</h1>

<p>As we have established, owning our personal development is crucial. I strongly encourage you to take the driver’s seat on this journey. Commit to your self-improvement and intentionally chart the course of your career.</p>

<p>If you’re uncertain about where to begin, the following is a structured approach to navigating your personal development.</p>

<h2 id="leverage-your-one-on-ones">Leverage your one-on-ones</h2>

<p>You should count on your manager to support you in every aspect of your personal development plan. Ensuring that your goals are aligned with the team’s objectives and the organization’s vision is key to success.</p>

<p>One-on-one meetings with your manager are invaluable opportunities to drive your personal development forward. Use these sessions to discuss your goals and your development plan, celebrate your wins, navigate through challenges, and adjust your goals as needed.</p>

<p>Be proactive in seeking guidance, clarifying expectations, and securing the support you need. These interactions can give you the insights and motivation to propel your career development.</p>

<h2 id="clarify-your-desired-future">Clarify your desired future</h2>

<p>Consider what success looks like for you in the long term: the roles you aspire to fill, the skills you wish to master, and the impact you want to make. Reflect on your interests and passions and how they align with your career aspirations.</p>

<p>This clarity of vision is the compass that will guide all subsequent steps in your career journey.</p>

<p>Consider the following in this step:</p>

<ul>
  <li>While your vision of the desired future provides direction, remember it’s equally important to remain adaptable. As you grow personally and professionally, your aspirations evolve. Make it a practice to reflect on and revise your vision at least annually.</li>
  <li>In case of a shift in your desired future, you must communicate these changes to your manager. Together, you can discuss the implications of this change on your current role and explore a transition plan that aligns with your new objectives.</li>
</ul>

<h2 id="define-your-development-objectives">Define your development objectives</h2>

<p>Once you have a clear picture of your desired future, it’s time to set specific development objectives. These are the milestones that will mark your progress along the path to your ultimate career goals.</p>

<p>Consider the following in this step:</p>

<ul>
  <li>Regularly review and update your objectives to stay aligned with both your personal growth and the organization’s evolving landscape. A quarterly review, synchronized with the company’s performance or planning cycles, can ensure your goals remain relevant and achievable.</li>
  <li>Less is more. Aim for a manageable number of objectives that allow for focused effort and significant impact.</li>
  <li>Stay agile in your career planning. If there are shifts in your team’s vision or organizational structure, view them as opportunities to realign your objectives. Adapting your goals to new circumstances can open up unexpected avenues for growth and learning.</li>
</ul>

<h2 id="build-your-individual-development-plan-idp">Build your Individual Development Plan (IDP)</h2>

<p>With your objectives set, you can now craft your Individual Development Plan (IDP). This personalized plan is your strategy for achieving your career goals. It should outline the resources you’ll need, the skills you’ll develop, and the steps you’ll take. Your IDP is a living document that will evolve as you progress, so it’s essential to revisit and revise it regularly.</p>

<h2 id="tracking-progress">Tracking Progress</h2>

<p>Once your IDP is established, the next critical phase is implementation and tracking. This is where you put your plan into motion, actively engaging with the outlined activities and learning opportunities.</p>

<p>Establish a routine for regularly reviewing your progress against your objectives. This could be a monthly self-assessment or a tracking spreadsheet. Such vigilant monitoring will help you stay accountable, make necessary adjustments, and maintain momentum toward achieving your goals.</p>

<h2 id="ask-for-feedback">Ask for feedback</h2>

<p>Feedback is the fuel for growth and improvement. Regularly seek out constructive feedback from a variety of sources: managers, peers, mentors, and other people. Embrace both positive and constructive criticism as opportunities to learn and refine your skills.</p>

<p>Remember, feedback is not just about hearing what you’re doing well but also about identifying areas where you can improve. By actively asking for and acting on feedback, you demonstrate your commitment to continuous learning and self-improvement.</p>]]></content><author><name>Eduardo Klein</name><email>eduardo@eduklein.com.br</email></author><category term="Personal Development" /><category term="Career" /><summary type="html"><![CDATA[A step-by-step approach to intentional career development.]]></summary></entry></feed>