<?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: Jesal Gadhia</title>
    <description>The latest articles on DEV Community by Jesal Gadhia (@jesalg).</description>
    <link>https://dev.to/jesalg</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%2F1821%2F3bcc6f7a-3ac0-4d80-ba6d-6143a68b146a.jpeg</url>
      <title>DEV Community: Jesal Gadhia</title>
      <link>https://dev.to/jesalg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jesalg"/>
    <language>en</language>
    <item>
      <title>How to break the cycle of firefighting and build engineering excellence</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Thu, 02 Jan 2025 04:58:19 +0000</pubDate>
      <link>https://dev.to/jesalg/how-to-break-the-cycle-of-firefighting-and-build-engineering-excellence-406n</link>
      <guid>https://dev.to/jesalg/how-to-break-the-cycle-of-firefighting-and-build-engineering-excellence-406n</guid>
      <description>&lt;h4&gt;
  
  
  Exercise better foresight by identifying patterns, pinpointing what makes them persist, and understanding what could prevent it in the future.
&lt;/h4&gt;

&lt;p&gt;Take a moment to count the urgent issues you handled this week. Production incidents. Customer escalations. Team conflicts. Deadline pressures. For many engineering leaders, these “firefighting” moments consume the majority of their workday, leaving little time for strategic thinking or meaningful improvements.&lt;/p&gt;

&lt;p&gt;This constant cycle of reacting to problems is exhausting and expensive. Every hour spent handling preventable issues is an hour not spent on innovation, team development, or strategic planning. The cost compounds across your team, affecting morale, productivity, and your ability to deliver value.&lt;/p&gt;

&lt;p&gt;But there’s a better way. By embracing systems thinking, you can transform your team from reactive to proactive, creating processes that run themselves and free you to focus on what matters most: innovation and growth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding the systems thinking iceberg
&lt;/h3&gt;

&lt;p&gt;One powerful model to visualize systems thinking is the &lt;strong&gt;iceberg model&lt;/strong&gt;. Just like an iceberg, where 10% is visible above water while the remaining 90% lies beneath the surface, this model reminds us that there’s much more to a situation than meets the eye. The visible problems are often symptoms of deeper, hidden issues.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepgcict9gi1xqxa2qgtd.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepgcict9gi1xqxa2qgtd.jpg" alt="Image description" width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Levels of thinking in the iceberg model
&lt;/h3&gt;

&lt;h3&gt;
  
  
  1. The event level
&lt;/h3&gt;

&lt;p&gt;At the tip of the iceberg are the &lt;strong&gt;events&lt;/strong&gt; — the immediate issues that catch our attention. These are surface-level incidents that often demand urgent responses. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;A critical system outage causes downtime.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;A major customer complains due to a missed project deadline.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;An unexpected defect is discovered in a recently released product.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While addressing these events is necessary, focusing solely on them keeps us in a cycle of reaction without addressing the root causes. It’s like repeatedly putting out fires without investigating what started them.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The pattern level
&lt;/h3&gt;

&lt;p&gt;Just below the surface, &lt;strong&gt;patterns&lt;/strong&gt; emerge when we observe similar events happening over time. Recognizing these patterns helps us anticipate issues. Examples of patterns might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Frequent system outages&lt;/strong&gt;: noticing that system downtimes occur consistently during peak traffic hours.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Recurring customer complaints&lt;/strong&gt;: observing that customer dissatisfaction spikes whenever a specific feature is updated.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Consistent project delays&lt;/strong&gt;: realizing that projects often overrun their deadlines by similar timeframes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By identifying patterns, we begin to see that events are not isolated incidents but symptoms of deeper issues that need to be addressed.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The structure level
&lt;/h3&gt;

&lt;p&gt;Deeper still are the &lt;strong&gt;structures&lt;/strong&gt; influencing the patterns we observe. Structures include processes, organizational hierarchies, tools, and policies that shape behavior. Examples of structural issues might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Inefficient resource allocation&lt;/strong&gt;: teams are understaffed during critical periods, &lt;a href="https://leaddev.com/culture/four-ways-protect-yourself-burnout" rel="noopener noreferrer"&gt;leading to burnout&lt;/a&gt; and mistakes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Outdated processes&lt;/strong&gt;: reliance on manual testing rather than automated testing increases the chance of defects slipping through.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Communication silos&lt;/strong&gt;: &lt;a href="https://leaddev.com/communication/want-promote-knowledge-sharing-your-teams-standardize-way-you-take" rel="noopener noreferrer"&gt;departments not sharing information effectively&lt;/a&gt;, causing misalignment and delays.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These structures create the conditions that lead to the patterns and events we experience. By examining and modifying structures, we can influence the patterns and prevent undesirable events.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The mental model level
&lt;/h3&gt;

&lt;p&gt;At the base of the iceberg lie the &lt;strong&gt;mental models&lt;/strong&gt; — the beliefs, values, and assumptions that drive behavior within the system. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;A speed over quality mindset&lt;/strong&gt;: believing that getting products to market quickly is more important than ensuring they are free of flaws.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Resistance to change&lt;/strong&gt;: assuming that established processes don’t need updating because “they’ve always worked before.”&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Underestimating the importance of communication&lt;/strong&gt;: not valuing &lt;a href="https://leaddev.com/communication/leaders-guide-fostering-effective-cross-team-collaboration" rel="noopener noreferrer"&gt;cross-department collaboration&lt;/a&gt;, leading to isolated teams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These underlying mental models perpetuate the structures and patterns leading to recurring events. Changing mental models can be challenging but is essential for sustainable transformation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategies for implementing systems thinking
&lt;/h3&gt;

&lt;p&gt;With a clear understanding of the underlying issues, the next step is to implement strategies that foster systems thinking and build self-sustaining processes. Here are actionable steps you can take to apply these strategies in your organization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Engage your team in analysis
&lt;/h3&gt;

&lt;p&gt;Involving your team in analyzing the different levels of the iceberg model is crucial. Suppose your team is experiencing frequent project delays. Organize a retrospective meeting involving project managers, engineers, and other stakeholders to examine each level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Events:&lt;/strong&gt; document specific instances of delays and their immediate impacts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Patterns&lt;/strong&gt;: collect data on project timelines to identify common bottlenecks.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Structures&lt;/strong&gt;: examine whether current project management tools and processes are effective.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Mental models&lt;/strong&gt;: encourage team members to share their beliefs about deadlines, workload management, and quality standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By bringing together diverse perspectives, you can uncover hidden issues and foster a sense of ownership over the solutions. This collaborative approach ensures that any changes made are well-informed and more likely to be embraced by the team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identify leverage points
&lt;/h3&gt;

&lt;p&gt;Focus on areas where small, strategic changes can have a significant impact. Leverage points often exist within processes, resource allocation, or communication channels. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Implement a tiered support system&lt;/strong&gt;: if customer complaints often arise due to slow response times from support, introduce first-line support for quick resolutions and escalate complex issues to specialized teams.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Streamline approval processes&lt;/strong&gt;: if project delays are the product of lengthy approval procedures, simplify or automate approvals to speed up workflow.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Reallocate resources&lt;/strong&gt;: if a team is consistently overloaded, redistribute tasks or hire additional staff to alleviate pressure and improve efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By targeting these leverage points, you can disrupt negative patterns and foster positive outcomes with relatively minimal effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge mental models
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://leaddev.com/management/how-bring-about-positive-cultural-change-your-team" rel="noopener noreferrer"&gt;Addressing and reshaping underlying beliefs&lt;/a&gt; is crucial for sustainable change. If there’s a “speed over quality” mindset leading to product defects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Initiate a cultural shift&lt;/strong&gt;: launch training sessions emphasizing the importance of quality and its long-term benefits. Share case studies where poor quality led to significant issues.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Promote open communication&lt;/strong&gt;: if resistance to change stems from fear of the unknown, encourage transparency by involving team members in decision-making processes and explaining the benefits of new initiatives.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Encourage cross-functional collaboration&lt;/strong&gt;: if departments work in silos, organize joint projects or team-building activities to break down barriers and foster a collaborative culture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Changing mental models may require consistent effort, but it lays the foundation for lasting improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Develop an action plan
&lt;/h3&gt;

&lt;p&gt;An action plan turns insights gained from discussions into concrete steps you can follow to improve the situation. For optimizing cross-department collaboration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Set clear objectives&lt;/strong&gt;: aim to reduce project delays by 25% in the next quarter.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Define actions&lt;/strong&gt;: implement regular inter-departmental meetings, use collaborative tools like shared project boards, and establish clear communication protocols.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Assign responsibilities&lt;/strong&gt;: designate team leads to oversee collaboration efforts and ensure accountability.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Set timelines&lt;/strong&gt;: roll out changes within the next month and schedule regular reviews to assess progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An effective action plan should be specific, measurable, achievable, relevant, and time-bound (SMART) to ensure accountability and track progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitor progress and adjust
&lt;/h3&gt;

&lt;p&gt;Continuous monitoring allows you to measure the effectiveness of changes and remain flexible. After implementing new processes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Track metrics&lt;/strong&gt;: monitor KPIs such as customer satisfaction scores, defect rates, or project completion times. When metrics aren’t trending in the desired direction, analyze root causes and adjust your approach — perhaps by reallocating resources, modifying processes, or revising timelines.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gather feedback&lt;/strong&gt;: regularly solicit input from team members about what’s working and what’s not. Use this feedback to make targeted improvements, such as streamlining overcomplicated processes or providing additional support where teams are struggling.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Celebrate successes&lt;/strong&gt;: recognize improvements and milestones to maintain momentum and motivate the team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By staying attentive to results and being willing to adapt, you can ensure that the changes have a lasting positive impact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Components of self-sustaining systems
&lt;/h3&gt;

&lt;p&gt;Ensuring that all essential components are addressed will help build systems that are not only effective but also self-sustaining. Here are key elements to focus on:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Roles and responsibilities
&lt;/h3&gt;

&lt;p&gt;Establishing clear organizational structure and team interactions forms the foundation of effective systems. While no longer current practice at Spotify, &lt;a href="https://blog.crisp.se/wp-content/uploads/2012/11/SpotifyScaling.pdf" rel="noopener noreferrer"&gt;Henrik Kniberg’s influential 2012 model of scaling agile organizations&lt;/a&gt; demonstrates this through several key concepts.&lt;/p&gt;

&lt;p&gt;The model organizes autonomous, cross-functional squads that operate like mini-startups, each owning a specific part of the product lifecycle. It scales collaboration through &lt;a href="https://www.wrike.com/agile-guide/squads-tribes-guilds/" rel="noopener noreferrer"&gt;tribes&lt;/a&gt; — collections of squads working in related areas — to maintain coordination without sacrificing autonomy.&lt;/p&gt;

&lt;p&gt;The model also builds expertise through &lt;a href="https://www.adaptovate.com/agile/what-are-chapters-in-an-agile-operating-model/#:~:text=Chapters%20are%20a%20way%20of,information%2C%20technologies%2C%20and%20methodologies." rel="noopener noreferrer"&gt;chapters&lt;/a&gt;, where specialists across different squads share knowledge and practices. This structure exemplifies how clear roles and responsibilities can create self-sustaining systems that balance autonomy with collaboration.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Knowledge and skills
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://leaddev.com/culture/beginners-guide-building-sustainable-learning-culture" rel="noopener noreferrer"&gt;Developing a learning culture&lt;/a&gt; enables organizations to adapt and innovate continuously. Microsoft’s transformation under Satya Nadella, chronicled in his &lt;a href="https://news.microsoft.com/hitrefresh/" rel="noopener noreferrer"&gt;2017 book “Hit Refresh&lt;/a&gt;,” showcases how even large enterprises can fundamentally reshape their culture:&lt;/p&gt;

&lt;p&gt;The company focused on embedding a growth mindset where learning from failures is valued over knowing all the answers. This started with leaders modeling vulnerability by openly sharing their own failures and lessons learned. They implemented “failure retrospectives,” where teams analyzed setbacks not as problems to avoid but as valuable learning opportunities. Recognition systems were revised to reward innovative attempts and learning processes, not just successful outcomes.&lt;/p&gt;

&lt;p&gt;They worked on breaking down silos by promoting cross-functional skill development and collaborative learning. This included rotating team members across departments, creating mixed-skill project teams, and establishing regular knowledge-sharing sessions where different departments teach each other about their work. They also implemented shared objectives that required multiple departments to collaborate, moving away from department-specific goals that encouraged isolation.&lt;/p&gt;

&lt;p&gt;Microsoft also prioritized psychological safety which encouraged questioning, learning, and challenging the status quo. Leaders achieved this by actively soliciting diverse viewpoints in meetings, responding positively to challenges of their own ideas, and establishing &lt;a href="https://leaddev.com/culture/5-takeaways-running-50-postmortems" rel="noopener noreferrer"&gt;“no-blame” policies&lt;/a&gt; for raising concerns. They created formal channels for anonymous feedback and suggestions, while also training managers to respond constructively to new ideas and concerns. Regular town halls and open forums were established where employees at all levels could question existing practices and propose alternatives without fear of negative consequences.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Processes and rituals
&lt;/h3&gt;

&lt;p&gt;Establishing consistent operational practices ensures reliability and enables innovation. Drawing from their extensive experience operating large-scale systems, &lt;a href="https://sre.google/sre-book/" rel="noopener noreferrer"&gt;Google’s Site Reliability Engineering teams&lt;/a&gt; have pioneered practices that demonstrate this.&lt;/p&gt;

&lt;p&gt;Their teams implement &lt;a href="https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows" rel="noopener noreferrer"&gt;error budgets&lt;/a&gt; — a concept that gives teams a specific allowance for acceptable system failures. They define clear service level objectives (SLOs) that ensure technical decisions directly connect to customer impact.&lt;/p&gt;

&lt;p&gt;Their teams also follow a structured &lt;a href="https://sre.google/workbook/incident-response/" rel="noopener noreferrer"&gt;post-incident analysis process&lt;/a&gt; that goes beyond just fixing immediate problems. Each incident triggers a formal review with a standardized template covering what happened, why it happened, its impact, and the broader systematic improvements needed. This systematic approach has helped Google build institutional memory and continuously improve their operational practices&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Tools and equipment
&lt;/h3&gt;

&lt;p&gt;Building and maintaining the right tooling infrastructure enables teams to work effectively. &lt;a href="https://netflixtechblog.com/" rel="noopener noreferrer"&gt;Netflix’s engineering organization&lt;/a&gt;, renowned for its open-source contributions and innovative practices, demonstrates this through several groundbreaking approaches.&lt;/p&gt;

&lt;p&gt;Netflix pioneered chaos engineering through tools like Chaos Monkey, which randomly terminates instances in production to ensure systems can handle unexpected failures. &lt;a href="https://netflixtechblog.com/netflix-chaos-monkey-upgraded-1d679429be5d" rel="noopener noreferrer"&gt;This tool simulates real-world failures by deliberately causing outages&lt;/a&gt; during business hours when engineers are available to respond. This forces teams to build resilient systems that can handle failures gracefully. Netflix has built deployment pipelines that automate the process of moving code from development to production. These pipelines include automated testing, security scanning, canary deployments (rolling out changes to a small subset of users first), and one-click rollbacks if issues are detected.&lt;/p&gt;

&lt;p&gt;For custom testing tools, Netflix developed and open-sourced several frameworks that others can learn from. &lt;a href="https://netflixtechblog.com/fit-failure-injection-testing-35d8e2a9bb2" rel="noopener noreferrer"&gt;The failure injection testing (FIT) framework&lt;/a&gt; allows teams to inject failures at the application level rather than the infrastructure level. For organizations looking to develop their own testing tools, &lt;a href="https://netflixtechblog.com/tagged/testing" rel="noopener noreferrer"&gt;Netflix’s engineering blog&lt;/a&gt; provides examples of their approach to testing distributed systems..&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Observability and metrics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Creating comprehensive system visibility enables data-driven operations. &lt;a href="https://docs.aws.amazon.com/wellarchitected/" rel="noopener noreferrer"&gt;AWS’s Well-Architected Framework&lt;/a&gt;, demonstrates effective observability through several key practices that have transformed how organizations monitor and respond to system behavior.&lt;/p&gt;

&lt;p&gt;AWS implements integrated metrics, logging, and tracing that work together to provide complete system visibility. For example, when a customer experiences a slow checkout process, teams can trace the entire transaction path across different services, examine detailed logs of each component’s behavior, and correlate this with system-wide performance metrics. This three-pronged approach helps quickly identify whether the issue stems from database performance, network latency, or application code.&lt;/p&gt;

&lt;p&gt;AWS aligns technical metrics directly with business outcomes through what they call “business-aware monitoring.” Rather than just tracking technical metrics like CPU usage or memory consumption, they monitor business-relevant metrics like order completion rate, revenue per hour, or customer engagement scores. When technical issues occur, teams can immediately see the business impact — for example, how a slight increase in API latency directly correlates to a drop in successful checkouts or customer engagement. This approach helps teams prioritize their responses based on actual business impact rather than just technical severity.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Performance and expectations
&lt;/h3&gt;

&lt;p&gt;Implementing a performance management system fosters a culture of accountability and continuous improvement. Netflix’s widely studied high-performance culture, recently reaffirmed in their &lt;a href="https://jobs.netflix.com/culture" rel="noopener noreferrer"&gt;2024 culture memo&lt;/a&gt;, demonstrates this.&lt;/p&gt;

&lt;p&gt;Netflix hires experienced professionals who thrive in environments of freedom and responsibility, paying top-of-market compensation to attract and retain exceptional talent. To prevent burnout, they implement unlimited vacation policies and encourage actual usage, maintain flexible working arrangements, and explicitly discourage long hours. Instead of measuring time spent, they focus on impact delivered. Teams are kept intentionally lean, with each member bringing significant expertise and value, rather than distributing work across larger groups.&lt;/p&gt;

&lt;p&gt;The company’s “keeper test” is a fundamental part of their performance management approach. Managers regularly ask themselves: “If this person were interviewing elsewhere, would I fight hard to keep them?” This isn’t about constant pressure, but rather about maintaining honest dialogue about performance and fit. If the answer is “no,” they provide generous severance packages rather than maintaining ongoing employment.&lt;/p&gt;

&lt;p&gt;Netflix’s approach focuses on providing context rather than top-down control. In practice, this means leaders spend significant time sharing detailed information about company strategy, market conditions, and business challenges. For example, instead of dictating specific technical solutions, leaders might share comprehensive data about customer behavior, cost constraints, and strategic priorities, then trust their teams to make informed decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;Picture this: Your phone buzzes with another escalation. But this time is different. Instead of jumping into firefighter mode, you see an opportunity for fireproofing.&lt;/p&gt;

&lt;p&gt;Take that production incident, customer escalation, or team bottleneck and ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What patterns made this inevitable?&lt;/li&gt;
&lt;li&gt;  Which structures allow these patterns to persist?&lt;/li&gt;
&lt;li&gt;  What system could prevent this entirely?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then build it. While others scramble from crisis to crisis, you’ll be methodically eliminating the conditions that create them.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on&lt;/em&gt; &lt;a href="https://leaddev.com/management/how-break-cycle-firefighting" rel="noopener noreferrer"&gt;&lt;em&gt;LeadDev.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on Dec 24th, 2024.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>management</category>
      <category>leadership</category>
      <category>career</category>
    </item>
    <item>
      <title>6 questions to ask yourself before applying to that job</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Wed, 31 Jul 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/jesalg/6-questions-to-ask-yourself-before-applying-to-that-job-12j8</link>
      <guid>https://dev.to/jesalg/6-questions-to-ask-yourself-before-applying-to-that-job-12j8</guid>
      <description>&lt;h4&gt;
  
  
  The current job market is overflowing with competition, put yourself in better stead for meeting the job spec by asking yourself these 6 questions before applying.
&lt;/h4&gt;

&lt;p&gt;Rejection stings. As engineers, we're wired to solve problems and achieve goals. &lt;a href="https://leaddev.com/personal-development/where-are-all-laid-software-developers-going" rel="noopener noreferrer"&gt;In today’s job market&lt;/a&gt;, it can be tricky to get past the first stage, let alone a second or third, so a "no" can feel like a personal setback. But what if we could reframe potential rejection as a learning opportunity before it even happens?&lt;/p&gt;

&lt;p&gt;Enter the &lt;a href="https://en.wikipedia.org/wiki/Pre-mortem" rel="noopener noreferrer"&gt;premortem&lt;/a&gt;, a tool used in &lt;a href="https://leaddev.com/personal-development/how-tech-leads-can-manage-projects-effectively" rel="noopener noreferrer"&gt;project management&lt;/a&gt; to anticipate potential failures before they occur. Applying the concept of premortems to your job search and anticipating what might cause your application to be rejected, can help you navigate the process more effectively. Here are six questions to ask yourself before applying to better align with the job spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Does my expertise match the demands of the company’s size?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Knowing the type of environment you thrive in and applying that to your search is an important step. Different company settings require different skill sets and experiences, so a mismatch in company size or stage can lead to difficulties in adapting to the pace.&lt;/p&gt;

&lt;p&gt;For example, if you've spent the last five years at Google working on large-scale infrastructure projects, moving to a 10-person start-up might require you to wear multiple hats and work on tasks outside your current expertise. Conversely, &lt;a href="https://leaddev.com/career-paths-progression-promotion/eight-things-you-need-know-when-moving-startup-established-tech" rel="noopener noreferrer"&gt;someone used to the fast-paced, multifaceted nature of a start-up might struggle with the bureaucratic processes in a large corporation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create two versions of your resume: one tailored for smaller companies and another for larger organizations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List three to five specific projects or experiences that demonstrate your adaptability to different company sizes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Draft a paragraph for your cover letter explicitly addressing your fit for the company's size.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Can I effectively integrate into this team structure and working style?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Look into the team and wider org structure of the company you’re applying to and consider whether your skill set lends itself to the internal dynamics. Reflect on your collaboration style; do you prefer working as part of a specialized team or within a cross-functional one?&lt;/p&gt;

&lt;p&gt;For example, if you're a machine learning specialist within a dedicated research team, transitioning to a product-focused team where you need to collaborate &lt;a href="https://leaddev.com/team/collaborate-effectively-using-power-agreements" rel="noopener noreferrer"&gt;closely with UX designers, product managers, and software engineers&lt;/a&gt; might be challenging. You may need to adapt your communication style by simplifying technical jargon, &lt;a href="https://leaddev.com/personal-development/present-technical-information-using-storytelling-framework" rel="noopener noreferrer"&gt;learning to translate complex concepts for non-technical team members&lt;/a&gt;, and developing skills in areas like product management or user experience to contribute effectively.&lt;/p&gt;

&lt;p&gt;Conversely, if you're accustomed to working in a cross-functional product team and plan to join a specialized research group, you might struggle to dive deep into a specific area of expertise and adapt to a more focused, research-oriented workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Research the company's team structure (e.g., cross-functional, specialized) using their website or job description.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prepare two to three specific examples of how you've successfully adapted to different team structures in the past.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List questions to ask during the interview about team dynamics and collaboration methods.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Does my area of expertise directly address the challenges and goals of this particular role?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Having the right skills doesn't guarantee you're the right fit for the team's needs. It's crucial to ensure that your expertise aligns with the specific requirements of the role you're applying for. This goes beyond just matching keywords on a job description; it involves understanding the nuances of the role, the team's current challenges, and the company's strategic goals.&lt;/p&gt;

&lt;p&gt;Consider the depth and breadth of your expertise in relation to the role's demands. Some positions may require deep specialization in a particular area, while others might value a broader skill set. Additionally, the team may be looking for someone to fill a specific gap or bring a particular perspective that complements existing team members' skills.&lt;/p&gt;

&lt;p&gt;It's also important to &lt;a href="https://leaddev.com/personal-development/own-your-career-personal-development-plan" rel="noopener noreferrer"&gt;consider the trajectory of your career&lt;/a&gt; and how it aligns with the role's growth potential. A position that doesn't allow you to utilize your core strengths or develop in your desired direction might not be the best fit, even if you have the required skills on paper.&lt;/p&gt;

&lt;p&gt;For example, you might be applying for a full-stack role, but if the team is looking for more back-end expertise and your strength lies primarily in front-end development, this could be a misalignment. Despite your full-stack development experience, your limited depth of experience on the server side could be a dealbreaker for the hiring team if they're specifically looking to bolster their back-end capabilities.&lt;/p&gt;

&lt;p&gt;Alternatively, if you're a generalist full-stack developer applying to a role that requires deep specialization in a particular area like database optimization or scalability, your breadth of knowledge might not compensate for the lack of in-depth expertise they're seeking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a table mapping your skills to the job requirements, identifying any gaps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose three key skills from the job description and write a brief statement for each, explaining how you've applied them in past roles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify any areas where you may lack experience and prepare talking points about how you will mitigate the skill gap.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Have I researched the demands of this industry?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you're transitioning to a new industry altogether, you may have some other facets to consider before hitting "send" on your CV. Moving fields will involve adapting to different regulations, stakeholder expectations, and industry-specific knowledge. This can present a steep learning curve, so you have to be sure you're well-equipped to walk into this role.&lt;/p&gt;

&lt;p&gt;To capitalize on transferable skills, identify core competencies from your current role that are valuable across industries. These might include project management, data analysis, problem-solving, or leadership skills. Then, frame these skills in the context of the new industry.&lt;/p&gt;

&lt;p&gt;For instance, if you've managed tech projects in the software industry and are transitioning to healthcare, you could highlight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Project management&lt;/strong&gt;: Emphasize how your experience managing complex software projects can translate to overseeing the implementation of healthcare IT systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stakeholder communication&lt;/strong&gt;: Showcase how &lt;a href="https://leaddev.com/personal-development/how-communicate-executive-audience" rel="noopener noreferrer"&gt;your ability to communicate technical concepts to non-technical stakeholders&lt;/a&gt; can be applied when explaining medical technologies to healthcare professionals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regulatory compliance&lt;/strong&gt;: If you've dealt with data privacy in tech, highlight how this experience can be valuable in understanding and implementing &lt;a href="https://www.digitalguardian.com/blog/what-hipaa-compliance" rel="noopener noreferrer"&gt;HIPAA compliance&lt;/a&gt; in healthcare.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Problem-solving&lt;/strong&gt;: Illustrate how your approach to troubleshooting software issues can be applied to optimizing patient care workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the very least, anticipate questions from the hiring team about your industry transition and prepare examples that demonstrate how your transferable skills can add value in the new context. Be prepared to discuss how you plan to bridge any knowledge gaps and show enthusiasm for learning industry-specific regulations and practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Read industry-specific publications or reports to familiarize yourself with current trends and challenges.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify and list key trends, regulations, or standards relevant to the industry you're targeting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect with two to three professionals in the target industry via LinkedIn to network and learn more.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Do my values align with the company’s culture?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://leaddev.com/professional-development/finding-company-inclusive-engineering-culture" rel="noopener noreferrer"&gt;Finding a company that's a good cultural fit&lt;/a&gt; is often as important as skills and experience. Misalignment with a company's core values and culture can lead to dissatisfaction and a lack of fulfillment. Before you start applying for jobs, take some time to reflect on your own values, work style preferences, and what you consider to be an ideal work environment.&lt;/p&gt;

&lt;p&gt;To pinpoint the cultural vibe of a company you're applying to, consider the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Company website and social media&lt;/strong&gt;: Look beyond the job description. Examine the company's mission statement, values, and how they present themselves online. What values do they emphasize?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Employee reviews&lt;/strong&gt;: Sites like Glassdoor can offer insights into the company culture from current and former employees. Look for patterns in the reviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;News and press releases&lt;/strong&gt;: These can give you an idea of the company's priorities and how they handle various situations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interview process&lt;/strong&gt;: Pay attention to how the company conducts its hiring process. Is it efficient and respectful of your time? This can be indicative of their overall organizational culture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Questions asked during interviews&lt;/strong&gt;: Are they focused solely on technical skills, or do they also inquire about your work style, collaboration preferences, and career goals?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Office environment&lt;/strong&gt;: If you have an on-site interview, observe the workspace. Is it open-plan or more traditional? How do employees interact?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Communication style&lt;/strong&gt;: Notice how quickly the company responds to your emails and the tone of their communications. This can reflect their internal communication culture.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;List the company's stated values (usually found on their website) and write a brief example of how you've demonstrated each in your career.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prepare three specific questions about company culture to ask during your interview.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write down three of your own core values and be prepared to discuss how they align with the company's culture.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. How can I differentiate myself from other applicants?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In a competitive job market, it's important to evaluate how your profile stacks up against other candidates. Highlighting your unique value proposition can make you a clearer frontrunner. Your unique value proposition is the combination of skills, experiences, and qualities that set you apart from other candidates and make you particularly well-suited for the role.&lt;/p&gt;

&lt;p&gt;Remember, your unique value proposition isn't just about being different; it's about being different in a way that's valuable to the employer. It should highlight not just what makes you unique, but why that uniqueness matters in the context of the job you're applying for.&lt;/p&gt;

&lt;p&gt;For example, if you're applying for a data scientist position at a competitive tech company, you might be up against candidates with PhDs, extensive publications, and experience at leading firms. To stand out, you could highlight unique projects where you've driven significant business impact, your ability to communicate complex data insights to non-technical stakeholders, or any relevant interdisciplinary skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Write a one-paragraph, unique value proposition statement highlighting your distinctive skills and experiences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify three quantifiable achievements from your career and frame them in terms of business impact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a brief "elevator pitch" that succinctly communicates your unique qualifications for the role.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What happens in the face of rejection?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Remember, rejection is not a reflection of your worth as an engineer. It's an opportunity to learn, adapt, and refine your approach. By incorporating both pre-mortem analysis and post-rejection reflection into your job search, you can turn setbacks into stepping stones for future success.&lt;/p&gt;

&lt;p&gt;If faced with rejection, consider these steps for a thorough retrospective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Request feedback&lt;/strong&gt;: If possible, ask the hiring manager or recruiter for specific feedback on your application or interview performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review your application&lt;/strong&gt;: Assess whether your resume, cover letter, and portfolio (if applicable) effectively highlighted your most relevant skills and experiences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reflect on the interview process&lt;/strong&gt;: Consider your performance in technical and behavioral interviews. Did you provide clear, concise examples that demonstrated your skills? Were there areas where you struggled?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assess your preparation&lt;/strong&gt;: Evaluate how well you researched the company and articulated your interest in the specific role.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evaluate your unique value proposition&lt;/strong&gt;: Did you effectively communicate what sets you apart from other candidates and connect your unique skills to the company's needs?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider external factors&lt;/strong&gt;: Acknowledge that sometimes rejections are due to factors beyond your control, but focus on what you can improve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Develop an improvement plan&lt;/strong&gt;: Based on your analysis, identify areas for improvement and set specific, actionable goals. For example, "I will improve my coding interview skills by completing one LeetCode challenge daily for 30 days" or "I will practice mock system design interviews weekly."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stay resilient&lt;/strong&gt;: &lt;a href="https://leaddev.com/personal-development/professional-growth-based-personal-passions" rel="noopener noreferrer"&gt;Maintain a growth mindset&lt;/a&gt; and view each application and interview as a learning experience. Keep your job search active and don't put all your hopes on one opportunity.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By systematically reviewing your experience and making targeted improvements, you can enhance your candidacy for future opportunities. Remember, many successful professionals have faced rejection on their career paths. The key is to learn, adapt, and persist in your job search journey.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on&lt;/em&gt; &lt;a href="https://leaddev.com/personal-development/6-questions-ask-yourself-applying-job" rel="noopener noreferrer"&gt;&lt;em&gt;LeadDev.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on Jul 30th, 2024.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you liked this post, 🗞 subscribe to my&lt;/em&gt; &lt;a href="https://incrementalist.substack.com/" rel="noopener noreferrer"&gt;&lt;em&gt;newsletter&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and&lt;/em&gt; &lt;a href="https://twitter.com/jesalg" rel="noopener noreferrer"&gt;&lt;em&gt;follow me&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on 𝕏!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>interview</category>
    </item>
    <item>
      <title>How to develop your skillset for the AI era</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Sat, 06 Apr 2024 20:24:54 +0000</pubDate>
      <link>https://dev.to/jesalg/how-to-develop-your-skillset-for-the-ai-era-fa6</link>
      <guid>https://dev.to/jesalg/how-to-develop-your-skillset-for-the-ai-era-fa6</guid>
      <description>&lt;h3&gt;
  
  
  How can engineers ensure their skills keep up with AI advancements?
&lt;/h3&gt;

&lt;p&gt;Over the last few years, we've watched AI take giant leaps in coding – from AI-assisted coding tools like &lt;a href="https://github.com/features/copilot"&gt;GitHub Co-Pilot&lt;/a&gt;  to the first AI engineer named &lt;a href="https://leaddev.com/process/what-devin-and-can-it-really-replace-developers"&gt;Devin&lt;/a&gt;. This explosion of AI capabilities has sparked endless debates, with the burning question on everyone's mind being: does software engineering still have a future?&lt;/p&gt;

&lt;p&gt;The short answer? Yes, but with a catch. The coding aspect of software engineering might become more automated, with AI taking over the bulk of code generation in the future. However, software engineering is more than code.&lt;/p&gt;

&lt;p&gt;Looking ahead, engineers who can &lt;a href="https://leaddev.com/team/how-business-alignment-works-high-performing-engineering-teams"&gt;zero in on business results&lt;/a&gt;, flex into other roles, and consistently deliver value will continue to be in demand despite AI as their impact extends beyond their coding ability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Think like an entrepreneur
&lt;/h2&gt;

&lt;p&gt;Simply being skilled in engineering won't cut it anymore. The real magic happens when you &lt;a href="https://leaddev.com/technical-decision-making/why-business-context-important-technical-decision-making"&gt;connect engineering efforts directly to business outcomes.&lt;/a&gt;  Embracing an entrepreneurial mindset equips engineers with a broad view that transcends the immediate technical challenges. In a world where AI can write code but cannot grasp the entire organization's nuances, its people, culture, and the broader environment it operates within, having an expansive vision becomes a critical advantage.&lt;/p&gt;

&lt;p&gt;Engineers who think like entrepreneurs understand that success in the AI era demands more than technical excellence. They have an intrinsic &lt;a href="https://leaddev.com/culture-engagement-motivation/how-drive-customer-focused-engineering-team"&gt;drive to create customer value&lt;/a&gt;, ensuring their engineering solutions are not just technically sound but also strategically aligned with business goals. They're the bridge between technical feasibility and product strategy, using their skills to steer product decisions in the right direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can you become an intrapreneur?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Understand the business&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt;  This will help you see where your projects fit within the larger picture and how they can influence the bottom line.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt; Dive into your company’s OKRs and KPIs to understand the measures of success. Participate in all-hands meetings, review annual reports, do competitor research, and stay informed on company strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Build customer empathy&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt;  Putting yourself in the customer's shoes will help you make informed engineering decisions that resonate with user needs and business goals.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt;  Explore business intelligence (BI) tools, user experience (UX) research, and analytics platforms to understand customer sentiment and user behavior. Additionally, listen to recorded sales calls, if available, to get a first-hand pulse of what the customer is thinking and how they are reacting to the product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. Incorporate insights into decision-making&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt;  Combining business context and data-driven insights in your decision-making process ensures that your engineering efforts are both technically sound and strategically aligned with business objectives.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt;  When proposing new features or improvements, connect it back to the business objectives, user feedback, and data analysis that support your suggestion. &lt;a href="https://leaddev.com/personal-development/how-engineering-leaders-can-write-better-proposals"&gt;Present your ideas&lt;/a&gt;  in a way that highlights their potential impact on both user satisfaction and business success.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By embracing these practices, you will become adept at navigating uncertainty, prioritizing projects that offer the highest return on investment, and persuasively advocating for your ideas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flex across functions
&lt;/h2&gt;

&lt;p&gt;Hand-in-hand with a business-centric approach is the need to wear multiple hats. The more versatile an engineer is, the more indispensable they become.&lt;/p&gt;

&lt;p&gt;In a world where specific tasks may eventually be automated by AI, human engineers' ability to synthesize information across domains, connect disparate ideas, and apply insights in new contexts sets them apart.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can you cultivate versatility?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Collaborate on the product roadmap&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt;  Gaining insight into your company's product goals and understanding how technology can drive these objectives is crucial as it broadens your perspective beyond just the technical aspects of your work.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt;  Volunteer to join roadmap planning sessions and offer a technical perspective on proposed features. Help with prioritization by assessing the technical effort required versus the projected business impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Contribute to design systems&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt;  Understanding design principles is crucial for creating technically sound products that provide a great user experience. A basic knowledge of UX/UI principles, color theory, and user-centric design can significantly improve the &lt;a href="https://leaddev.com/building-happy-teams/building-bridges-between-design-and-development"&gt;collaboration between engineering and design teams&lt;/a&gt;, leading to more cohesive and user-centric products.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt;  Work closely with designers to understand the core components of your product's UI/UX. Offer to develop a shared library of UI components or a style guide that codifies design principles and patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. Mentor across functions&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Why?&lt;/strong&gt; Sharing your expertise and insights across different functions not only helps others grow but also &lt;a href="https://leaddev.com/building-happy-teams/three-strategies-building-trust-your-engineering-teams"&gt;establishes trust&lt;/a&gt;, builds communication skills, and positions you as someone they can go to in the future.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;How?&lt;/strong&gt; Initiate informal coffee chats or lunch meetings with peers in different roles. Offer mentorship or advice, focusing on how their roles contribute to the business's success. This could involve guiding a designer on how to consider technical constraints in their designs or helping a marketing colleague understand the possibilities of the product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By actively engaging in these practices, you'll be well on your way to becoming a more versatile engineer. This cross-functional agility ensures that engineers can adapt to changes, foresee the implications of decisions across domains, and innovate at the intersections of disciplines, enabling them to provide value that no AI point solution can.&lt;/p&gt;

&lt;h2&gt;
  
  
  Carve your niche
&lt;/h2&gt;

&lt;p&gt;Grounded in a rich understanding of the broader context and enhanced by a diverse skill set, building specialization will ensure that engineers can bring unique insights, creativity, and solutions that AI cannot. It's the intersection of depth and breadth in an engineer's expertise that will define their irreplaceability in an AI-driven world.&lt;/p&gt;

&lt;p&gt;This is where Roger Martin's &lt;a href="https://rogermartin.medium.com/the-doctrine-of-relentless-utility-744b19854b7b"&gt;Doctrine of Relentless Utility&lt;/a&gt;  comes into play, a career strategy that focuses on finding your niche and monopolizing it.&lt;/p&gt;

&lt;p&gt;As you become more adept at navigating between different roles and perspectives, you'll be better positioned to uncover unique opportunities where your particular blend of skills and interests intersect with unmet needs within your team or organization.&lt;/p&gt;

&lt;p&gt;Aligning what you're good at with areas where you can make a significant impact allows you to establish a distinctive role that plays to your strengths and passions. This strategy promotes an active, value-driven approach, looking for ways to contribute beyond the usual scope of your role.&lt;/p&gt;

&lt;p&gt;For instance, let's say you have a knack for simplifying complex technical concepts into digestible content. Your niche could be bridging the gap between advanced technical knowledge and non-technical stakeholders or clients. Build on this by developing and sharing insights through blogs, workshops, or internal documentation that make these concepts accessible and engaging.&lt;/p&gt;

&lt;p&gt;Another example could be finding yourself at ease automating repetitive tasks that bog down your team. Your niche is identifying efficiency drains within your team's workflow by creating custom scripts or leveraging existing tools to automate these tasks. This way, you’ll be freeing up time for your team to focus on more impactful projects.&lt;/p&gt;

&lt;p&gt;By adopting the doctrine of relentless utility, you're not just filling a role; you're carving out an area of focus where you can truly excel and provide unmatched value.&lt;/p&gt;

&lt;p&gt;Remember, the niche you carve out today may not remain your niche tomorrow. Continuously explore, learn, and iterate, allowing your niche to evolve alongside your skills, interests, and the changing needs of your team. This ongoing journey of adaptation ensures your contributions remain impactful and aligned with both personal growth and team objectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;We find ourselves at a juncture similar to the one brought about by the printing press and the typewriter. The fears are familiar – concerns about job displacement, the devaluation of human expertise, and the uncertainties of a shifting professional landscape.&lt;/p&gt;

&lt;p&gt;Yet, if history has taught us anything, it’s that with disruption comes opportunity. Just as the printing press opened up the world of knowledge and the typewriter transformed the professional landscape, AI will redefine software engineering. It will challenge us to elevate our roles beyond coding, to think like entrepreneurs, and to build a more multi-faced identity.&lt;/p&gt;

&lt;p&gt;The future of software engineering isn't about clinging to the past but one where AI helps us build unimaginable things.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://leaddev.com/personal-development/how-develop-your-skillset-ai-era"&gt;LeadDev.com&lt;/a&gt; on April 4th, 2024.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you liked this post, 🗞 subscribe to my&lt;/em&gt; &lt;a href="https://incrementalist.substack.com/"&gt;&lt;em&gt;newsletter&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and&lt;/em&gt; &lt;a href="https://twitter.com/jesalg"&gt;&lt;em&gt;follow me&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on 𝕏!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Lessons in Leadership Excellence</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Wed, 27 Dec 2023 21:20:48 +0000</pubDate>
      <link>https://dev.to/jesalg/lessons-in-leadership-excellence-1p0d</link>
      <guid>https://dev.to/jesalg/lessons-in-leadership-excellence-1p0d</guid>
      <description>&lt;h3&gt;
  
  
  Personal Insights on Building Exceptional Teams
&lt;/h3&gt;

&lt;p&gt;In a world where  &lt;a href="https://hbr.org/2015/06/75-of-cross-functional-teams-are-dysfunctional"&gt;75% of cross-functional teams are dysfunctional&lt;/a&gt;, mastering the art of leadership is not just a skill but a necessity.&lt;/p&gt;

&lt;p&gt;I’ve been fortunate enough to lead teams in various environments, from small start-ups to large organizations, and along the way, I’ve received consistently positive feedback on my teams' camaraderie, cohesion, and performance. That and hearing many times from my direct reports that I’ve been one of the best managers they’d had made me wonder what exactly was working well.&lt;/p&gt;

&lt;p&gt;I don’t think I was super deliberate about it, to be honest. I just did what felt right intuitively over time. Maybe my experience being on the engineer manager  &lt;a href="https://charity.wtf/tag/pendulum/"&gt;pendulum&lt;/a&gt;  allowed me to keep my ear to the ground and do what I would have wanted to see from my manager as an IC.&lt;/p&gt;

&lt;p&gt;In any case, this is my attempt at writing down some of my implicit strategies into an explicit guidebook for myself and others to reference and follow. This is not meant to be a comprehensive resource such as  &lt;a href="https://maven.com/dave-kline/mgmt-accelerator"&gt;MGMT Accelerator&lt;/a&gt;  or  &lt;a href="https://a.co/d/bip1R0k"&gt;The 15 Commitments of Conscious Leadership&lt;/a&gt;, which I highly recommend, but just things I found putting the most amount of emphasis on. I’ll also note that you don’t need to be a manager to find this relevant. Effective leadership is a key skill for everyone to master.&lt;/p&gt;

&lt;p&gt;So, after doing some reflection, I was able to boil down this essence of effective leadership to six critical elements, which I like to call the ‘6 Cs’. In this post, I’ll share these key elements, each backed by practical strategies and real-life lessons that can redefine how you lead. So, without further adieu, let’s dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Communication
&lt;/h2&gt;

&lt;p&gt;Transparent and authentic communication is the cornerstone of effective leadership. It’s not merely about conveying information but about involving team members in decision-making processes, even when ideas are still in their formative stages. This practice fosters a sense of ownership and collaboration.&lt;/p&gt;

&lt;p&gt;This also extends to offering constructive feedback, where I aim for open and candid conversations without the proverbial “shit sandwich.” This authentic management style fosters workplace transparency, clarity, and directness. It empowers employees to clearly identify areas where they can make the most meaningful contributions to the team’s success.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Some professionals say you need to have a praise-to-criticism ratio of 3:1, 5:1, or even 7:1. Others advocate the “feedback sandwich” — opening and closing with praise, sticking some criticism in between. I think venture capitalist Ben Horowitz got it right when he called this approach the “shit sandwich.” Horowitz suggests that such a technique might work with less-experienced people, but I’ve found the average child sees through it just as clearly as an executive does. — Kim Malone Scott, Radical Candor&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Hold regular  &lt;a href="https://lattice.com/library/the-ultimate-guide-to-one-on-ones"&gt;one-on-one meetings&lt;/a&gt;  with a running agenda to discuss your team’s ideas and concerns.&lt;/li&gt;
&lt;li&gt;  Establish a culture of  &lt;a href="https://positivepsychology.com/active-listening-techniques/"&gt;active listening&lt;/a&gt;  where team members feel heard and valued.&lt;/li&gt;
&lt;li&gt;  Leverage collaborative tools that allow team members to contribute to decisions and ask questions async.&lt;/li&gt;
&lt;li&gt;  Establish a career plan document where you keep track of goals, ideas, and growth conversations and review it at least on a monthly basis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Do you regularly cascade relevant strategy and business updates to your team members from the company leadership?&lt;/li&gt;
&lt;li&gt; Do your team members feel like they are part of shaping the ideas from the early stages and are involved in the decision-making process?&lt;/li&gt;
&lt;li&gt; Do your team members regularly receive ongoing feedback rather than just surprising feedback during formal touchpoints like performance review cycles?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Connection
&lt;/h2&gt;

&lt;p&gt;Connection is built on the foundation of authentic and transparent communication. Team cohesion and trust are something I value deeply, and I aim to create an environment that values inclusivity, empowerment, and psychological safety.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A team is not a group of people who work together. A team is a group of people who trust each other.— Simon Sinek, Leaders Eat Last&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve used many rituals and practices, such as retrospectives, all hands, happy hours, pulse surveys, etc., with the aim of building connection and trust. No matter the ritual, it comes down to ensuring that every team member’s voice is heard and respected.&lt;/p&gt;

&lt;p&gt;Creating opportunities for the team to bond outside of work is also particularly effective. This includes team happy hours, get-to-know sessions where team members share their passions and interests, and even occasional team retreats to strengthen in-person connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Schedule regular team retrospectives to examine what’s going well and what can be improved. Commit to action items based on the feedback and continue to iterate.&lt;/li&gt;
&lt;li&gt;  Foster mentorship and peer support within your team.&lt;/li&gt;
&lt;li&gt;  Encourage cross-functional collaboration to build relationships with other teams.&lt;/li&gt;
&lt;li&gt;  Share stories of successful team collaborations and their impact on projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Do your team members believe they have agency in shaping how the team operates?&lt;/li&gt;
&lt;li&gt; Is there a mechanism in place to continually examine team processes and iterate based on feedback?&lt;/li&gt;
&lt;li&gt; Does the team regularly interact with each other in informal settings such as happy hours or retreats?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Composure
&lt;/h2&gt;

&lt;p&gt;Amidst challenges and crises, maintaining composure is essential. Using the team as an outlet for venting emotions is tempting, but this can be counterproductive. Instead, I’ve learned to adopt a methodical approach: analyzing the situation, acknowledging emotions, outlining a clear plan, and providing transparent updates.&lt;/p&gt;

&lt;p&gt;In my experience, team members look to their leaders as beacons of stability during turbulent times. They appreciate leaders who don’t just react emotionally but engage in constructive problem-solving. In fact,  &lt;a href="https://www.forbes.com/sites/tracybrower/2023/01/29/managers-have-major-impact-on-mental-health-how-to-lead-for-wellbeing/?sh=4c04eb3a2ec1"&gt;research&lt;/a&gt;  suggests that for almost 70% of people, their manager has more impact on their mental health than their therapist or their doctor.&lt;/p&gt;

&lt;p&gt;When interpersonal disagreements or conflicts arise, lean into curiosity to understand why. This is often not an easy thing to do. In her book “Dare to Lead,” Brown uses the term “rumble” to describe a discussion or conversation that is defined by a commitment to lean into vulnerability, stay curious and generous, and be fearless in owning our parts.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A rumble is a discussion, conversation, or meeting defined by a commitment to lean into vulnerability, to stay curious and generous, to stick with the messy middle of problem identification and solving, to take a break and circle back when necessary, to be fearless in owning our parts, and, as psychologist Harriet Lerner teaches, to listen with the same passion with which we want to be heard. More than anything else, when someone says, “Let’s rumble,” it cues me to show up with an open heart and mind so we can serve the work and each other, not our egos.―Brené Brown, Dare to Lead: Brave Work. Tough Conversations. Whole Hearts&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;She believes that during moments when we’re pulled between our fear and our call to courage, we need shared language, skills, tools, and daily practices that can support us through the rumble.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Establish a culture of practicing  &lt;a href="https://positivepsychology.com/non-violent-communication/"&gt;non-violent communication&lt;/a&gt;  or  &lt;a href="https://ofkin.com/learning-how-to-say-hard-things-rumbling-with-an-open-heart-and-mind/"&gt;The Story Rumble&lt;/a&gt;  to help the team effectively and compassionately navigate difficult conversations and conflicts.&lt;/li&gt;
&lt;li&gt;  Create space to practice  &lt;a href="https://positivepsychology.com/group-mindfulness-activities/"&gt;mindfulness exercises&lt;/a&gt;  as a team to help manage stress during challenging times.&lt;/li&gt;
&lt;li&gt;  Run  &lt;a href="https://www.atlassian.com/team-playbook/plays/pre-mortem"&gt;premortems&lt;/a&gt;  ahead of major milestones and launches to avoid last-minute surprises and stressful fire drills.&lt;/li&gt;
&lt;li&gt;  Establish an  &lt;a href="https://increment.com/on-call/on-call-at-any-size/"&gt;on-call rotation&lt;/a&gt;  with predefined roles and responsibilities and detailed runbooks to handle emergencies.&lt;/li&gt;
&lt;li&gt;  Encourage the team to take time off after intense periods and plan for their absence to allow them to recharge without pressure or guilt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Does your team feel that they have reliable support during challenging times?&lt;/li&gt;
&lt;li&gt; Do you maintain composure and engage in constructive problem-solving rather than venting emotions during crises?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Curiosity
&lt;/h2&gt;

&lt;p&gt;Fostering a culture of continuous learning has been a personal passion of mine. I’ve encouraged my team to embark on a journey of exploration, whether through experimentation, reading, or mentorship, to build their personal mastery. This means holding brown bag sessions and providing opportunities for team members to work on experimental ideas, fostering a culture of perpetual learning.&lt;/p&gt;

&lt;p&gt;I’ve also seen the importance of extending this curiosity to understand our customers and the business deeply. To truly solve their problems, the team needs to immerse themselves in the customer’s perspective and become students of the business.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The highest quality of thinking cannot emerge without learning. Learning can’t happen without mistakes.― Liz Wiseman, Multipliers: How the Best Leaders Make Everyone Smarter&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Organize regular “knowledge-sharing” or “brown bag” sessions where team members present on topics of interest or discuss industry-related books or articles.&lt;/li&gt;
&lt;li&gt;  Set aside time for team members to explore new technologies, ideas, or tools relevant to their work.&lt;/li&gt;
&lt;li&gt;  Create opportunities for the team to interact directly or indirectly with customers by fielding support cases or listening in on sales calls.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Do you create space for the team to experiment and fail in their learning journey without it being held against them?&lt;/li&gt;
&lt;li&gt; Does the team interact with its customers on a regular basis?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  5. Clarity
&lt;/h2&gt;

&lt;p&gt;Clarity serves as the guiding light in decision-making. It’s not just about relying on data; it’s about relying on the right data.&lt;/p&gt;

&lt;p&gt;I have found setting ambitious yet achievable goals, defining clear KPIs, and diligently tracking progress have created an immense amount of clarity for the team. In addition, we created a long-term roadmap, acknowledging its inherent uncertainty, and broke it down into detailed plans every quarter to create a seamless runway for execution.&lt;/p&gt;

&lt;p&gt;This clarity extends to written communication, where everything from team working norms to schedules and expectations is documented. Having an operating playbook in place ensures that new team members can seamlessly integrate into the team and hit the ground running.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ideas are easy. Execution is everything. — John Doerr, Measure What Matters&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Leverage  &lt;a href="https://untools.co/decision-making"&gt;thinking tools and frameworks&lt;/a&gt;  to help you and your team solve problems, make decisions, and understand systems.&lt;/li&gt;
&lt;li&gt;  Create a team charter that outlines norms, expectations, and communication guidelines.&lt;/li&gt;
&lt;li&gt;  Use project management tools to track progress transparently and provide visibility into goals.&lt;/li&gt;
&lt;li&gt;  Create an  &lt;a href="https://diataxis.fr/"&gt;organized&lt;/a&gt;  repository for regularly updated documentation, making it easy to access important information.&lt;/li&gt;
&lt;li&gt;  Ensure new team members have a clear checklist of things they can accomplish or learn in the first 30, 60, and 90 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Does your team possess a clear operating playbook, ensuring seamless onboarding for newcomers?&lt;/li&gt;
&lt;li&gt; Are goals and KPIs well-defined, and is progress diligently tracked?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  6. Celebration
&lt;/h2&gt;

&lt;p&gt;Recognizing and celebrating achievements, no matter their scale, injects joy into the workplace. Acknowledging accomplishments through company-wide accolades or simple ‘kudos’ fosters a sense of pride and motivation.&lt;/p&gt;

&lt;p&gt;69% of employees state they would work harder if they felt their efforts were better recognized — Zippia,  &lt;a href="https://www.zippia.com/advice/leadership-statistics/"&gt;35+ Powerful Leadership Statistics [2023]: Things All Aspiring Leaders Should Know&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Leadership is not about being in charge. It is about taking care of those in your charge. — Simon Sinek, Leaders Eat Last&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Key practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Establish a practice to regularly recognize people behind their exceptional contributions and celebrate their impact.&lt;/li&gt;
&lt;li&gt;  Host regular team celebrations for project milestones, both big and small, and send out swag and small tokens of appreciation.&lt;/li&gt;
&lt;li&gt;  Establish a public forum for team members to express gratitude and recognition for their colleagues.&lt;/li&gt;
&lt;li&gt;  Establish a public forum for sharing success stories highlighting their positive impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Questions to measure success:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Is team spirit consistently high, and do team members eagerly anticipate celebrating successes together?&lt;/li&gt;
&lt;li&gt; Are creative ways employed to foster team bonding, even in distributed work settings?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;I hope you found valuable takeaways from these 6 Cs. These principles aren’t just personal opinions; they’re insights drawn from practical experiences and even backed by research at BetterUp, which happens to be my former employer and a place where I’d like to think I earned my stripes for leadership:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We found that managers who can strengthen their  &lt;strong&gt;coaching&lt;/strong&gt;  and  &lt;strong&gt;problem solving&lt;/strong&gt;  skills, be more  &lt;strong&gt;authentic&lt;/strong&gt;  with their teams, and work to  &lt;strong&gt;recognize&lt;/strong&gt;  employee contributions are riding a wave of effectiveness to the bank: Their organizations experience a +400% return on assets, +30% EPS 5-year growth, +17% boost in innovation, and more. —  &lt;a href="https://www.betterup.com/briefing/issue-1/effective-management"&gt;Mindsets on the move: what effective management looks like today, BetterUp Briefing&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You could use these 6 Cs as a way to conduct a health check for your team and see where you need to focus your energies. I would love to hear your thoughts and experiences as you apply the 6 Cs to your leadership journey — please feel free to share your feedback and stories!&lt;/p&gt;




&lt;p&gt;If you liked this post, 🗞 subscribe to my &lt;a href="https://incrementalist.substack.com/"&gt;newsletter&lt;/a&gt; and &lt;a href="https://twitter.com/jesalg"&gt;follow me&lt;/a&gt; on 𝕏!&lt;/p&gt;

</description>
      <category>career</category>
      <category>leadership</category>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>How to make your ideas stick</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Fri, 08 Dec 2023 16:00:00 +0000</pubDate>
      <link>https://dev.to/jesalg/how-to-make-your-ideas-stick-nj</link>
      <guid>https://dev.to/jesalg/how-to-make-your-ideas-stick-nj</guid>
      <description>&lt;h3&gt;
  
  
  Effective proposal writing techniques for engineering leaders
&lt;/h3&gt;




&lt;p&gt;As an engineering leader, you’ve likely faced the challenge of writing proposals for ideas you’re passionate about, whether it’s drafting design docs, request for comments (RFCs), memos, or even slide decks. The format might change depending on context, but the fundamental challenge remains: how do we make our ideas resonate?&lt;/p&gt;

&lt;p&gt;Throughout my career, I’ve witnessed numerous promising ideas fall by the wayside or need a lot of back and forth due to a lack of clear articulation. The culprit? Often, a missing ingredient from the six crucial elements of a persuasive proposal.&lt;/p&gt;

&lt;p&gt;Knowing how to craft proposals that communicate and inspire action will ensure that your next proposal isn’t just read, but acted upon.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Establish context
&lt;/h3&gt;

&lt;p&gt;At the heart of a compelling proposal lies the establishment of mutual understanding. Begin by elucidating the “why.” Resist the urge to dive straight into the solution.&lt;/p&gt;

&lt;p&gt;For instance, if you’re proposing a shift in system architecture, listing the current system’s flaws might seem intuitive. However, the real starting point should be “Why now?” What future changes do you foresee that necessitate this shift? Relate your proposal to your organization’s KPIs, OKRs, or overarching strategy.&lt;/p&gt;

&lt;p&gt;Drawing inspiration from Stephen Covey’s &lt;em&gt;The 7 Habits of Highly Effective People&lt;/em&gt;, it’s paramount to prioritize understanding before seeking to be understood. By ensuring your proposal resonates with your audience’s concerns, you pave the way for consensus.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example of establishing context in a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;With the rapid growth of our user base and the increasing complexity of our application, our existing architecture is becoming a bottleneck. Recent post-mortem analyses of outages have pointed to scalability and tight coupling issues.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our company’s OKRs aim for a 20% increase in user engagement and a 30% growth in active users over the next year. To achieve this, we need an architecture that is resilient, scalable, and can be iterated upon quickly.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Identify the problem
&lt;/h3&gt;

&lt;p&gt;Once mutual understanding is established, it’s imperative to identify the core issue or opportunity your proposal targets.&lt;/p&gt;

&lt;p&gt;Begin by articulating the current state, grounding your discussion with metrics and data. Subsequently, spotlight the primary areas of concern with the existing situation and, based on this, formulate your hypothesis.&lt;/p&gt;

&lt;p&gt;Overall, you should seek to emphasize the gravity and ramifications of the problem, positioning yourself as the authority spotlighting an urgent issue.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example of identifying the problem in a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Current state:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our monolithic application has been the backbone of our services for the past five years. During this time, we’ve seen:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;User growth&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: A 300% increase in active users.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Feature expansion&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: The introduction of 50+ new features, increasing the complexity of our codebase.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Deployment frequency&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: An average of one thousand deployments per month, with each deployment introducing an average of three new features or improvements.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;While this growth and activity indicate a thriving product, they’ve also introduced challenges:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1.&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Latency concern&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;s: Our API response times have gradually increased over the past year. During high-traffic periods, we’ve observed a 30% increase in API response times compared to the previous year, impacting user experience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Tight coupling&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: The intertwined nature of our services has become more evident. 20% of new feature releases in the past six months have resulted in regressions in unrelated areas, indicating a lack of modularity and separation of concerns.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Deploy time&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: The complexity of our application has affected our deployment times. Each deployment now takes an average of one hour, a 25% increase from the previous year. This affects our ability to swiftly deliver value to our users and&lt;/em&gt; &lt;a href="https://leaddev.com/tech/solving-mean-time-repair-problem"&gt;&lt;em&gt;maintain a reasonable MTTR&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Hypothesis&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;:&lt;/em&gt; &lt;a href="https://leaddev.com/tech/when-migrate-monolithic-distributed-frontend-architecture"&gt;&lt;em&gt;By migrating to a microservices architecture&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, we can achieve faster deployment cycles, better scalability, and independent service evolutions, leading to improved uptime and stable user experience.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Present options
&lt;/h3&gt;

&lt;p&gt;When proposing solutions, it’s vital to consider various options. As Chip Heath and Dan Heath advise in &lt;em&gt;Decisive: How to Make Better Choices in Life and Work&lt;/em&gt;, follow the W.R.A.P process: widen your options, reality-test your assumptions, attain distance before deciding, and prepare to be wrong.&lt;/p&gt;

&lt;p&gt;The W.R.A.P process will help you avoid &lt;a href="https://hbr.org/1998/09/the-hidden-traps-in-decision-making-2"&gt;common pitfalls in decision-making&lt;/a&gt;, such as &lt;a href="https://en.wikipedia.org/wiki/Framing_effect_%28psychology%29"&gt;the framing trap&lt;/a&gt;, confirming-evidence trap, overconfidence trap, and forecasting trap.&lt;/p&gt;

&lt;p&gt;This also builds credibility as an honest analysis rather than a biased proposal. This stage is about demonstrating your critical thinking skills.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example of presenting options in a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Option 1&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Incremental refactoring&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Pros: Lower immediate risk, can be done during regular sprints.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Cons: Longer overall transition period, potential for accumulating tech debt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Option 2&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Big bang rewrite&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Pros: Clean slate, can design with best practices from the start.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Cons: High risk, requires significant resources, longer time to see benefits.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Option 3&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Hybrid approach (starting with core services and expand outwards)&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Pros: Balances risk and allows for learning and iteration.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Cons: Requires careful planning and coordination.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. Create a roadmap
&lt;/h3&gt;

&lt;p&gt;With a recommended solution, it’s time to detail the implementation. Envision your proposal as a meticulously planned sequence.&lt;/p&gt;

&lt;p&gt;Create a timeline detailing the steps, assign responsibilities, and set expectations for each stage.&lt;/p&gt;

&lt;p&gt;Like a conductor leading an orchestra, your proposal should coordinate a unified effort toward the intended result.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example of outlining a roadmap in a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Phase 1&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Identify and isolate core services.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Duration: 1 month&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Responsible: Architecture guild&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Phase 2&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Develop the first set of microservices and integrate them with the existing system.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Duration: 3 months&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Responsible: Teams A and B&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Phase 3&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Gradual rollout to a subset of users and gather feedback.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Duration: 1 month&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Responsible: QA team, DevOps, and user feedback group&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Phase 4&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Full transition and decommissioning of old components.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Duration: 2 months&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Responsible: All engineering teams&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  5. Highlight risks
&lt;/h3&gt;

&lt;p&gt;Analyze potential risks and challenges associated with the proposal, as well as the likelihood and impact of those risks. Provide strategies or plans to mitigate these risks, showing preparedness and foresight.&lt;/p&gt;

&lt;h4&gt;
  
  
  Examples of highlighting risk in a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Risk&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Integration challenges with existing systems&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Likelihood&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: High&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Impact&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Moderate&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Mitigation&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Begin with a pilot project focusing on one or two core services to understand integration pain points. Use this pilot to develop best practices for subsequent integrations.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Risk&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Potential downtime during transition&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Likelihood&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Medium&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Impact&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: High&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Mitigation&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Schedule migrations during off-peak hours and ensure rollback strategies are in place. Communicate potential downtimes to stakeholders well in advance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Risk&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Team’s learning curve with new architecture&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Likelihood&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: High&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Impact&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Medium&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Mitigation&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Invest in training sessions and workshops focused on microservices best practices. Pair experienced team members with those less familiar during the initial phases.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Risk&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Increased initial costs&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Likelihood&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Medium&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Impact&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Medium&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Mitigation&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: While there might be an upfront cost due to the transition, the long-term benefits in terms of scalability, maintainability, and faster deployment cycles are expected to offset these initial expenses. Regular cost-benefit analyses will be conducted to ensure we remain on track.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Risk&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Complexity in monitoring and logging across services&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Likelihood&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Low&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Impact&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: High&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Mitigation&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;: Adopt centralized logging and monitoring solutions that provide a holistic view of the entire system. This will aid in quicker issue detection and resolution.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  6. Prompt action
&lt;/h3&gt;

&lt;p&gt;Summarize the proposal’s main points and clearly state what you’re asking stakeholders to do next, whether it’s providing feedback, giving approval, or allocating resources.&lt;/p&gt;

&lt;p&gt;Include any additional information, data, charts, or references that support the proposal but might be too detailed for the main body. This provides a deeper dive for those interested.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example concluding aspect of a proposal:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;In light of the challenges posed by our current monolithic architecture and the company’s ambitious growth targets, transitioning to a microservices approach emerges as a strategic imperative. The hybrid approach, which combines the strengths of incremental refactoring and a more comprehensive rewrite, offers a balanced and pragmatic path forward.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We’ve identified potential risks associated with this transition and have proposed robust mitigation strategies to address them. The success of this initiative, however, hinges on a collaborative effort,&lt;/em&gt; &lt;a href="https://leaddev.com/team/five-tips-help-lead-large-cross-functional-collaborations"&gt;&lt;em&gt;cross-functional alignment&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, and shared commitment.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next Steps:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Feedback round: We invite stakeholders to review this proposal and provide feedback by [specific date].&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pilot execution: Post feedback; if there are no strong objections or concerns, we will commence the pilot project.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We’re at a pivotal juncture, and the decisions we make now will shape our product and capabilities for years to come. Let’s collaborate, innovate, and steer our organization towards a future-ready architecture.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;In conclusion, crafting a persuasive proposal goes beyond organizing information in a digestible pyramid structure. It’s about weaving a narrative that resonates with the organization’s core objectives, prospecting a path forward, anticipating risks, and compelling stakeholders to take action.&lt;/p&gt;

&lt;p&gt;When writing your next proposal, see it as more than a document. It’s a powerful call to action, a catalyst for change, and a testament to your leadership acumen. The quality of your proposals can shape the trajectory of your projects, teams, and, in the grander scheme, your evolution as an engineering leader.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on&lt;/em&gt; &lt;a href="https://leaddev.com/personal-development/how-engineering-leaders-can-write-better-proposals"&gt;&lt;em&gt;LeadDev.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on Nov 29th, 2023.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you liked this post, 🗞 subscribe to my &lt;a href="https://incrementalist.substack.com/"&gt;newsletter&lt;/a&gt; and &lt;a href="https://twitter.com/jesalg"&gt;follow me&lt;/a&gt; on 𝕏!&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>writing</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>The Role of a System Architect</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Tue, 08 Aug 2023 19:06:02 +0000</pubDate>
      <link>https://dev.to/jesalg/the-role-of-a-system-architect-1pgl</link>
      <guid>https://dev.to/jesalg/the-role-of-a-system-architect-1pgl</guid>
      <description>&lt;h4&gt;
  
  
  Unraveling growth challenges: Could a system architect be the solution?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AO6-QPsD1Zif2WQ4t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AO6-QPsD1Zif2WQ4t.jpg"&gt;&lt;/a&gt;&lt;br&gt;Serverless Architecture from &lt;a href="https://classicprogrammerpaintings.com/post/142748219994/serverless-architecture-joaqu%C3%ADn-torres-garc%C3%ADa" rel="noopener noreferrer"&gt;Classic Programmer Paintings&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;Most startups that go through hyper-growth tend to face the inevitable &lt;a href="https://martinfowler.com/articles/bottlenecks-of-scaleups/" rel="noopener noreferrer"&gt;Bottlenecks of Scaleups&lt;/a&gt;, as masterfully described by ThoughtWorks.&lt;/p&gt;

&lt;p&gt;Having navigated the hyper-growth journey myself, I’ve witnessed firsthand how these technical bottlenecks can impede business progress, causing churn and chaos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AqhvkyH7yaFLNw4vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AqhvkyH7yaFLNw4vd.png"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://martinfowler.com/articles/bottlenecks-of-scaleups/" rel="noopener noreferrer"&gt;Bottlenecks of Scaleups&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;In light of these challenges, I wondered if a system architect's role could hold the key to identifying and circumventing these bottlenecks and reducing complexity like this infamous Amazon Deathstar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AqkkDJfEzbT_H0qtJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AqkkDJfEzbT_H0qtJ.png"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://twitter.com/Werner/status/741673514567143424" rel="noopener noreferrer"&gt;Amazon internal service dependency visualization&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;To that end, this article explores the benefits, operating philosophy, guiding principles, job description, career progression, success criteria, and implementation approaches for the role of a system architect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of having a System Architect
&lt;/h3&gt;

&lt;p&gt;My hypothesis is rooted in the belief that a clear and purposeful approach to technical architecture can prevent false starts and accumulating tech debt.&lt;/p&gt;

&lt;p&gt;Picture a system architect whose sole responsibility is to observe the big picture and facilitate knowledge sharing across teams, breaking down silos for better collaboration.&lt;/p&gt;

&lt;p&gt;This individual would need to possess exceptional skills in designing and managing the overall technical architecture of a system. Their role includes assisting teams in defining system components, services, and interactions.&lt;/p&gt;

&lt;p&gt;The benefits of having a system architect would ultimately translate into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Improved alignment and coordination&lt;/strong&gt; — Foster a common goal and architecture across teams, leading to more efficient and effective development.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Enhanced technical expertise &lt;/strong&gt;— Offer a deep understanding of system design and architecture, guiding and mentoring other engineering team members to elevate the organization’s overall technical capabilities.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Improved quality and performance &lt;/strong&gt;— Co-create a well-designed system architecture to boost performance and reliability, resulting in quicker time-to-value, better user experiences, and heightened customer satisfaction.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Reduced technical debt &lt;/strong&gt;— Proactively manage system architecture to prevent tech debt buildup, saving time and resources in the long run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Harmonizing With the Agile Philosophy
&lt;/h3&gt;

&lt;p&gt;You may be curious how this role fits into the agile methodology that many organizations follow. On the surface, the role of an architect may be antithetical to being agile.&lt;/p&gt;

&lt;p&gt;However, several sources discuss the role of an architect in an agile environment. For example, &lt;a href="https://www.agilearchitecture.org/" rel="noopener noreferrer"&gt;Agile Architecture&lt;/a&gt; describes it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The role of the architect in an agile project is to provide guidance and direction to the team on the technical aspects of the project. The architect is not a dictator, but rather a facilitator and coach, who helps the team find the best solutions to their technical challenges.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Similarly, the &lt;a href="https://www.scrumalliance.org/" rel="noopener noreferrer"&gt;Scrum Alliance&lt;/a&gt; discusses the role, stating that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[the architect] is responsible for guiding the team to make technical decisions that align with the project’s goals, scope, and delivery schedule. They should be able to communicate the technical vision to the team and help the team understand how their work contributes to that vision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Large-Scale Scrum (&lt;a href="https://less.works/" rel="noopener noreferrer"&gt;LeSS&lt;/a&gt;) Framework’s view on the architecture role is more philosophically aligned with how I see the role. The following statements on the &lt;a href="https://less.works/less/technical-excellence/architecture-design" rel="noopener noreferrer"&gt;Architecture &amp;amp; Design&lt;/a&gt; page in the chapter “Technical Excellence” shape their opinion about software architects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The sum of all the source code is the true design blueprint or software architecture.&lt;/li&gt;
&lt;li&gt;  The real software architecture evolves (better or worse) every day of the product, as people do programming.&lt;/li&gt;
&lt;li&gt;  The real living architecture needs to be grown daily through programming by master programmers.&lt;/li&gt;
&lt;li&gt;  A software architect who is not in touch with the evolving source code of the product is out of touch with reality.&lt;/li&gt;
&lt;li&gt;  Every programmer is some kind of architect–whether wanted or not. Every act of programming is some kind of architectural act–good or bad, small or large, intended or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LeSS promotes the idea that architects are regular team members. They should participate in hands-on engineering and especially mentoring through design workshops and pair programming. LeSS warns against architecture astronauts (a.k.a. PowerPoint architects):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These are the people I call Architecture Astronauts. It’s very hard to get them to write code or design programs, because they won’t stop thinking about the architecture… They tend to work for really big companies that can afford to have lots of unproductive people with really advanced degrees that don’t contribute to the bottom line.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A1uV196NlsGkpZQV3" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A1uV196NlsGkpZQV3"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.comicagile.net/comic/the-architect/" rel="noopener noreferrer"&gt;#211 — The Architect by Comic Agile&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Guiding Principles
&lt;/h3&gt;

&lt;p&gt;Now that we have some grounding philosophy behind a system architect’s role in an agile organization, let’s discuss the guiding principles of this role.&lt;/p&gt;

&lt;p&gt;For this, we don’t need to reinvent the wheel. Principles proposed by &lt;a href="https://www.agilearchitect.org/agile/principles.htm" rel="noopener noreferrer"&gt;Agile Architecture&lt;/a&gt; hold strong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Value people &lt;/strong&gt;— You must recognize the value and importance of people and their expertise. No dictators or PowerPoint architects.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Communicate! &lt;/strong&gt;— Communicate effectively with all stakeholders and tailor information to their needs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Less is more&lt;/strong&gt; — Minimize complexity and strive for simplicity in design and communication.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Embrace change&lt;/strong&gt; — Be prepared for change and welcome it as an opportunity for competitive advantage.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Choose the right solution for the enterprise &lt;/strong&gt;— Customer centricity. Make sure the solution is right by verifying it with the customer.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Deliver quality&lt;/strong&gt; — Foster a culture of craftspersonship and sustainable development at a pace that can be maintained indefinitely.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Model and document in an Agile fashion &lt;/strong&gt;— Leverage proven and effective modeling/mapping and documentation strategies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Carving the Job Description
&lt;/h3&gt;

&lt;p&gt;Equipped with the guiding philosophy and principles, if you were to recruit someone for this role, let’s see what the job description could look like. A system architect typically collaborates with other teams in several ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Guide system design and architecture&lt;/strong&gt; — Provide guidance and expertise to other teams on how to design and build systems that align with the overall architecture of the organization. This can involve working closely with teams to understand their needs and requirements and recommending the best approaches.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Review and provide feedback for technical designs&lt;/strong&gt; — Review and provide timely feedback for RFCs proposed by teams. This can involve evaluating the proposed designs to ensure they align with the system’s overall architecture and do not introduce any potential issues or technical debt.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Help resolve technical challenges&lt;/strong&gt; — Help teams resolve technical challenges during development. This may involve providing guidance on approaching a particular problem or working with the team to develop a solution.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Participate in planning and estimation&lt;/strong&gt; — Participate in planning and estimation meetings with other teams. This can involve providing input on the technical feasibility of proposed features and estimates for the time and resources required to implement them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, the specific ways in which a system architect collaborates with other teams will vary depending on the needs and goals of the initiative and the members working on it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AjMwfBXhfe9ITr59h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AjMwfBXhfe9ITr59h.jpg"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://www.leanix.net/en/blog/enterprise-architecture-footprints-humor" rel="noopener noreferrer"&gt;Enterprise Architecture Footprints&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Navigating Career Progression
&lt;/h3&gt;

&lt;p&gt;Now that we have a job description, one may wonder how someone would become an architect and what would their career trajectory look like.&lt;/p&gt;

&lt;p&gt;Various avenues exist for senior engineers to advance in their careers. On the individual contributor (IC) path, adding a system architect role alongside roles like SRE, Data Engineer, and Staff Engineer is a viable option.&lt;/p&gt;

&lt;p&gt;Illustrations below help visualize what that may look like courtesy of &lt;a href="https://codecapsule.com/2021/07/15/the-skills-map-of-senior-tech-career-progression/" rel="noopener noreferrer"&gt;CodeCapsule&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AuhZETZKCGdl_x4N6" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AuhZETZKCGdl_x4N6"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://codecapsule.com/2021/06/15/career-growth-what-paths-after-senior-engineer/" rel="noopener noreferrer"&gt;Career Growth: What Paths After Senior Engineer&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AT1ONpFgDWtPy7x1c" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AT1ONpFgDWtPy7x1c"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://codecapsule.com/2021/07/15/the-skills-map-of-senior-tech-career-progression/" rel="noopener noreferrer"&gt;The Skills Map of Senior Tech Career Progression&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;Note the key difference between an architect and staff/principal engineers: while the latter focus on ensuring their teams’ work functions correctly, architects take a broader view, looking after how all the pieces fit together.&lt;/p&gt;

&lt;p&gt;Before you ask, yes, staff and principal engineers also do think about how their work fits into the broader ecosystem, but most often, they don’t consider that their full-time concern.&lt;/p&gt;

&lt;p&gt;This role sits at the intersection of ‘What’ (is it we are trying to do/solve) and ‘How’ (are we going to approach the design), and ‘Why’ (are we doing it this way) as described by &lt;a href="https://softwarearchitecturezen.blog/about/" rel="noopener noreferrer"&gt;Peter Cripps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A92UcCEwKzyhyC6rj" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A92UcCEwKzyhyC6rj"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://softwarearchitecturezen.blog/2010/07/05/on-thinking-architecturally/" rel="noopener noreferrer"&gt;On Thinking Architecturally&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;Becoming an architect also has to do with having increased communication and relationship skills, on top of solid tech skills, as ‌architects have to deal with and influence larger groups of people across multiple teams and organizations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measuring Success
&lt;/h3&gt;

&lt;p&gt;Introducing the role of a system architect into an organization is a strategic move aimed at improving the technical architecture, fostering collaboration, and overcoming growth challenges.&lt;/p&gt;

&lt;p&gt;However, to validate the effectiveness of this role, it's essential to measure its impact and quantify the value it brings to the organization.&lt;/p&gt;

&lt;p&gt;Here are some potential KPIs that can help gauge the effectiveness of the role:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Technical debt reduction&lt;/strong&gt;: Measure the decrease in technical debt over time as a result of proactive architectural decisions made by the system architect. (Related: &lt;a href="https://newsletter.abinoda.com/p/measuring-and-managing-tech-debt" rel="noopener noreferrer"&gt;How Google Measures and Manages Tech Debt&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;System performance and reliability&lt;/strong&gt;: Evaluate the performance and reliability metrics of the system after the system architect makes architectural improvements.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Collaboration and team satisfaction&lt;/strong&gt;: Conduct surveys or feedback sessions to gauge how well the system architect facilitates collaboration and team communication.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Time-to-Market reduction&lt;/strong&gt;: Determine how architectural improvements by the system architect have contributed to faster product development and time-to-market.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Resource optimization&lt;/strong&gt;: Assess how architectural decisions have led to better resource utilization, whether regarding hardware, cloud services, or personnel.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Impact on productivity&lt;/strong&gt;: Analyze the impact of architectural improvements on the productivity of engineering teams.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Measuring success should not be a one-time activity. Adopting a continuous improvement approach is crucial, wherein feedback from stakeholders, teams, and customers is regularly collected and incorporated into the system architect’s strategies.&lt;/p&gt;

&lt;p&gt;Feedback loops enable the system architect to adjust their approach based on real-world experiences and emerging challenges. This will help protect the organization against a gatekeeper or an ivory tower architect, which would be antithetical to the role’s intention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerations for Implementation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Differentiating from EMs and Senior/Staff/Principal Engineers
&lt;/h4&gt;

&lt;p&gt;While engineering managers (EMs) and engineers are usually involved in making architectural decisions, their focus is typically on the domain or squad they operate in. The system architect’s distinctiveness lies in their primary focus on enabling effective cross-squad collaboration and communication, particularly regarding cross-cutting technical implications.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reporting structure
&lt;/h4&gt;

&lt;p&gt;A role like a system architect often reports directly to engineering leadership, offering broad oversight and visibility across multiple teams. As such, it may be positioned under a Director or VP, or above, depending on the organization’s hierarchy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Determining the number of architects
&lt;/h4&gt;

&lt;p&gt;Given the depth of domain knowledge required, complex domains may require experienced architects. Hiring for this role may entail identifying existing engineers with the right skills and interest in stepping into the architect role. This may affect the pace of filling the role based on the current team’s availability and skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Closing
&lt;/h3&gt;

&lt;p&gt;In conclusion, I hope this exploration helps gives you a better sense of how this role could be introduced and the benefits it could bring.&lt;/p&gt;

&lt;p&gt;I’ll leave you with this timeless video by KRAZAM. Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/y8OnoxKotPQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;If you liked this post, 🗞 subscribe to my &lt;a href="https://incrementalist.substack.com/" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; and &lt;a href="https://twitter.com/jesalg" rel="noopener noreferrer"&gt;follow me&lt;/a&gt; on 𝕏!&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>softwaredevelopment</category>
      <category>agile</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>How to Run Effective Sprint Planning Sessions</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Sun, 30 Jul 2023 05:33:28 +0000</pubDate>
      <link>https://dev.to/jesalg/how-to-run-effective-sprint-planning-sessions-2p77</link>
      <guid>https://dev.to/jesalg/how-to-run-effective-sprint-planning-sessions-2p77</guid>
      <description>&lt;h4&gt;
  
  
  A Step-by-Step Sprint Planning Guide for Engineering Leaders
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B8hb6Uko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/1%2AsYxW0ZnngZftlCEDbtZMmA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B8hb6Uko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/1%2AsYxW0ZnngZftlCEDbtZMmA.png" width="800" height="656"&gt;&lt;/a&gt;&lt;br&gt;Sprint Planning Meeting from &lt;a href="https://classicprogrammerpaintings.com/post/150884121514/sprint-planning-meeting-maria-bashkirtseva-oil"&gt;Classic Programmer Paintings&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;If you’ve been an engineer for some amount of time in the tech industry, you have probably experienced the highs and lows of sprint planning meetings. Maybe it has felt a bit like this painting by &lt;a href="https://en.wikipedia.org/wiki/Marie_Bashkirtseff"&gt;Marie Bashkirtseff&lt;/a&gt;. I’ve personally been in the trenches, both as a participant and as a leader, and have witnessed the wide array of approaches and their varying levels of effectiveness. It became apparent to me that the success of sprint planning lies in finding a structured and efficient approach that aligns the team and maximizes productivity.&lt;/p&gt;

&lt;p&gt;Sprint planning is the backbone of Scrum-based agile project management, providing the framework for teams to organize their work and establish clear goals for each iteration. Yet, all too often, I’ve seen these meetings devolve into chaos, resulting in misaligned priorities and a waste of valuable time. Recognizing the need for a better way, I embarked on a journey to refine and iterate upon a process that consistently delivers exceptional results.&lt;/p&gt;

&lt;p&gt;Through countless iterations and learnings, I’ve developed a process that has significantly improved the effectiveness of sprint planning while keeping the meeting overhead low. This process has helped my teams regain focus, enhance collaboration, and achieve remarkable outcomes.&lt;/p&gt;

&lt;p&gt;In this article, I aim to share my insights and provide you with a step-by-step guide to streamline your own sprint planning, ensuring that it becomes a powerful tool for success.&lt;/p&gt;

&lt;h3&gt;
  
  
  Principles
&lt;/h3&gt;

&lt;p&gt;Before we go any further, I will state this is an opinionated view on sprint planning and it follows these four underlying principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Bulk of the sprint planning happens 2 weeks leading up to the sprint start&lt;/strong&gt;: Allotting adequate time for gathering requirements, aligning priorities, and preparing for the upcoming work is vital. This two-week timeframe allows for thorough preparation and sets the stage for a successful sprint.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Sprint planning session is mainly for high-level sprint review and alignment&lt;/strong&gt;: The sprint planning session itself should primarily focus on reviewing the high-level aspects of the upcoming sprint and ensuring alignment with the team’s goals. Detailed discussions and refinement of tasks should occur prior to the planning session.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Each team member is an owner and driver of their work stream&lt;/strong&gt;: Engineers are not “ticket takers” but leaders who take responsibility for problem definition and own end-to-end execution. Consequently, each team member is responsible for creating tickets and breaking down work into manageable chunks, ensuring a proactive and self-driven approach.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Tickets in the sprint are&lt;/strong&gt; &lt;a href="https://www.linkedin.com/pulse/how-commit-integrity-83-fred-kofman/"&gt;&lt;strong&gt;conscious commitments&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to deliver&lt;/strong&gt;: The team takes a proactive and accountable approach to managing workload. Promptly flag any potential delays, emergent work, or setbacks and involve the stakeholders to renegotiate commitments in alignment with the evolving circumstances. It’s crucial to avoid scope creep during the sprint. If new tasks or requirements emerge mid-sprint, renegotiate commitments for existing work rather than merely piling new tasks on top.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before diving into the tactical sprint planning process, there are a few prerequisites that need to be in place:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Long-term roadmap for your team&lt;/strong&gt;: Having a clear vision of your team’s long-term goals and initiatives is essential. This roadmap will serve as a guide for prioritizing work during sprint planning, ensuring that each sprint contributes to the broader objectives. If you don’t have this, at minimum having OKRs is important so that everyone is aligned at a high level on how the day-to-day work ladders up to more overarching business (or mission) objectives.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;JIRA plan of Epics&lt;/strong&gt;: Use a project management tool like JIRA to create a plan and map out Epics based on your long-term roadmap. Breaking down large-scale goals into actionable initiatives upfront facilitates better planning and execution.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;High-level visual roadmap&lt;/strong&gt;: Develop a low-fidelity visual roadmap that outlines drivers &amp;amp; their work streams per sprint for the entire quarter. Fill out as much as you have clarity on upfront. Keep this updated as the rest of the quarter progresses with the goal of having a light of sight at least 1–2 sprints out. This holistic view of the work to be accomplished provides clarity and alignment for the rest of the team and an easy-to-consume visual for stakeholders outside the team.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MPQ58waA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2AV6p6sFeJO_h0iBiWO0RH3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MPQ58waA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2AV6p6sFeJO_h0iBiWO0RH3w.png" width="800" height="330"&gt;&lt;/a&gt;&lt;br&gt;Here’s an example of a high-level visual roadmap using Confluence Roadmap Planner
  &lt;/p&gt;

&lt;h3&gt;
  
  
  Tactical Steps
&lt;/h3&gt;

&lt;p&gt;Now, let’s dive into the tactical steps to streamline your sprint planning process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4ebzfwrM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/1%2AHB54YxSfW3i40AhWwu_-aA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4ebzfwrM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/1%2AHB54YxSfW3i40AhWwu_-aA.png" width="800" height="259"&gt;&lt;/a&gt;&lt;br&gt;What a typical schedule of ceremonies looks like for my teams
  &lt;/p&gt;

&lt;h4&gt;
  
  
  Part 1: Two weeks prior to the sprint start
&lt;/h4&gt;

&lt;p&gt;During the current sprint planning session, take the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Create the future sprint&lt;/strong&gt;: Create the upcoming sprint in the JIRA backlog. This will serve as a staging ground for the upcoming sprint. You could also just pre-create all six sprints for the quarter ahead of time to serve as buckets to allocate work to in advance.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Prospect&lt;/strong&gt;: Start moving any follow-up tickets or future work from your backlog into that upcoming sprint as you are reviewing the current sprint.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Part 2: One week prior to the sprint start
&lt;/h4&gt;

&lt;p&gt;One week before the start of the sprint, begin populating the sprint with tickets from the backlog. Follow these guidelines:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Align on upcoming priorities&lt;/strong&gt;: Leverage rituals such as 1:1 meetings, working sessions, and stand-ups during the week to discuss and align with team members on the upcoming priorities. Determine who will be working on each task. Each team member should be responsible for populating their sprint with tickets async.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Ensure sprint backlog is fully populated&lt;/strong&gt;: 1–2 days prior to the sprint start date, ensure that the upcoming sprint is fully populated with tickets. Each ticket should have an assignee and be appropriately story-pointed. This can happen individually async but you can hold optional sprint planning office hours for any last-minute discussion and alignment.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Add thematic focus to the visual roadmap&lt;/strong&gt;: Update the high-level visual roadmap with the thematic focus of each individual’s sprint. This step provides a clear understanding of each team member’s responsibilities and aligns them with the overall goals. This can be done during office hours or asynchronously, ensuring that everyone is on the same page.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Part 3: On the day of the sprint start
&lt;/h4&gt;

&lt;p&gt;During the sprint kickoff/review meeting, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complete the current sprint&lt;/strong&gt;: Close the current sprint and ensure that any remaining tickets are completed or appropriately moved to the following sprint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review the completed sprint&lt;/strong&gt;: Review the sprint report briefly at a high level to get a sense of where you landed. This is a good opportunity to celebrate achievements and identify any challenges or carryover work. If possible, review the results of shipped work from the previous sprint and track progress against your OKRs. This is also an opportunity to reiterate the team’s thematic goals and their connection to longer-term objectives.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conduct a sprint review per person&lt;/strong&gt;: Share the high-level visual roadmap and dive into a sprint review for each team member. Use the following checklist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ensure thematic alignment&lt;/strong&gt;: Confirm that the main thematic focus of the tickets aligns with the roadmap at a high level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Story point verification&lt;/strong&gt;: Verify that all tickets are appropriately story-pointed, reflecting their complexity and effort. Bonus: See my &lt;a href="https://dev.to/jesalg/techniques-for-effective-software-development-effort-estimation-1k71"&gt;previous post&lt;/a&gt; on how to estimate effort.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Epic alignment&lt;/strong&gt;: Ensure that the majority of tickets belong to an epic aligned with a roadmap initiative. This ensures that the work being done is driving the team towards its long-term goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anticipate bandwidth constraints&lt;/strong&gt;: Prospect forward and cnsider any time off, on-call duties, or other events that could impact a team member’s bandwidth. Update the visual roadmap accordingly to avoid overallocation and underestimation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Load balancing&lt;/strong&gt;: If an individual’s sprint load appears excessive, either move some tickets to the future sprint or load balance the workload with another team member.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repeat for all team members&lt;/strong&gt;: Go through the checklist above for each team member, ensuring that no unassigned tickets remain in the sprint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start the sprint&lt;/strong&gt;: With all preparations in place, kick off the sprint.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  That’s a Wrap
&lt;/h3&gt;

&lt;p&gt;If you made it this far, congratulations on equipping yourself with the knowledge to run effective sprint planning sessions! Remember, implementing these practices is just the beginning of your journey toward optimized sprint planning and team success.&lt;/p&gt;

&lt;p&gt;As you put these principles and tactical steps into action, you may wonder, “How do I know if this is working?”. One key indicator of progress is the improvement in sprint planning accuracy. Keep a close eye on the alignment between planned and actual outcomes i.e. planning accuracy or variance, and assess whether the commitments made during sprint planning are being met consistently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qj2w5MXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/0%2AjTkGWxrbCOz5YVnF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qj2w5MXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1600/0%2AjTkGWxrbCOz5YVnF.png" width="692" height="492"&gt;&lt;/a&gt;&lt;br&gt;Source: &lt;a href="https://www.oreilly.com/library/view/head-first-agile/9781491944684/"&gt;Head First Agile&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;Furthermore, don’t underestimate the power of feedback. Retrospective meetings at the end of each sprint cycle provide an excellent opportunity to discuss what went well and what can be improved. By actively soliciting and incorporating feedback, you can fine-tune your approach over time and drive continuous improvement.&lt;/p&gt;

&lt;p&gt;Happy sprint planning!&lt;/p&gt;

</description>
      <category>agile</category>
      <category>scrum</category>
      <category>softwaredevelopment</category>
      <category>leadership</category>
    </item>
    <item>
      <title>From Chaos to Clarity: The Essential Guide to Personal Knowledge Management</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Sat, 31 Dec 2022 05:47:09 +0000</pubDate>
      <link>https://dev.to/jesalg/personal-knowledge-management-how-to-survive-in-a-world-of-information-overload-42im</link>
      <guid>https://dev.to/jesalg/personal-knowledge-management-how-to-survive-in-a-world-of-information-overload-42im</guid>
      <description>&lt;p&gt;Are you tired of constantly struggling to remember important information? Do you feel overwhelmed by the endless stream of inputs coming at you every day? You're not alone. In today's digital world, we're bombarded with an average of 74 GB of data per day - that's the equivalent of watching 16 movies! (&lt;a href="https://kids.frontiersin.org/articles/10.3389/frym.2017.00023#:~:text=Scientists%20have%20measured%20the%20amount,billboards%2C%20and%20many%20other%20gadgets." rel="noopener noreferrer"&gt;source&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;But what if there was a way to take control of all this information and use it to your advantage? Enter Personal Knowledge Management (PKM).&lt;/p&gt;

&lt;h3&gt;
  
  
  📔 What is Personal Knowledge Management?
&lt;/h3&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe12cgvhk6a977eaphmtk.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe12cgvhk6a977eaphmtk.png" width="450" height="372"&gt;&lt;/a&gt;&lt;br&gt;
(Source: &lt;a href="http://roambrain.com/" rel="noopener noreferrer"&gt;RoamBrain.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;PKM is the active and intentional process of managing the information that comes your way on a daily basis. It involves finding, organizing, and storing information in a way that makes it easy for you to access and use when you need it. It also involves using various tools and techniques to help you understand, analyze, and apply the information you've collected.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 Why should you care about PKM?
&lt;/h3&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxi1svbhos0s0hph7mj3.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxi1svbhos0s0hph7mj3.png" width="561" height="500"&gt;&lt;/a&gt;(Source: &lt;a href="https://www.jasongilbertson.com/a-virtuous-cycle-vs-walled-gardens-for-lifelong-learning-2/" rel="noopener noreferrer"&gt;jasongilbertson.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;In this blog post, we'll explore the benefits of PKM and how it can help you create clarity, build a "second brain," and improve your efficiency and effectiveness. PKM is an ongoing process that requires discipline and effort to maintain, but it can provide significant benefits, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connecting ideas for new insights.&lt;/strong&gt; Atomic bi-directional notes allow you to connect ideas and make new insights possible. Insights don't happen in a vacuum - they're the result of making new connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating future value.&lt;/strong&gt; Even if you don't use your notes for a current project, you're preparing knowledge for future projects. Just as data gives organizations an advantage, your personal repository of knowledge will give you a leg up over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tackling complex problems.&lt;/strong&gt; It can be tough to keep all the balls in the air when you're tackling complex problems. Implementing a PKM system allows you to focus on a small part of the problem and then step back and look at it with a bird's eye view.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔢 "Levels" of P.K.M
&lt;/h3&gt;

&lt;p&gt;Are you already a pro at taking notes? That's great, but there are different levels to this practice. You can evaluate where you are in your PKM journey using this guide from Tiago Forte's &lt;a href="https://fortelabs.co/blog/the-4-levels-of-personal-knowledge-management/" rel="noopener noreferrer"&gt;The 4 Levels of Personal Knowledge Management&lt;/a&gt;:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7e4qkjsus1jvjcdsis4.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7e4qkjsus1jvjcdsis4.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 1: Storing Information&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You use apps to receive, edit, and send information.&lt;/li&gt;
&lt;li&gt;You organize your files using default folders and subfolders.&lt;/li&gt;
&lt;li&gt;You take notes on your smartphone or mobile device for practical tasks or occasionally from sources such as books or podcasts, but don't do much with them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Level 2: Managing Knowledge&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You capture ideas and creative inspiration from both your own thoughts and external sources.&lt;/li&gt;
&lt;li&gt;You use digital note-taking as a significant part of your daily life, capturing information from a wide variety of sources.&lt;/li&gt;
&lt;li&gt;Your notes begin to work as a thought partner, reminding you of things you've forgotten and surfacing connections between ideas.&lt;/li&gt;
&lt;li&gt;You refine your knowledge management tools and perform small experiments to discover better ways of doing things.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Level 3: Enabling Action&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You shift your focus from ideas to action, using your insights to tangibly improve your learning, health, career, business, and society.&lt;/li&gt;
&lt;li&gt;You become more selective about the information you consume, preferring only high-quality, substantive sources that relate to your goals.&lt;/li&gt;
&lt;li&gt;You use your notes to take on more complex projects and become more productive, creative, and relaxed.&lt;/li&gt;
&lt;li&gt;You apply creativity to the workings of your system and integrate it deeply into your thinking for leverage.&lt;/li&gt;
&lt;li&gt;The benefits of your system extend to others, such as through a website, blog, social media feed, podcast, or product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Level 4: Personal Knowledge Mastery&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have achieved a high level of proficiency in managing your personal knowledge.&lt;/li&gt;
&lt;li&gt;You are able to use your knowledge effectively to achieve your goals and are constantly learning and adapting to new information and situations.&lt;/li&gt;
&lt;li&gt;You regularly review and revise your system to ensure it is still effective and efficient.&lt;/li&gt;
&lt;li&gt;Your system becomes a part of your identity and personal brand, and you are able to share your knowledge and insights with others in a way that is meaningful and impactful.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤓 Building Your PKM System
&lt;/h3&gt;

&lt;p&gt;Now you may be thinking, alright, how do I level up my game? What do I need to do? First things first, you need the right tool for the job. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdma0pvogkflqvdmxn4t.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdma0pvogkflqvdmxn4t.png" alt="NoteApps.Info" width="800" height="516"&gt;&lt;/a&gt;(Source: &lt;a href="https://noteapps.info/" rel="noopener noreferrer"&gt;NoteApps.Info&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;As you probably know, there are tons of apps in the market. Which one do you choose? Is there even a difference? &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswyccsz7t0lxj9gybl4w.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswyccsz7t0lxj9gybl4w.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app you choose is going to determine how successful you are going to be in organizing your knowledge. You don't want something super complex where all you think about the tool and not why you are using it and on the other hand you don't want something so simple that it lacks the essentials. &lt;/p&gt;

&lt;h3&gt;
  
  
  🧐 Understand Your Needs
&lt;/h3&gt;

&lt;p&gt;In order to narrow down the search out of the sea of apps, I recommend thinking about a set of requirements that are important to you based on your usage and thinking patterns. For example, consider the following questions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you prefer to take notes? Do you write in bullet points or prose? &lt;/li&gt;
&lt;li&gt;Do you care about referencing other notes and seeing backlinks? &lt;/li&gt;
&lt;li&gt;Do like the concept of a daily planner? &lt;/li&gt;
&lt;li&gt;Do you care about consolidated notes, calendar, and task management?&lt;/li&gt;
&lt;li&gt;Will you use it on the go and on multiple devices?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, thinking through some of those questions yielded the following list of requirements:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Requirement #1: Bi-directional&lt;/strong&gt; - The ability to create connections between different blocks of knowledge and easily reference and backlink them.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F493vanw51th63084bky1.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F493vanw51th63084bky1.png" alt="Image description" width="700" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📋 &lt;strong&gt;Requirement #2: Outline-based&lt;/strong&gt; - The ability to organize thoughts and ideas in a hierarchical, bullet point format.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0jfngqszzdqbmreztof.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0jfngqszzdqbmreztof.gif" alt="Image description" width="742" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📅 &lt;strong&gt;Requirement #3: Temporal&lt;/strong&gt; - The ability to take daily notes and keep a journal of events and activities.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgz0lk9wxhxcnzwcfroh.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgz0lk9wxhxcnzwcfroh.png" alt="Image description" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Requirement #4: Action Oriented&lt;/strong&gt; - The ability to create and track tasks, ensuring that important actions don't fall through the cracks.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphk5360tpaskeyh6488m.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphk5360tpaskeyh6488m.png" alt="Image description" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📲 &lt;strong&gt;Requirement #5: Multi-device syncing&lt;/strong&gt; - Mobile support for on-the-go note taking as well as multi-device syncing.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0kvofqmo3an069t6na1.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0kvofqmo3an069t6na1.png" alt="Image description" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧪 Experiment
&lt;/h3&gt;

&lt;p&gt;A good way to narrow down your options is to use a review site like &lt;a href="https://noteapps.info/" rel="noopener noreferrer"&gt;NoteApps.Info&lt;/a&gt; to compare different tools and see which ones seem most promising. &lt;/p&gt;

&lt;p&gt;Once you've identified a few tools that you'd like to try, it's a good idea to give each one a test run for a few days to see how it fits into your daily routine. Keep in mind that it may take some trial and error before you find a tool that feels productive and comfortable to use.&lt;/p&gt;

&lt;p&gt;For example, I tried all of the following tools for a few days before finding one that worked for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://roamresearch.com/" rel="noopener noreferrer"&gt;Roam Research&lt;/a&gt;: This is the leader in the space with a cult following. It offers powerful bi-directional linking and hierarchical outlining capabilities. No free version.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://obsidian.md/" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt;: Similar to Roam but with a ton of extensibility and plugin ecosystem. Multi-device syncing is a paid add-on.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.remnote.com/" rel="noopener noreferrer"&gt;RemNote&lt;/a&gt;: Similar to Roam but slightly bent towards students and educational use-cases. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://logseq.com/" rel="noopener noreferrer"&gt;logseq&lt;/a&gt;: Essentially an open-source version of Roam focused on privacy and data portability. Lacking robust multi-device syncing.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amplenote.com/" rel="noopener noreferrer"&gt;Amplenote&lt;/a&gt;: Most low-key out of the ones. Has the most essential features with robust multi-device syncing and mobile support. No plugins or ability to customize the UX. Generous free tier.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ultimately decided to stick with Amplenote given it checked all my requirements and has proven to be super reliable for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Strategies for Success
&lt;/h3&gt;

&lt;p&gt;So now that you know the benefits of PKM, how do you get started and make it stick? Here are some strategies that can help you achieve success:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start small and focus on one area at a time.&lt;/strong&gt; It can be overwhelming to try to tackle everything at once. Start with one area of your life, such as taking meeting notes, remembering ideas, writing blog posts, planning a vacation, etc and build from there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find a tool that works for you.&lt;/strong&gt; There are many different tools available for PKM, from simple note taking apps to more advanced knowledge graph apps. Take the time to experiment with different options and see what sticks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use your notes to reflect on your learning and progress.&lt;/strong&gt; PKM isn't just about capturing and organizing information - it's also about making use of it to improve your learning and development. Take time to review and reflect on your notes regularly, and use them to identify patterns, make connections, and track your progress over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be consistent and make PKM a habit.&lt;/strong&gt; It takes time to build a strong PKM system, so be patient and consistent in your efforts. Make it a habit to capture and organize information on a regular basis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📑 Additional Resources &amp;amp; Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.jasongilbertson.com/a-system-for-lifelong-learning-with-zettelkasten-and-spaced-repetition/" rel="noopener noreferrer"&gt;How to Build a System for Lifelong Learning&lt;/a&gt; - I highly  recommend this post by Jason Gilbertson where he takes you through his knowledge management system to serve as an inspiration.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.buildingasecondbrain.com/" rel="noopener noreferrer"&gt;Building a Second Brain&lt;/a&gt; - If you prefer something more guided and structured look no further than Tiago Forte's BASB course.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://notes.andymatuschak.org/About_these_notes" rel="noopener noreferrer"&gt;Andy's Notes&lt;/a&gt; - One of the most remarkable examples out there. Andy uses the concept of atomic, evergreen notes, and combines it with a fun way to navigate the content as you open up each note like a book. Each note title = hyperlink.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/KasperZutterman/Second-Brain" rel="noopener noreferrer"&gt;KasperZutterman/Second-Brain&lt;/a&gt; - A curated list of awesome Public Zettelkastens 🗄️ / Second Brains 🧠 / Digital Gardens 🌱&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📣 Share The Knowledge
&lt;/h3&gt;

&lt;p&gt;I hope you found this post helpful and thought-provoking. If you have any additional tips or strategies for effective Personal Knowledge Management, please share them in the comments below. And if you found this post valuable, please consider sharing it on social media or tagging a friend or colleague who might benefit from reading it. &lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How To Own Your Growth As A Software Engineer</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Thu, 14 Jul 2022 02:24:53 +0000</pubDate>
      <link>https://dev.to/jesalg/how-to-own-your-growth-as-a-software-engineer-4473</link>
      <guid>https://dev.to/jesalg/how-to-own-your-growth-as-a-software-engineer-4473</guid>
      <description>&lt;p&gt;An engineer's journey from a junior to a lead is full of learnings and requires frequent adaption and agility to succeed. But, as this Tweet mentions, what ends up needing most of the time and focus at each engineering level tends to be different.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1527665482391859200-609" src="https://platform.twitter.com/embed/Tweet.html?id=1527665482391859200"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1527665482391859200-609');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1527665482391859200&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  What got you here will not get you there.
&lt;/h3&gt;

&lt;p&gt;The best and most successful engineers realize this and adapt to meet the need at the moment rather than clinging to what got them so far. They are what Liz Wiseman calls &lt;a href="https://impactplayersbook.com/"&gt;Impact Players&lt;/a&gt; — a book and a mental model I highly recommend.&lt;/p&gt;

&lt;p&gt;In this post, I will take you through a mental model of thinking about your growth as an engineer, techniques to advocate for yourself, and advice on organizing your thoughts and communicating well.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rigor/Relevance Framework®
&lt;/h3&gt;

&lt;p&gt;So the first question that you may have is, how should I operate? How do I know when to focus on learning, building, or something else?&lt;/p&gt;

&lt;p&gt;Here comes a structured tool you can leverage called The Rigor/Relevance Framework®, developed by the International Center for Leadership in Education to examine curriculum, instruction, and assessment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://build.betterup.com/content/images/2022/07/5df3596f-774f-4a39-b4ca-b21db7cf4ab7.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3jbEf6vo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://build.betterup.com/content/images/2022/07/5df3596f-774f-4a39-b4ca-b21db7cf4ab7.png" alt="The Rigor/Relevance Framework®" width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you might guess, they typically use this framework in education settings to chart a student's growth of knowledge and how they apply it. It is an excellent lens to view an engineer's growth because great engineers are lifelong learners who follow a similar trajectory!&lt;/p&gt;

&lt;p&gt;You can use this framework as a guide to track where you are now and where you might go next as a software engineer. We can examine the expectations at each level and how you can grow your impact and reach the next one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quadrant A (Acquisition) — Junior Engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are an early stage engineer as an intern, your first job out of school, or switching industries.&lt;/p&gt;

&lt;p&gt;Your manager will probably expect you to gather and store bits of knowledge and information. They will also expect you to remember or understand this acquired knowledge. Your team mentor, manager, or tech lead will guide you in completing your tasks.&lt;/p&gt;

&lt;p&gt;You can exceed expectations if you understand and leverage existing patterns &amp;amp; practices, as well as execute tasks with minimal guidance. For more, see Samuel Taylor's brilliant advice on &lt;a href="https://www.samueltaylor.org/articles/how-to-learn-a-codebase.html"&gt;how to join a team and learn a codebase&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quadrant B (Application) — Mid-Level Engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are a mid-career engineer with a few years of experience and maybe in your second or third job as an engineer.&lt;/p&gt;

&lt;p&gt;Your manager will expect you to use acquired knowledge to solve problems, design solutions, and complete work more or less independently.&lt;/p&gt;

&lt;p&gt;You can exceed expectations if you can quickly ramp up and contribute to a new team/domain and apply your knowledge to new and unpredictable situations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quadrant C (Assimilation) — Senior Engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are a veteran engineer who has worked in the industry for about a decade. You are the driver of your work streams and a mentor to others.&lt;/p&gt;

&lt;p&gt;Your manager will expect you to extend and refine your acquired knowledge to expertly and routinely analyze and solve problems and create unique solutions.&lt;/p&gt;

&lt;p&gt;You can exceed expectations by consistently stepping into a leadership role and helping your team take complex projects to the finish line by working closely with stakeholders, identifying solutions, defining the scope, estimating timelines, and measuring success. You know how to be what &lt;a href="https://en.wikipedia.org/wiki/Keith_Rabois"&gt;Keith Rabois&lt;/a&gt; calls a &lt;a href="https://www.conordewey.com/blog/barrels-and-ammunition/"&gt;Barrel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quadrant D (Adaptation) — Staff+ Engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are a technical craftsperson and have been in leadership roles in the industry. You typically lead teams and companies on strategic and mission-critical initiatives. In addition, you are a compassionate mentor that can guide individuals and teams to achieve greater success.&lt;/p&gt;

&lt;p&gt;Your manager will expect you to think in complex ways and apply your acquired knowledge and skills. However, even when confronted with perplexing unknowns, you can use your experience to create solutions and take action that further develops your skills.&lt;/p&gt;

&lt;p&gt;You can exceed expectations by practicing imagination, prioritizing the right things at the right time, and executing your vision by inspiring and leading others. See &lt;a href="https://www.linkedin.com/in/will-larson-a44b543/"&gt;Will Larson's&lt;/a&gt; guides for &lt;a href="https://staffeng.com/guides"&gt;reaching and succeeding at Staff-plus roles&lt;/a&gt; for a deep dive.&lt;/p&gt;

&lt;h3&gt;
  
  
  The map is not the territory.
&lt;/h3&gt;

&lt;p&gt;Organizations essentially split those four quadrants above into different levels at varying granularity, but the core concepts usually remain the same. Therefore, you can think of the above levels as a map for your career progression.&lt;/p&gt;

&lt;p&gt;Although these leveling guides are helpful, it is essential to remember that even the best maps are imperfect. In mathematician Alfred Korzybski's words, &lt;a href="https://en.wikipedia.org/wiki/Map%E2%80%93territory_relation"&gt;the map is not the territory&lt;/a&gt;. That's because they are reductions of what they represent. If a map were to describe the territory with perfect fidelity, it would no longer be a reduction and thus would no longer be helpful to us.&lt;/p&gt;

&lt;p&gt;That is all to say, don't read the leveling guides too literally or get fixated on ticking the boxes. Instead, take the time to explore your interests, learn and savor the journey. Personally, I took several detours along the way, such as pursuing entrepreneurship and switching back and forth from IC to management to maximize my learnings &amp;amp; impact rather than worrying about titles or showing linear growth on my resume. For more, see Charity Majors' &lt;a href="https://charity.wtf/2020/09/14/useful-things-to-know-about-engineering-levels/"&gt;thoughts on engineering levels&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, it's essential to remember that titles are usually a byproduct of all your achievements. They are a lagging indicator of your impact. Therefore, you should never wait for titles to work on your skills and find your &lt;a href="https://en.wikipedia.org/wiki/Flow_(psychology)"&gt;flow state&lt;/a&gt;. Psychologist &lt;a href="https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi"&gt;Mihaly Csikszentmihalyi&lt;/a&gt; describes the flow state as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a constant balancing act between anxiety, where the difficulty is too high for the person's skill, and boredom, where the difficulty is too low&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you have the right opportunities, mindsets, and support to achieve that flow state and create a greater impact? If not, what needs to change?&lt;/p&gt;

&lt;h3&gt;
  
  
  Be your advocate
&lt;/h3&gt;

&lt;p&gt;Following and meeting the expectations of a leveling guide alone sometimes is not enough. It's also crucial that you become your advocate and authentically tell your story. For one, make sure you have a way to remember, celebrate, share, and learn from all your accomplishments.&lt;/p&gt;

&lt;p&gt;Reflecting on your journey will help you spot trends, key strengths, and areas of improvement. I've found it easier to jot down my thoughts right after passing a milestone, such as at the end of the quarter or after completing a project. I've also found it helpful to track my time using tools like Toggl, RescueTime, etc., to understand and visualize my time pie.&lt;/p&gt;

&lt;p&gt;You can use those reflections as a springboard to share your achievements &amp;amp; insights more broadly. I know that may not always come naturally to some engineers, but putting yourself out there will help others, amplify your work and unlock new opportunities. It is also a great opportunity to practice gratitude and recognize others around you.&lt;/p&gt;

&lt;p&gt;Related to the points above, see Julia Evan's excellent blog post on &lt;a href="https://jvns.ca/blog/brag-documents/"&gt;how to get your work recognized&lt;/a&gt; and Jason Roberts's blog post on &lt;a href="https://www.codusoperandi.com/posts/increasing-your-luck-surface-area"&gt;increasing your luck surface area&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communicate well
&lt;/h3&gt;

&lt;p&gt;Another critical skill often overlooked is an engineer's ability to write and communicate. Make sure you invest in that skill as early as possible in your career. It will pay long-term dividends unlike any other. In fact, your ability to advocate for yourself hinges on your ability to communicate well.&lt;/p&gt;

&lt;p&gt;Clear and concise communication will also help you think through complex concepts more clearly. It is also a huge plus when working at a company that values written communication, such as Amazon's, with a culture of six-page memos, which Jeff Bezos talked about in &lt;a href="https://www.sec.gov/Archives/edgar/data/1018724/000119312518121161/d456916dex991.htm"&gt;one of their shareholder letters&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;To build this skill gradually, I've used Personal Knowledge Management (PKM) tools, such as Notion, Roam, Remote, etc., to create a daily writing practice and a way to organize thoughts. You can then leverage those raw thoughts and outlines to write polished documents. Set a goal for yourself to write a certain amount of external blog posts or internal memos. Start small, maybe 2 - 3 per year, and slowly increase the cadence.&lt;/p&gt;

&lt;p&gt;For more on writing well, check out Heinrich Hartmann's &lt;a href="https://www.heinrichhartmann.com/posts/writing/"&gt;Writing for Engineers&lt;/a&gt; guide and Michael A. Covington's presentation on &lt;a href="http://www.covingtoninnovations.com/mc/WriteThinkLearn.pdf"&gt;How to Write More Clearly, Think More Clearly, and Learn Complex Material More Easily&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;To recap, the core tenets of owning your growth as an engineer covered here were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What got you here will not get you there; do the job that's needed of you&lt;/li&gt;
&lt;li&gt;  Understand what it'll take to exceed expectations and have a plan to outperform&lt;/li&gt;
&lt;li&gt;  Advocate for yourself through storytelling and sharing your work&lt;/li&gt;
&lt;li&gt;  Learn to organize your thoughts and communicate articulately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would love to hear if that resonates and if there is any other advice you've found to be pivotal in your growth journey.&lt;/p&gt;




&lt;p&gt;This post was originally published on the &lt;a href="https://build.betterup.com/how-to-own-your-growth-as-a-software-engineer/"&gt;BetterUp Product Blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>leadership</category>
      <category>beginners</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>The Art of Crafting Effective Pull Requests</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Sun, 08 Aug 2021 15:34:57 +0000</pubDate>
      <link>https://dev.to/jesalg/the-art-of-crafting-effective-pull-requests-23fg</link>
      <guid>https://dev.to/jesalg/the-art-of-crafting-effective-pull-requests-23fg</guid>
      <description>&lt;p&gt;Pull Requests (PRs) are a great way of submitting contributions to a project, especially when there are multiple developers working on it at the same time. If done well, they are a medium through which we can receive feedback and increase visibility for the changes we are shipping.&lt;/p&gt;

&lt;p&gt;There are many elements to what makes for a good PR. They end up determining the quality of the end deliverable as well as telling a story of how a certain feature or change came about.&lt;/p&gt;

&lt;p&gt;In this post, I'll cover some of the basics of what to optimize for at each stage of the PR's journey to production. My hope is that you'll be able to use this to maximize feedback quality and minimizing time to merge. So let's dive in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scoping
&lt;/h2&gt;

&lt;p&gt;The first step in the journey to crafting a PR is to create a separate branch for your changes. At this stage, scoping your changes is key. First, think of how big of a change-set you want to introduce in a single PR. Try to address one issue or build one feature within the PR. The larger it is, the more complex it is to review and the more likely it will be delayed. Remember that reviewing PRs is taking time from someone else's day!&lt;/p&gt;

&lt;p&gt;Once you've settled on the scope, ensure that each change is broken up into small logical commits. Having small commits is valuable because of several reasons. First, it allows the reviewer to see the progression of the changes and understand the PR in its current state. It is also very valuable if you are using &lt;a href="https://thoughtbot.com/blog/git-bisect"&gt;git bisect&lt;/a&gt; to debug an issue or trying to roll back a change in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drafting
&lt;/h2&gt;

&lt;p&gt;The next step in the journey is to open up a draft PR. This is not always necessary but it's useful if you want to see the full CI run with all the tests, assuming you are not running the entire test suite locally. This will give you early signals on whether your changes are interacting with the rest of the codebase in unexpected ways or not.&lt;/p&gt;

&lt;p&gt;Take a moment to review your changes and see if everything makes sense from the perspective of the reviewer. If you are satisfied with the state of the PR, you could tag reviewers for early feedback if necessary.&lt;/p&gt;

&lt;p&gt;If you do decide to tag reviewers, ask for specific feedback, calling out the fact that the PR is still work-in-progress. Guide your reviewers with what you want feedback on. This will ensure they don't spend time and energy giving you feedback on things that are likely to change, or things that you are already aware of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing
&lt;/h2&gt;

&lt;p&gt;If your draft PR is in good shape, you are now ready to tag reviewers. When it comes to picking reviewers, pick no more than 2 - 3 primary reviewers. If you tag a large number of reviewers, chances are you might see a bystander effect.&lt;/p&gt;

&lt;p&gt;Before tagging reviewers, ensure that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tests are all green. You don’t want the reviewers to spend their valuable time pointing out the basics.&lt;/li&gt;
&lt;li&gt;  You've clearly articulated the purpose of the PR as well as the broader context for the change. Link back to relevant Slack threads or tickets. This is important even if you think the reviewers will have the full context for the sake of posterity.&lt;/li&gt;
&lt;li&gt;  You've done a self-review. I would recommend running through &lt;a href="http://www.dein.fr/2015-02-18-maslows-pyramid-of-code-review.html"&gt;Maslow's pyramid of code review&lt;/a&gt; to see if your work meets those criteria. You should be the first person to critically review your work before anyone else does.&lt;/li&gt;
&lt;li&gt;  If there are specific follow-ups that you have in mind, describe those as well so the reviewers know what to expect down the line.&lt;/li&gt;
&lt;li&gt;  You have provided related artifacts to the PR in the form of screenshots, videos or logs. This will help your reviewers better understand the impact of your changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;When you receive feedback from the reviewers keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tone can easily get lost in async communication. So assume the best intent and don't take the feedback personally. Offer clarification and context for your decisions.&lt;/li&gt;
&lt;li&gt;  If something isn't clear, ask clarifying questions, don't try to read the tea leaves. If things are still not clear in async conversation, request some time to chat on a call. Once you’ve had a chance to discuss, circle back and summarize the discussed points in the PR to preserve context.&lt;/li&gt;
&lt;li&gt;  Whether you decide to take the feedback or not, be sure to acknowledge the feedback you've received. This demonstrates that you value the reviewers' time and effort.&lt;/li&gt;
&lt;li&gt;  Explicitly re-request review once you are done addressing the feedback. Don't assume the reviewer will know when you are done. Bonus points if you follow-up with a comment pointing out the specific commit that addressed their feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Releasing
&lt;/h2&gt;

&lt;p&gt;Once you have gone through the feedback cycles and gotten the approval of reviewers remember to come back and merge your PR. The longer you wait, the greater the chances of encountering merge conflicts or regressions. So be sure to merge as quickly as possible.&lt;/p&gt;

&lt;p&gt;If you are releasing a PR that will perform a large data operation or change something in the critical path, ensure that you are available to follow that PR through the release process and mitigate any errors or hiccups along the way.&lt;/p&gt;

&lt;p&gt;If all goes well and your changes are in production, remember to follow-up with the stakeholders and update them on the progress.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on the &lt;a href="https://build.betterup.com/the-art-of-crafting-effective-pull-requests/"&gt;BetterUp Product Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>programming</category>
      <category>productivity</category>
      <category>git</category>
    </item>
    <item>
      <title>Techniques for Effective Software Development Effort Estimation</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Sun, 16 May 2021 19:31:15 +0000</pubDate>
      <link>https://dev.to/jesalg/techniques-for-effective-software-development-effort-estimation-1k71</link>
      <guid>https://dev.to/jesalg/techniques-for-effective-software-development-effort-estimation-1k71</guid>
      <description>&lt;h2&gt;
  
  
  How long do you think it'll take?
&lt;/h2&gt;

&lt;p&gt;As builders and creative people, we are all too familiar with that question. Getting estimates right is incredibly difficult and it's a skill that we learn slowly over time as we gain more experience building and shipping projects.&lt;/p&gt;

&lt;p&gt;So why is this simple exercise so difficult? Oftentimes it's because we forget to ask the right questions and make assumptions that may not be correct. Let's examine what are these questions that we should be asking and break them down into phases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scoping — What is being requested and when is it needed?
&lt;/h2&gt;

&lt;p&gt;Don't assume what you think of as “done” is the same as what the party asking for an estimate would call,  “done”. It is important to explicitly call out the timeline and specific deliverables before doing the exercise of estimation.&lt;/p&gt;

&lt;p&gt;So part of that is first understanding what you are being asked to estimate. Make sure what you have in mind is an acceptable outcome for the stakeholder. If you don't already have it, make a list of user personas and stories to align on the requirements with the stakeholder and decide on what will be in scope.&lt;/p&gt;

&lt;p&gt;Secondly, understand the user group that should be targeted as part of the delivery timeline. For example, will the product be shipped in phases such as internal, friends &amp;amp; family, early access, general availability, etc? If so what does our estimate aim for? Be explicit about which release phase you are estimating for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Exploration — How will it be built?
&lt;/h2&gt;

&lt;p&gt;To provide a good estimate there has to be some level of understanding of the existing system and how to go about making changes in it.&lt;/p&gt;

&lt;p&gt;You can never know exactly all the steps you may need to take but there has to be a certain degree of confidence. Anything below 70% confidence would warrant a technical exploration or a &lt;a href="https://www.scaledagileframework.com/spikes/"&gt;spike&lt;/a&gt; to get a better understanding of the required effort.&lt;/p&gt;

&lt;p&gt;If you are going to touch a particular aspect of the system, take the opportunity to leave it in a better state than you found it in. This is a good time to identify if there are any long-standing hotspots or technical debt that could be addressed as part of this task. Even small incremental improvements will help keep the system maintainable over the long run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capacity Planning — What is the level of effort?
&lt;/h2&gt;

&lt;p&gt;The next step in formulating an estimate is to get a handle on the capacity. For example, based on the technical exploration, you may think something might require one week of effort. This is the most common step where the estimation effort derails.&lt;/p&gt;

&lt;p&gt;We are not done. We still have to further refine that and ask, “Is it one week of an average engineer's time? Or is it specifically your time?”&lt;/p&gt;

&lt;p&gt;If you are estimating for yourself, does that account for all the meetings you have to attend? Are there any holidays coming up? Do you have any other competing priorities or commitments? Estimate the time you may have to focus on those things and add that to the estimate.&lt;/p&gt;

&lt;p&gt;Also, does this account for time to deal with any potential hiccups or areas of high ambiguity that you may still have to be fleshed out? Figure out your confidence level after the technical exploration, then account for some additional time based on the percent of ambiguity that remains. It might be helpful to go through a &lt;a href="https://tanzu.vmware.com/developer/practices/risks-and-mitigations/"&gt;Risks &amp;amp; Mitigations&lt;/a&gt; exercise here where you can list out all the areas of risks and potential actions to mitigate them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Process — What will it take to be deployed?
&lt;/h2&gt;

&lt;p&gt;We are in the final stretch, but the exercise is not over yet! Now that we are getting a better handle on the actual engineering time, let's start to think about the process of shipping the work.&lt;/p&gt;

&lt;p&gt;What are the review phases that you will encounter? Will the changes have to go through peer reviews? If so, what kind of cycle time can we expect from the reviewers? There may be a review/feedback cycle to each change that is shipped. How long will that take approximately?&lt;/p&gt;

&lt;p&gt;Will there be any other reviews outside of peer reviews? Will this have to go through a design review to ensure the final product matches the designs? Will it have to go through any compliance audits such as Privacy, Security, Legal, etc? Try to gather the rough turnaround time for those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Providing time-based estimates is always hard. It involves a slew of factors and varies from person to person. That's one of the reasons why many teams have transitioned to a practice of assigning points to a task known as "story points", which is an &lt;a href="https://www.atlassian.com/agile"&gt;agile development&lt;/a&gt; practice.&lt;/p&gt;

&lt;p&gt;Instead of time spent, the team would assign a relative complexity of a task on a point scale. The scale can be anything from Fibonacci sequence to t-shirt sizes. Over time, the team builds a better understanding of how their story points map to difficulty of a task which in turn can be used to inform timelines.&lt;/p&gt;

&lt;p&gt;No matter which framework you decide to use, like developing any skill, estimation requires continuous practice, refinement, and learning. You'll get better and better if you treat it as a skill that can be developed over time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on the &lt;a href="https://build.betterup.com/techniques-for-effective-software-development-effort-estimation/"&gt;BetterUp Product Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>agile</category>
      <category>projectmanagement</category>
    </item>
    <item>
      <title>Merging SimpleCov results with parallel Rails specs on Semaphore CI</title>
      <dc:creator>Jesal Gadhia</dc:creator>
      <pubDate>Tue, 03 Nov 2020 23:58:13 +0000</pubDate>
      <link>https://dev.to/jesalg/merging-simplecov-results-with-parallel-rails-specs-on-semaphore-ci-8f6</link>
      <guid>https://dev.to/jesalg/merging-simplecov-results-with-parallel-rails-specs-on-semaphore-ci-8f6</guid>
      <description>&lt;p&gt;If you are running Rails specs on parallel machines with Knapsack Pro, one challenge you will run into is combining the code coverage results generated by SimpleCov. &lt;/p&gt;

&lt;p&gt;This post will show you how to generate a report of the total combined code coverage after all the tests have executed. Here's what the pipeline diagram looks like at a high level with unrelated sections blurred out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CTFEaMFL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jes.al/public/wp-content/uploads/pipeline_diagram.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CTFEaMFL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jes.al/public/wp-content/uploads/pipeline_diagram.png" alt="Pipeline Diagram" width="800" height="868"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Configure&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SimpleCov
&lt;/h3&gt;

&lt;p&gt;First lets look at the config file used for SimpleCov below. Note no &lt;code&gt;minimum_coverage&lt;/code&gt; configuration for failing the build. This is because each node most likely will not meet the minimum coverage threshold on its own so it could lead to the build failing erroneously.&lt;/p&gt;

&lt;p&gt;Also note, &lt;code&gt;before_queue&lt;/code&gt; hook for Knapsack Pro. This is the important piece, it will set a command name based on the CI node index so that the results are recorded against it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.simplecov&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;  &lt;span class="no"&gt;SimpleCov&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;add_filter&lt;/span&gt; &lt;span class="sr"&gt;%r{^/config/}&lt;/span&gt;
    &lt;span class="n"&gt;add_filter&lt;/span&gt; &lt;span class="sr"&gt;%r{^/db/}&lt;/span&gt;
    &lt;span class="n"&gt;add_filter&lt;/span&gt; &lt;span class="sr"&gt;%r{^/spec/}&lt;/span&gt;

    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Admin'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/admin'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Controllers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/controllers'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Helpers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/helpers'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Jobs'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/jobs'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Libraries'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'lib/'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Mailers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/mailers'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Models'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/models'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Policies'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/policies'&lt;/span&gt;
    &lt;span class="n"&gt;add_group&lt;/span&gt; &lt;span class="s1"&gt;'Serializers'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'app/serializers'&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eager_load!&lt;/span&gt;

  &lt;span class="no"&gt;KnapsackPro&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Hooks&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;before_queue&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="no"&gt;SimpleCov&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;command_name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"rspec_ci_node_&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;KnapsackPro&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Config&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ci_node_index&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So now when SimpleCov creates a &lt;code&gt;.resultset.json&lt;/code&gt; it will have a specific key depending on which CI node it was run in like the example below. This will be useful down the line when it comes to combining the results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rspec_ci_node_0"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coverage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rspec_ci_node_1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coverage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Semaphore CI
&lt;/h3&gt;

&lt;p&gt;Below is the relevant portions of the Semaphore CI configuration. It runs the Rails tests and then uploads the coverage results as a Semaphore workflow artifact. After all the parallel tests have completed, it will run a job to collate the coverage results from all the machines.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.semaphore/semaphore.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rails&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Tests"&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Rails&lt;/span&gt;
          &lt;span class="na"&gt;parallelism&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
          &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./.semaphore/helpers/rails_tests.sh&lt;/span&gt;
      &lt;span class="na"&gt;epilogue&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;always&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./.semaphore/helpers/upload_test_artifacts.sh&lt;/span&gt;
      &lt;span class="na"&gt;secrets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docker-hub&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;knapsack-pro-rails&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Coverage"&lt;/span&gt;
  &lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rails&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Tests"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;env_vars&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;SEMAPHORE_RAILS_JOB_COUNT&lt;/span&gt;
        &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;10"&lt;/span&gt;
    &lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Collate Results&lt;/span&gt;
        &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./.semaphore/helpers/calc_code_coverage.sh&lt;/span&gt;
    &lt;span class="na"&gt;secrets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docker-hub&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is the bash file which executes the Rails tests on each parallel machine. It sets up the Rails environment and then runs Knapsack Pro in Queue Mode.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.semaphore/helpers/rails_tests.sh&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.semaphore.yml &lt;span class="nt"&gt;--no-ansi&lt;/span&gt; run &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;KNAPSACK_PRO_TEST_FILE_PATTERN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"spec/**/*_spec.rb"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ci bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"bin/rake ci:setup db:create db:structure:load knapsack_pro:queue:rspec['--no-color --format progress --format RspecJunitFormatter --out tmp/rspec-junit/rspec.xml']"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the bash file which is responsible for uploading the SimpleCov results from each machine. It compresses the coverage directory and uploads it to Semaphore.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.semaphore/helpers/upload_test_artifacts.sh&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"tmp/rspec-junit"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Pushing rspec junit results"&lt;/span&gt;
  artifact push job tmp/rspec-junit &lt;span class="nt"&gt;--destination&lt;/span&gt; semaphore/test-results/
&lt;span class="k"&gt;fi

if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"coverage"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Pushing simplecov results"&lt;/span&gt;
  &lt;span class="nb"&gt;tar &lt;/span&gt;czf coverage_&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SEMAPHORE_JOB_INDEX&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.tgz &lt;span class="nt"&gt;-C&lt;/span&gt; coverage &lt;span class="nb"&gt;.&lt;/span&gt;
  artifact push workflow coverage_&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SEMAPHORE_JOB_INDEX&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.tgz
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, this is the bash file for collating all the results from Semaphore. It will download the coverage artifacts from each parallel machine and run a rake task which will collate them and then upload the results into a combined &lt;code&gt;total_coverage.tgz&lt;/code&gt; file as shown below:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.semaphore/helpers/calc_code_coverage.sh&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;eval echo&lt;/span&gt; &lt;span class="s2"&gt;"{1..&lt;/span&gt;&lt;span class="nv"&gt;$SEMAPHORE_RAILS_JOB_COUNT&lt;/span&gt;&lt;span class="s2"&gt;}"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;artifact pull workflow coverage_&lt;span class="nv"&gt;$i&lt;/span&gt;.tgz&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;mkdir &lt;/span&gt;coverage_&lt;span class="nv"&gt;$i&lt;/span&gt;
  &lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xzf&lt;/span&gt; coverage_&lt;span class="nv"&gt;$i&lt;/span&gt;.tgz &lt;span class="nt"&gt;-C&lt;/span&gt; coverage_&lt;span class="nv"&gt;$i&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.semaphore.yml &lt;span class="nt"&gt;--no-ansi&lt;/span&gt; run ci bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"bin/rake coverage:report"&lt;/span&gt;
&lt;span class="nb"&gt;tar &lt;/span&gt;czf total_coverage.tgz &lt;span class="nt"&gt;-C&lt;/span&gt; coverage &lt;span class="nb"&gt;.&lt;/span&gt;
artifact push workflow total_coverage.tgz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;coverage:report&lt;/code&gt; rake task will simply call &lt;code&gt;SimpleCov.collate&lt;/code&gt; which will go through the coverage results in each folder and combine them into a single &lt;code&gt;.resultset.json&lt;/code&gt; shown below&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lib/task/coverage_report.rake&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;namespace&lt;/span&gt; &lt;span class="ss"&gt;:coverage&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;desc&lt;/span&gt; &lt;span class="s1"&gt;'Collates all result sets generated by the different test runners'&lt;/span&gt;
  &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="ss"&gt;report: :environment&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'simplecov'&lt;/span&gt;

    &lt;span class="no"&gt;SimpleCov&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;collate&lt;/span&gt; &lt;span class="no"&gt;Dir&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'coverage_*/.resultset.json'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;.resultset.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rspec_ci_node_0, rspec_ci_node_1, rspec_ci_node_2, rspec_ci_node_3, rspec_ci_node_4, rspec_ci_node_5, rspec_ci_node_6, rspec_ci_node_7, rspec_ci_node_8, rspec_ci_node_9"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coverage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Finally here's what your Semaphore workflow artifacts will look like. It will have a compressed coverage file generated on each machine and a total coverage file that we created at the very end:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lPvB-W9G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jes.al/public/wp-content/uploads/workflow_artifacts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lPvB-W9G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jes.al/public/wp-content/uploads/workflow_artifacts.png" alt="Workflow Artifact" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This approach can also be easily ported over to other CI providers by simply changing the &lt;code&gt;artifact push&lt;/code&gt; and &lt;code&gt;artifact pull&lt;/code&gt; commands to S3 or another CI specific artifact upload command.&lt;/p&gt;

&lt;p&gt;I hope this article was useful to you. Let me know if you have any questions or feedback.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://jes.al/2020/11/merging-simplecov-results-with-parallel-rails-specs"&gt;my blog&lt;/a&gt;. If you liked this post, please share it on social media and &lt;a href="https://twitter.com/jesalg"&gt;follow me on Twitter&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>simplecov</category>
      <category>ci</category>
      <category>rspec</category>
    </item>
  </channel>
</rss>
