<?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>Forem: Raymond Oyondi</title>
    <description>The latest articles on Forem by Raymond Oyondi (@raymondoyondi).</description>
    <link>https://forem.com/raymondoyondi</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%2F3773098%2F6493256d-cd7c-48b6-876c-ab4ed331ece7.png</url>
      <title>Forem: Raymond Oyondi</title>
      <link>https://forem.com/raymondoyondi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/raymondoyondi"/>
    <language>en</language>
    <item>
      <title>The "Senior" Trap: Why Technical Expertise Isn't Enough for Senior Engineers</title>
      <dc:creator>Raymond Oyondi</dc:creator>
      <pubDate>Sat, 14 Feb 2026 19:11:20 +0000</pubDate>
      <link>https://forem.com/raymondoyondi/the-senior-trap-why-technical-expertise-isnt-enough-for-senior-engineers-5afi</link>
      <guid>https://forem.com/raymondoyondi/the-senior-trap-why-technical-expertise-isnt-enough-for-senior-engineers-5afi</guid>
      <description>&lt;p&gt;I’ve met many brilliant developers who write flawless code but struggle to move beyond a Mid-Level role. Conversely, I’ve met Senior Engineers who are not the best coders on the team, but are indispensable.&lt;/p&gt;

&lt;p&gt;What is the difference? The shift from Mid-Level to Senior is not a linear progression of coding speed or knowledge of new frameworks. It is a fundamental shift in mindset—from shipping features to shipping impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Shift: From Code to Context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A junior engineer asks: "How do I fix this bug?"&lt;br&gt;
A mid-level engineer asks: "What is the best architectural pattern to use here?"&lt;br&gt;
A senior engineer asks: "Should we be building this feature at all?"&lt;/p&gt;

&lt;p&gt;As a senior engineer, your job is to manage complexity and reduce risk. You are not just writing code; you are building a product that must be maintained for years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 1: Technical Debt is a Business Choice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You must learn to negotiate with Product Managers. Understand that, sometimes, quick and dirty is the right decision to meet a market deadline. However, you are responsible for flagging the debt and ensuring it gets paid back. A true Senior knows when to compromise and when to stand their ground on technical quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 2: Mentorship and Code Review as Leverage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your impact is no longer measured solely by your personal velocity, but by the velocity of your team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Code Reviews: Don't just look for syntax errors. Look for architectural flaws, security risks, and edge cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mentorship: Teach others how to think, not just how to code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rule 3: Embrace Ambiguity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Senior engineers are expected to take vague requirements ("make the dashboard faster") and turn them into actionable technical plans. This requires digging into data, talking to stakeholders, and breaking down huge problems into small tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule 4: Stop Falling in Love with Your Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The hardest part of seniority is realizing that the best code is often the code you delete. If a complex solution can be replaced by a simpler, more maintainable one, do it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Being a senior engineer is about leadership, communication, and technical strategy. It’s about being the person who brings calm to a high-pressure situation, not the person who writes the most lines of code.&lt;/p&gt;

</description>
      <category>career</category>
      <category>senior</category>
      <category>leadership</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Beyond console.log: Building a Robust Observability Pipeline in 2026</title>
      <dc:creator>Raymond Oyondi</dc:creator>
      <pubDate>Sat, 14 Feb 2026 19:07:40 +0000</pubDate>
      <link>https://forem.com/raymondoyondi/beyond-consolelog-building-a-robust-observability-pipeline-in-2026-49c2</link>
      <guid>https://forem.com/raymondoyondi/beyond-consolelog-building-a-robust-observability-pipeline-in-2026-49c2</guid>
      <description>&lt;p&gt;The days of relying solely on application logs to debug complex, distributed systems are over. With microservices architectures and serverless functions becoming the standard, understanding the state of your application requires more than just knowing what happened—it requires knowing where, why, and how it happened across a sprawling infrastructure.&lt;/p&gt;

&lt;p&gt;In 2026, observability isn't just about logs; it's about the three pillars: Metrics, Logs, and Distributed Tracing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Shift from Monitoring to Observability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Monitoring tells you when a system is broken (e.g., CPU &amp;gt; 90%). Observability tells you why it is broken (e.g., "Service A is slow because Service B is taking 500ms to query PostgreSQL").&lt;/p&gt;

&lt;p&gt;An effective observability pipeline must be proactive, not reactive. If you are waiting for a user to report an error before you see it, your observability pipeline has failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Designing the Pipeline: The OpenTelemetry Standard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenTelemetry (OTel) has emerged as the industry-standard framework for instrumenting, generating, collecting, and exporting telemetry data. By adopting OTel, you avoid vendor lock-in and create a unified, standard data format for your traces and metrics.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Instrumentation: Use OpenTelemetry auto-instrumentation libraries to collect data from your applications without changing your code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collection: Deploy an OpenTelemetry Collector as a sidecar or agent. This component is crucial because it decouples your application from the backend monitoring tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backend: Send the data to a backend of your choice (e.g., Grafana Tempo, Honeycomb, Datadog).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key 2026 Trends: Distributed Tracing &amp;amp; Edge Computing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Context Propagation: When a request flows through multiple microservices, you must ensure the same trace ID accompanies it. This allows you to visualize the entire request journey.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edge Functions: With more logic moving to the edge (e.g., Vercel, Cloudflare Workers), your traces must span from the edge function down to your backend APIs, giving a complete picture of latency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Implementing Real-time Alerts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't alert on everything. Alert on symptoms, not causes. A high CPU is a cause; a high 5xx error rate is a symptom. Use tools like Prometheus for metrics and Grafana for visualization to set up SLI/SLO (Service Level Indicator/Objective) alerting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a robust observability pipeline takes time, but it is an investment in stability. It turns debugging from a frantic guessing game into a methodical investigation.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>observability</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
