<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eduardo Klein</title>
    <description>The latest articles on DEV Community by Eduardo Klein (@epklein).</description>
    <link>https://dev.to/epklein</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F998194%2F2ea2d4d7-e5c8-4ab0-a24d-4fe4f950de77.jpg</url>
      <title>DEV Community: Eduardo Klein</title>
      <link>https://dev.to/epklein</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/epklein"/>
    <language>en</language>
    <item>
      <title>Conflict Resolution and the Escalation Trap</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Wed, 12 Nov 2025 03:47:02 +0000</pubDate>
      <link>https://dev.to/epklein/conflict-resolution-and-the-escalation-trap-49gb</link>
      <guid>https://dev.to/epklein/conflict-resolution-and-the-escalation-trap-49gb</guid>
      <description>&lt;p&gt;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 &lt;strong&gt;escalation trap&lt;/strong&gt;, a concept rooted in systems theory that shows how seemingly minor actions can trigger reinforcing feedback loops, amplifying problems far beyond their original magnitude.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Escalation Trap?
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Thinking in Systems&lt;/em&gt;, Donella Meadows explores how systems are governed by feedback loops. The escalation trap is a specific type of &lt;strong&gt;reinforcing feedback loop&lt;/strong&gt; (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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Extreme examples include arms races by nuclear powers and quick escalation of violence between religious groups or soccer fans. &lt;/p&gt;

&lt;h3&gt;
  
  
  A Simple Business Example
&lt;/h3&gt;

&lt;p&gt;Imagine two engineering teams in a tech company: the backend team and the frontend team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Day 1&lt;/strong&gt;: 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."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 3&lt;/strong&gt;: The frontend team, frustrated by the dismissal, reacts by escalating the issue to their engineering manager and labeling it as a "critical blocker."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 5&lt;/strong&gt;: The backend team's manager intervenes, escalates back by questioning the frontend team's technical competence in a larger meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 7&lt;/strong&gt;: The conflict has now involved senior leadership, created tension between teams, slowed down product development, and damaged working relationships.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost of Escalation
&lt;/h2&gt;

&lt;p&gt;Escalation may get expensive, both emotionally and economically:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  De-escalation: The Way Out
&lt;/h2&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Traffic conflit resolution
&lt;/h3&gt;

&lt;p&gt;Let's further explore the traffic conflit I previously mentioned. Consider both scenarios:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without de-escalation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Driver A cuts off Driver B&lt;/li&gt;
&lt;li&gt;Driver B honks angrily&lt;/li&gt;
&lt;li&gt;Driver A, feeling attacked, slows down intentionally&lt;/li&gt;
&lt;li&gt;Driver B becomes furious and makes an obscene gesture&lt;/li&gt;
&lt;li&gt;Driver A, now enraged, escalates further&lt;/li&gt;
&lt;li&gt;Both drivers are now in a dangerous situation, risking accidents, injuries, or worse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the escalation trap. Two reasonable people became dangerous through escalation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With de-escalation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Driver A cuts off Driver B&lt;/li&gt;
&lt;li&gt;Driver B, though frustrated, takes a breath and assumes an honest mistake&lt;/li&gt;
&lt;li&gt;Driver B doesn't honk; instead, gives a brief, friendly wave&lt;/li&gt;
&lt;li&gt;Driver A, recognizing their mistake, appreciates the grace and waves back&lt;/li&gt;
&lt;li&gt;Both drivers move on, and everyone arrives safely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend and frontend teams' de-escalation
&lt;/h3&gt;

&lt;p&gt;Now, let's also return to our earlier example of the backend and frontend teams, but imagine a de-escalated version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Day 1&lt;/strong&gt;: 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."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 2&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day 3&lt;/strong&gt;: Together, they create a solution: updated documentation, a quick API adjustment, and agreed-upon communication protocols for future issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result&lt;/strong&gt;: The problem is solved faster. Relationships strengthen. Trust is built. Both teams learned something. The organization benefits from improved collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Developing Your De-escalation Skills
&lt;/h2&gt;

&lt;p&gt;De-escalation is a learnable skill. Here are practical ways to develop it:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>management</category>
    </item>
    <item>
      <title>Problem-Solving in Software Engineering</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Mon, 27 Oct 2025 02:38:54 +0000</pubDate>
      <link>https://dev.to/epklein/problem-solving-in-software-engineering-3il9</link>
      <guid>https://dev.to/epklein/problem-solving-in-software-engineering-3il9</guid>
      <description>&lt;p&gt;Problem-solving is at the heart of software engineering. Whether debugging a production issue, designing a new system, or optimizing performance, the ability to approach challenges methodically and effectively distinguishes exceptional engineers.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 software engineering managers (SEMs) can use to assess and develop their team's problem-solving capabilities.&lt;/p&gt;

&lt;p&gt;This is similar to the work I've previously done for &lt;a href="https://dev.to/epklein/effective-communication-in-software-engineering-1dkc"&gt;Effective Communication&lt;/a&gt;, which I'll compile with other skills at some point in the future into a guide for software engineering competencies.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem-Solving Expectations and Levels
&lt;/h2&gt;

&lt;p&gt;To make problem-solving more tangible, I will describe it through five dimensions:&lt;/p&gt;

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

&lt;p&gt;I try to establish adequate expectations for each level and provide evidence and examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework and Tool Proficiency&lt;/strong&gt;: Understands basic functionality and can utilize frameworks and tools with guidance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coding and Design Craftsmanship&lt;/strong&gt;: Demonstrates awareness of fundamental algorithms and data structures. Writes functional code that follows team standards and applies simple design patterns in straightforward scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architectural Understanding&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytical Thinking&lt;/strong&gt;: Breaks down simple problems and identifies potential solutions with some guidance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous Learning and Practice&lt;/strong&gt;: Actively seeks out learning resources and begins incorporating them into daily practice with regular mentorship.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Competent
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

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

&lt;h3&gt;
  
  
  Proficient
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Expert
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Setting clear expectations for each level of problem-solving proficiency allows SEMs 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>development</category>
    </item>
    <item>
      <title>The traits and pitfalls in Software Engineering careers</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Tue, 05 Aug 2025 02:05:45 +0000</pubDate>
      <link>https://dev.to/epklein/the-traits-and-hidden-pitfalls-in-software-engineering-careers-2d5</link>
      <guid>https://dev.to/epklein/the-traits-and-hidden-pitfalls-in-software-engineering-careers-2d5</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;These are the key signals I look for, and the common traps I've seen catch even the most talented professionals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software Engineer
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traits
&lt;/h3&gt;

&lt;p&gt;The typical characteristics of a software engineer.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Pitfalls
&lt;/h3&gt;

&lt;p&gt;Common pitfalls that prevent a junior engineer from becoming a competent software engineer.&lt;/p&gt;

&lt;p&gt;Technical Skills&lt;/p&gt;

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

&lt;p&gt;Soft skills&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Senior Software Engineer
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traits
&lt;/h3&gt;

&lt;p&gt;The typical characteristics of a senior software engineer.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Pitfalls
&lt;/h3&gt;

&lt;p&gt;Common pitfalls that prevent a software engineer from becoming a senior software engineer.&lt;/p&gt;

&lt;p&gt;Technical Skills&lt;/p&gt;

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

&lt;p&gt;Soft skills&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Staff Software Engineer
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traits
&lt;/h3&gt;

&lt;p&gt;The typical characteristics of a staff software engineer.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Pitfalls
&lt;/h3&gt;

&lt;p&gt;Common pitfalls that prevent an engineer from becoming a staff software engineer.&lt;/p&gt;

&lt;p&gt;Technical Skills&lt;/p&gt;

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

&lt;p&gt;Soft Skills&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Your career is yours to shape. Start with one trait to strengthen or one pitfall to address, and build from there.&lt;/p&gt;

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>management</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Software Engineering Manager Role</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Mon, 04 Nov 2024 18:05:33 +0000</pubDate>
      <link>https://dev.to/epklein/the-software-engineering-manager-role-kh1</link>
      <guid>https://dev.to/epklein/the-software-engineering-manager-role-kh1</guid>
      <description>&lt;p&gt;A Software Engineering Manager (SEM) is a multifaceted role, blending the technical expertise of a seasoned software engineer with the leadership and strategic skills of a manager.&lt;/p&gt;

&lt;p&gt;At their core, SEMs are responsible for leading teams of software engineers (SWE). They typically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages the design, development, and maintenance of software applications or services;&lt;/li&gt;
&lt;li&gt;Directs or supports the work of software engineers to promote the best practices and foster improvement;&lt;/li&gt;
&lt;li&gt;Has a good comprehension of software development, including topics such as programming, testing, building, deployment &amp;amp; delivery, software architecture &amp;amp; design, and many more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a variety of software engineering concepts, practices, tools, etc., essential to understand, such as but not limited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software Development Lifecycle (SDLC).&lt;/li&gt;
&lt;li&gt;DevOps, Cloud Computing, Microservices, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Engineering Manager by Camille Fournier
&lt;/h2&gt;

&lt;p&gt;When reading &lt;a href="https://eduklein.com.br/book/the-managers-path" rel="noopener noreferrer"&gt;The Manager’s Path&lt;/a&gt;, written by &lt;a href="https://www.linkedin.com/in/camille-fournier-9011812/" rel="noopener noreferrer"&gt;Camille Fournier&lt;/a&gt; (Managing Director of Engineering at JP Morgan Chase &amp;amp; Co), I found the following description for the Engineering Leader role, which is the leader of a team.&lt;/p&gt;

&lt;p&gt;The description is helpful for SEMs who want to understand their place and want to develop skills, as it covers all the basics of the role.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The engineering lead will spend less time writing code, but they still engage in small technical deliverables, such as bug fixes and small features, without blocking or slowing down the progress of their team. More than writing code, they hold responsibility for identifying bottlenecks in the process and roadblocks to success for their team and clearing these roadblocks.&lt;/p&gt;

&lt;p&gt;The person who fills this role is expected to have a large impact on the success of [the organization] as a whole. In particular, leaders in this role are capable of identifying the most high-value projects and keeping their team focused on these projects. As part of keeping the team focused, the engineering lead will partner closely with the product lead to manage project scope and ensure the technical deliverables are met. In addition to focusing the team, they are capable of identifying headcount needs for the team and planning and recruiting to fill these needs.&lt;/p&gt;

&lt;p&gt;The engineering lead is an independent manager. They are comfortable managing team members with different skill sets from their own. They communicate expectations clearly to all team members, and solicit and deliver individual feedback frequently (not just in the scope of review periods). In addition to strong management skills, the engineering lead acts as a leader for the technical roadmap for their product group (pillar). They clearly communicate the timeline, scope, and risks to their pillar partners, and lead the delivery of major initiatives on clear timelines. Additionally, they identify areas of strategic technical debt, do the cost/benefit analysis for resolving this debt, and communicate suggested timelines for prioritizing this to the management team.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Engineering Manager by Dave Anderson
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/scarletink/" rel="noopener noreferrer"&gt;Dave Anderson&lt;/a&gt; (former Amazon GM and Tech Director and author of &lt;a href="https://www.scarletink.com/" rel="noopener noreferrer"&gt;Scarlet Ink&lt;/a&gt;) shares a &lt;a href="https://www.scarletink.com/p/non-technical-engineering-manager" rel="noopener noreferrer"&gt;great discussion&lt;/a&gt; on the importance of technical skills for effective engineering management. We can summarize the key takeaways from the article as follows:&lt;/p&gt;

&lt;h3&gt;
  
  
  Balancing Involvement and Delegation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-term vs. Short-term Impact&lt;/strong&gt;: SEMs must involve themselves in projects with long-term impacts, such as major service designs, while delegating short-term tasks like temporary scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Big Risk vs. Small Risk&lt;/strong&gt;: High-risk tasks that could severely impact customers necessitate SEMs involvement, whereas low-risk tasks can be delegated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-way vs. Two-way Doors&lt;/strong&gt;: SEMs should engage in decisions that are difficult to reverse (one-way doors), such as designing external API schemas, while delegating reversible decisions (two-way doors).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High vs. Low Political Impact&lt;/strong&gt;: Projects with significant visibility or political implications require SEMs involvement, whereas low-priority tasks can be delegated.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Critical Technical Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operations&lt;/strong&gt;: SEMs need a deep understanding of system operations to lead through high-severity events, discuss operational issues, and explain crises to leadership.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture and Design&lt;/strong&gt;: A thorough grasp of system architecture and design principles is essential for discussing system dependencies, scalability, and performance with the team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coding&lt;/strong&gt;: While not required to code regularly, SEMs must understand the coding process, including development workflows, code reviews, and deployment procedures, to ensure quality and efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Skill Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Building a Mental Model&lt;/strong&gt;: Managers should engage with engineers to develop a comprehensive understanding of system operations and interdependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understanding Customers&lt;/strong&gt;: Managers need to grasp how their technical systems impact customers and monitor these interactions closely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Engineering Processes&lt;/strong&gt;: Shadowing engineers and asking questions helps managers understand coding and deployment processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acquiring Technical Vocabulary&lt;/strong&gt;: Continuous learning and seeking explanations for technical terms are crucial for managers to bridge knowledge gaps.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>management</category>
      <category>career</category>
    </item>
    <item>
      <title>Progressive Deployments</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Sat, 02 Nov 2024 03:04:11 +0000</pubDate>
      <link>https://dev.to/epklein/progressive-deployments-4hf2</link>
      <guid>https://dev.to/epklein/progressive-deployments-4hf2</guid>
      <description>&lt;p&gt;Rolling out a product or improvement involves deploying and launching new features or updates to an existing user base. This is an integral part of operating any digital platform.&lt;/p&gt;

&lt;p&gt;A well-designed rollout plan is essential for successfully launching these improvements without negatively affecting customers' operations. A comprehensive rollout plan should address, at a minimum, the following key aspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Testing protocols&lt;/strong&gt;: Before rolling out to the entire user base, testing the new features or updates in a controlled environment (like staging) or with a smaller subset of users (beta testers) can help identify and fix issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A progressive deployment plan and rollback process&lt;/strong&gt;: A progressive deployment plan ensures that updates are introduced in phases, allowing for real-time feedback and adjustments, while a rollback process guarantees a swift return to the previous version if any issues arise, minimizing disruptions and potential risks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A communication plan that addresses key stakeholders&lt;/strong&gt;: A well-structured communication plan is vital, ensuring that customers are informed and prepared for any changes while also equipping customer support and technical support teams with the necessary information to address queries and resolve issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User documentation&lt;/strong&gt;: Providing comprehensive and updated user documentation helps users adapt to new features or changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Progressive Deployment Strategies
&lt;/h2&gt;

&lt;p&gt;From the above aspects, I want to delve into the progressive deployment plan.&lt;/p&gt;

&lt;p&gt;A progressive deployment aims to minimize risk and improve customers' and developers' experience by implementing change to a small group of users, which allows fast feedback and faster rollback in case of failures. There are a few strategies that we can adopt for a progressive deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Canary Deployments&lt;/strong&gt;: A new software version is partially rolled out to a small subset of users before a full rollout. The purpose is to test and monitor the new version in a real environment with actual users. If the canary deployment works well and no issues are identified, the new version can be rolled out to the entire user base. If issues are found, it’s easier to roll back, preventing all users from being affected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blue/Green Deployments&lt;/strong&gt;: Two identical production environments are maintained. The “blue” environment runs the current version of the software, while the “green” environment gets the new version. Once the new version is ready and tested in the “green” environment, traffic is switched over, making “green” the live environment. This allows for near-instant rollbacks in case of issues and ensures minimal downtime during deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rolling Deployments&lt;/strong&gt;: The new software version is gradually rolled out to all users, replacing the old version incrementally. This is typically done server by server or container by container, ensuring that only a portion of the system is updated at any given time. If problems arise during the deployment, it affects only the portion being updated, allowing for easier rollbacks and reduced impact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow Deployments&lt;/strong&gt;: The new version of the software runs alongside the old version but without actual user traffic directed to it. Instead, real user requests are duplicated to the new version in real time, allowing teams to monitor and test how the system behaves under realistic conditions without affecting the actual user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Feature Flags
&lt;/h2&gt;

&lt;p&gt;Feature flags, also known as feature toggles, provide flexibility in the deployment process. They allow specific features to be turned on or off at runtime without changing the code.&lt;/p&gt;

&lt;p&gt;Instead of deploying a new version of the software to a subset of servers or containers, the feature is deployed everywhere but is enabled first for a small subset of users (e.g., beta testers) and then progressively rolled to the entire user base in phases.&lt;/p&gt;

&lt;p&gt;This ability supports various progressive deployment strategies and is widely adopted in cloud, multi-tenant environments.&lt;/p&gt;

</description>
      <category>development</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Effective Communication in Software Engineering</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Wed, 16 Oct 2024 12:43:25 +0000</pubDate>
      <link>https://dev.to/epklein/effective-communication-in-software-engineering-1dkc</link>
      <guid>https://dev.to/epklein/effective-communication-in-software-engineering-1dkc</guid>
      <description>&lt;p&gt;Effective communication is vital for successful product development teams in tech companies, including software engineering teams. As software engineers (SWEs) and software engineering managers (SEMs), our focus often leans heavily on technical excellence and delivery processes. Yet, without clear communication, great ideas and initiatives can fail.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Effective Communication Expectations and Levels
&lt;/h2&gt;

&lt;p&gt;To make effective communication more tangible, I will describe it through four dimensions:&lt;/p&gt;

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

&lt;p&gt;I try to establish adequate expectations for each level and provide evidence and examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;An engineer who effectively explains their work to colleagues, using simple language and checking for understanding through questioning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Competent
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proficient
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

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

&lt;h3&gt;
  
  
  Expert
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  Evidence
&lt;/h4&gt;

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

&lt;h4&gt;
  
  
  Example
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;An engineer who leads initiatives across the company, ensuring all stakeholders have a common understanding. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Setting clear expectations for each level of communication proficiency allows SEMs to guide their teams toward continuous improvement.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>management</category>
    </item>
    <item>
      <title>The Ivy Lee Method for Managing Priorities</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Mon, 15 Jul 2024 14:42:49 +0000</pubDate>
      <link>https://dev.to/epklein/the-ivy-lee-method-for-managing-priorities-1ii8</link>
      <guid>https://dev.to/epklein/the-ivy-lee-method-for-managing-priorities-1ii8</guid>
      <description>&lt;p&gt;The Ivy Lee method is a classic productivity method popularized by &lt;a href="https://en.wikipedia.org/wiki/Charles_M._Schwab" rel="noopener noreferrer"&gt;Charles M. Schwab&lt;/a&gt;, an American steel magnate who supposedly sought &lt;a href="https://en.wikipedia.org/wiki/Ivy_Lee" rel="noopener noreferrer"&gt;Ivy Lee&lt;/a&gt;'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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ivy Lee Method
&lt;/h2&gt;

&lt;p&gt;Here's the straightforward method Ivy Lee suggested:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;At the end of each day, write down the six most important tasks you need to accomplish the next day.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioritize those tasks in order of importance.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you arrive the next day, concentrate only on the first task. Work on it until finished before moving on to the second task.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;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.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repeat this process every day.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I would like to highlight from the method:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its simplicity is outstanding. It is quite simple to get started and continue using.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prioritizing your six tasks with the Eisenhower Matrix
&lt;/h2&gt;

&lt;p&gt;Modern productivity advice suggests using the &lt;a href="https://dev.to/eisenhower-matrix"&gt;Eisenhower Matrix&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;Following the Eisenhower Matrix system, it is advised to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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).&lt;/li&gt;
&lt;li&gt;Give more room to important tasks (quadrants 1 and 2), leaving just one or two slots for urgent but unimportant tasks (quadrant 3).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>An Approach to Career Development</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Thu, 27 Jun 2024 17:02:54 +0000</pubDate>
      <link>https://dev.to/epklein/an-approach-to-career-development-1h4h</link>
      <guid>https://dev.to/epklein/an-approach-to-career-development-1h4h</guid>
      <description>&lt;p&gt;Career development is essential to reaching our potential. Committing to self-improvement not only enhances our current roles but also equips us for future advancements and challenges. As the owners of our professional journeys, we have the responsibility to improve our capabilities continually.&lt;/p&gt;

&lt;p&gt;Our careers are not just defined by what we work on but mainly by what we aspire to become. This pursuit is an ongoing endeavor that shapes our career aspirations and enhances learning, contributing to personal growth and collective success in companies.&lt;/p&gt;

&lt;p&gt;To empower individuals and facilitate career advancement, I've documented a structured approach to guide the process. It consists of:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://eduklein.com.br/personal-dev/template-individual-development-plan"&gt;Individual Development Plan (IDP) template&lt;/a&gt;: A straightforward template to help you create your development plan;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your company's career track&lt;/strong&gt;: 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 &lt;a href="https://eduklein.com.br/mgmt/sem/swe-career"&gt;here&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your company's performance review process&lt;/strong&gt;: 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;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your company's and team's strategy and vision&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  One-on-one meetings
&lt;/h3&gt;

&lt;p&gt;A &lt;a href="https://eduklein.com.br/mgmt/people/one-on-ones"&gt;one-on-one&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Some advice for your one-on-ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Some advice on feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seek feedback often&lt;/strong&gt;: Don't wait for formal reviews. Ask for feedback regularly from your manager, peers, etc;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be specific in your requests&lt;/strong&gt;: Instead of asking for general feedback, focus on specific areas or recent projects;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a feedback-friendly culture&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act on the feedback&lt;/strong&gt;: 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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember, effective use of feedback is a key component in driving your personal development and achieving your career goals.&lt;/p&gt;

&lt;h3&gt;
  
  
  Individual Development Plan
&lt;/h3&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking the driver's seat
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;If you're uncertain about where to begin, the following is a structured approach to navigating your personal development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leverage your one-on-ones
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clarify your desired future
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;This clarity of vision is the compass that will guide all subsequent steps in your career journey.&lt;/p&gt;

&lt;p&gt;Consider the following in this step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Define your development objectives
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Consider the following in this step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;Less is more. Aim for a manageable number of objectives that allow for focused effort and significant impact.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Build your Individual Development Plan (IDP)
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Progress
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask for feedback
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Managing Priorities with the Eisenhower Matrix</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Thu, 27 Jun 2024 15:10:25 +0000</pubDate>
      <link>https://dev.to/epklein/managing-priorities-with-the-eisenhower-matrix-3901</link>
      <guid>https://dev.to/epklein/managing-priorities-with-the-eisenhower-matrix-3901</guid>
      <description>&lt;p&gt;The Eisenhower Matrix is a straightforward and popular time management tool that I was first introduced to in &lt;em&gt;&lt;a href="https://dev.to/book/the-7-habits-of-highly-effective-people"&gt;The 7 Habits of Highly Effective People&lt;/a&gt;&lt;/em&gt;&lt;sup id="fnref1"&gt;1&lt;/sup&gt;, written by Stephen Covey, many years ago. It can help you &lt;strong&gt;get organized and execute around priorities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When you categorize your activities into four quadrants, with the help of the matrix, you can quickly identify what you should prioritize first. Let's take a look at the matrix:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9oscwm2veksjwm4s55k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9oscwm2veksjwm4s55k.png" title="The Time Management Matrix, by Stephen Covey." alt="The Time Management Matrix" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the two factors that define an activity are &lt;em&gt;urgent&lt;/em&gt; and &lt;em&gt;important&lt;/em&gt;. &lt;em&gt;Urgent&lt;/em&gt; means that the activity requires immediate attention. They are usually visible and press on us. &lt;em&gt;Importance&lt;/em&gt; has to do with results; if the activity is important to you, it contributes to your mission, values, and high-priority goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We react to urgent matters, but important matters require initiative and proactivity!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The quadrants can be read as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
&lt;b&gt;Urgent and important&lt;/b&gt;: This quadrant deals with significant results that require immediate attention;&lt;/li&gt;
  &lt;li&gt;
&lt;b&gt;Important but not urgent&lt;/b&gt;: This quadrant is the heart of effective personal management. It deals with important, but not urgent, activities;&lt;/li&gt;
  &lt;li&gt;
&lt;b&gt;Urgent but not important&lt;/b&gt;: This quadrant deals with urgent activities that are usually a priority for someone else, not for you;&lt;/li&gt;
  &lt;li&gt;
&lt;b&gt;Not urgent and not important&lt;/b&gt;: It is usually stuff that is pleasant to do but has no significance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is important to take into consideration that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People who spend most of their time in quadrant I live by crisis. This quadrant dominates them. If you are there, you should consider how to shrink quadrant I and move to quadrant II, where you are more effective;&lt;/li&gt;
&lt;li&gt;Effective people avoid quadrants III and IV. You should consider delegating quadrant III activities when possible. Avoid quadrant IV activities altogether; this should be your "do not do" list.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;As far as I understand, the matrix was created by Stephen Covey. He refers to it as &lt;em&gt;The Time Management Matrix&lt;/em&gt;, however. The matrix is widely known as the Eisenhower Matrix, in honor of USA 34º president &lt;a href="https://en.wikipedia.org/wiki/Dwight_D._Eisenhower"&gt;Dwight D. Eisenhower&lt;/a&gt;, but I don't know by whom and when the matrix was named the Eisenhower Matrix. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>management</category>
      <category>delegation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Software Engineering Team Size</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Wed, 04 Jan 2023 12:00:00 +0000</pubDate>
      <link>https://dev.to/epklein/software-engineering-team-size-25ec</link>
      <guid>https://dev.to/epklein/software-engineering-team-size-25ec</guid>
      <description>&lt;p&gt;The right size of a software engineering team and the number of engineers an Engineering Manager (EM) can properly support is at the core of organizational design in tech companies.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://scrumguides.org/scrum-guide.html#scrum-team"&gt;Scrum Guide&lt;/a&gt; states that "&lt;em&gt;The Scrum Team is small enough to remain nimble and large enough to complete significant work within a Sprint, typically 10 or fewer people&lt;/em&gt;". The Two-Pizza Teams, coined by &lt;a href="https://en.wikipedia.org/wiki/Jeff_Bezos"&gt;Jeff Bezos&lt;/a&gt; at &lt;a href="https://en.wikipedia.org/wiki/Amazon_(company)"&gt;Amazon&lt;/a&gt;, also says that "&lt;em&gt;We try to create teams that are no larger than can be fed by two pizzas&lt;/em&gt;", which I guess can't feed more than 8 or 9 people.&lt;/p&gt;

&lt;p&gt;A more accurate answer depends on how the team operates. Teams at big tech, for example, are responsible for innovation, keeping the lights on, on-call processes, among other responsibilities. By the way, those teams are usually &lt;a href="https://newsletter.pragmaticengineer.com/p/project-management-in-tech"&gt;not running the Scrum framework to manage projects&lt;/a&gt; anyway.&lt;/p&gt;

&lt;p&gt;The truth is, this question has been puzzling me for a while. I feel I've been in both extremes of this &lt;em&gt;dilemma&lt;/em&gt;: Small teams that lack skills and are highly impacted by vacation, on-call, sick leave, etc.; and big teams that get too complex to manage, loose focus easier, and don't adapt fast. Both usually don't perform as expected.&lt;/p&gt;

&lt;p&gt;Being in the EM's seat, having a small team impels you to act hands on with your engineers, whereas with a big team you can't properly support all engineers the way you wish. Neither helps your career development as an Engineering Manager.&lt;/p&gt;

&lt;p&gt;In his book &lt;a href="https://www.amazon.com.br/gp/product/B07QYCHJ7V"&gt;An Elegant Puzzle&lt;/a&gt;, &lt;a href="https://lethain.com/"&gt;Will Larson&lt;/a&gt; offers, from his experience, a playbook on sizing teams at big tech, which I feel is well aligned with my perceptions.&lt;/p&gt;

&lt;p&gt;From his playbook we can get valuable insights:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Managers should support 6 to 8 engineers

&lt;ul&gt;
&lt;li&gt;Those who supports fewer than 4 engineers are hands on Tech Lead Mangers (TLMs)&lt;/li&gt;
&lt;li&gt;Those who supports more than 8 engineers, typically act as &lt;strong&gt;coaches&lt;/strong&gt; and &lt;strong&gt;safety nets for problems&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Managers of managers should support 4 to 6 managers

&lt;ul&gt;
&lt;li&gt;Managers supporting fewer than 4 managers should be in a period of active learning (Ramp up)&lt;/li&gt;
&lt;li&gt;Coaches: Supporting more than 6 managers leaves you functioning purely as a problem-solving coach&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;On-call rotations want 8 engineers&lt;/li&gt;
&lt;li&gt;Small teams (fewer than four members) are not considered teams&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a simple and straightforward set of principles that can guide the way we organize teams effectively.&lt;/p&gt;

</description>
      <category>management</category>
    </item>
    <item>
      <title>Different Types of Schedules</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Tue, 03 Jan 2023 12:00:00 +0000</pubDate>
      <link>https://dev.to/epklein/different-types-of-schedules-1al6</link>
      <guid>https://dev.to/epklein/different-types-of-schedules-1al6</guid>
      <description>&lt;p&gt;There is this great article, "&lt;a href="http://www.paulgraham.com/makersschedule.html"&gt;Maker's schedule, manager's schedule&lt;/a&gt;", written by &lt;a href="https://en.wikipedia.org/wiki/Paul_Graham_(programmer)"&gt;Paul Graham&lt;/a&gt;, that covers the differences between the schedules of makers (which I refer to as individual contributors from here on) and managers.&lt;/p&gt;

&lt;p&gt;Managers typically schedule their activities in hourly blocks to make their schedules more efficient, whereas individual contributors are more productive in their tasks by using bigger blocks of focus time, such as half a day or a whole day.&lt;/p&gt;

&lt;p&gt;As a software engineering manager, I think it is important to take both into account, from different perspectives.&lt;/p&gt;

&lt;p&gt;Firstly, I have my schedule organized into blocks of an hour or even less, so that I can handle leadership sync meetings, one-on-one meetings, team rituals, demos, etc. That's typically a manager's schedule. But I also need to block out bigger chunks of time, to get more complex activities done. I usually allocate two or three chunks of time (at least 2-hours long) in my schedule to focus on such activities. By the way, I also like the concept of batching, as &lt;a href="https://www.youtube.com/watch?v=ghVdzAeX0bg"&gt;explained by Tim Ferriss&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Secondly, to help my teams perform better, I have to consider the individual contributor's schedule, trying my best to protect their schedule time. Two key considerations I always take into account are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plan recurring meetings and one-on-ones in times that allow them to be focused and productive during the rest of their day&lt;/li&gt;
&lt;li&gt;Empower them to manage their own schedules, and to negotiate (with me and peers) adjustments that may improve their focus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For an individual contributor, a short but unexpected meeting may drain their energy for a whole day, potentially preventing them from starting something complex.&lt;/p&gt;

&lt;p&gt;Taking care of their schedule can boost their productivity.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>Taking Notes of One-on-ones</title>
      <dc:creator>Eduardo Klein</dc:creator>
      <pubDate>Mon, 02 Jan 2023 12:00:00 +0000</pubDate>
      <link>https://dev.to/epklein/taking-notes-of-one-on-ones-2bfe</link>
      <guid>https://dev.to/epklein/taking-notes-of-one-on-ones-2bfe</guid>
      <description>&lt;p&gt;Taking notes of &lt;a href="https://eduklein.com.br/mgmt/people/one-on-ones" rel="noopener noreferrer"&gt;one-on-one meetings&lt;/a&gt; is an important step to support the growth of your direct reports and help you keep track of it.&lt;/p&gt;

&lt;p&gt;I've been in situations where I had more than 10 direct reports, and without writing things down I would certainly fail miserably; disorganization and mismanagement would follow.&lt;/p&gt;

&lt;p&gt;Some benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To prepare the agenda of your next one-on-ones. Both parties should have a document to write down something they don't want to miss the next time they meet;&lt;/li&gt;
&lt;li&gt;Keep track of decisions you made and assigned actions;&lt;/li&gt;
&lt;li&gt;Keep a record of deliveries and achievements;&lt;/li&gt;
&lt;li&gt;Provide your direct reports a source of information that will help them write their &lt;em&gt;self review&lt;/em&gt; during &lt;a href="https://eduklein.com.br/performance-review-cycle" rel="noopener noreferrer"&gt;performance review cycles&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another important aspect about this practice is to have a lightweight process. No one wants to waste time on management stuff, no matter how important it is. If it is not simple and easy, chances are it will fall into disuse.&lt;/p&gt;

&lt;p&gt;In order to keep track of one-on-ones I use two simple documents: A shared online document to collaborate with each direct report and a private document for my personal notes.&lt;/p&gt;

&lt;h2&gt;
  
  
  A shared online document to keep track of one-on-ones
&lt;/h2&gt;

&lt;p&gt;First, I create a shared online document (platforms such as Google Docs or Microsoft Word work well) with each direct report, where we can prepare our agenda and collaboratively register our meetings. It is important that you use an online solution so you can both collaborate on the document at the same time.&lt;/p&gt;

&lt;p&gt;This document is a timeline, where the most recent entry is on the top, and it consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A new entry in the timeline for each one-on-one;&lt;/li&gt;
&lt;li&gt;Two sections for each entry, the agenda and the meeting notes;&lt;/li&gt;
&lt;li&gt;For each topic discussed, a series of bullet points with notes and action items.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is quite straightforward to fill it in. It looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Feduklein.com.br%2Fimages%2Fposts%2F2022-10-12-taking-notes-in-one-on-ones%2Fshared-document.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Feduklein.com.br%2Fimages%2Fposts%2F2022-10-12-taking-notes-in-one-on-ones%2Fshared-document.png" title="An example of a shared document to keep track of one-on-ones." alt="Shared document sample" width="800" height="857"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can get this template &lt;a href="https://eduklein.com.br/mgmt/people/template-one-on-one-shared-document" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A private document to keep personal notes
&lt;/h2&gt;

&lt;p&gt;Second, I keep a private document for each of my direct reports, where I save my personal notes about our relationship. In this document I register thoughts that I do not want to share with them.&lt;/p&gt;

&lt;p&gt;I personally use &lt;a href="https://obsidian.md/" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt; as my note-taking app, so I keep an entry for each direct report in it. But if you want to keep it simple, just open another document in the same platform you chose before. Just make sure you keep it private.&lt;/p&gt;

&lt;p&gt;This document consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A section to save personal information about your direct report. This is important to build an understanding about them and their life that will help me connect with them easier;&lt;/li&gt;
&lt;li&gt;Another section to save information about their jobs; That's where I save unstructured information about work, links to documents, etc.;&lt;/li&gt;
&lt;li&gt;The last section is a timeline of events, where I take personal notes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is an example of how it looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Feduklein.com.br%2Fimages%2Fposts%2F2022-10-12-taking-notes-in-one-on-ones%2Fprivate-notes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Feduklein.com.br%2Fimages%2Fposts%2F2022-10-12-taking-notes-in-one-on-ones%2Fprivate-notes.png" title="An example of a document to keep private notes." alt="Private notes sample" width="774" height="886"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can get this template &lt;a href="https://eduklein.com.br/mgmt/people/template-one-on-one-private-notes" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;And that's it! These two documents are what I use to keep track of one-on-ones with my teams.&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
