<?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: Timothy Opango</title>
    <description>The latest articles on Forem by Timothy Opango (@opango_timmy14).</description>
    <link>https://forem.com/opango_timmy14</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%2F3911686%2F6a61d68a-09e4-417c-81ec-fd4ee066242c.jpg</url>
      <title>Forem: Timothy Opango</title>
      <link>https://forem.com/opango_timmy14</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/opango_timmy14"/>
    <language>en</language>
    <item>
      <title>Why a Rugby Obsessed Developer is Writing This Series</title>
      <dc:creator>Timothy Opango</dc:creator>
      <pubDate>Sat, 16 May 2026 13:45:57 +0000</pubDate>
      <link>https://forem.com/opango_timmy14/why-a-rugby-obsessed-developer-is-writing-this-series-4md6</link>
      <guid>https://forem.com/opango_timmy14/why-a-rugby-obsessed-developer-is-writing-this-series-4md6</guid>
      <description>&lt;p&gt;Hey dev.to community,&lt;br&gt;
My name is Timothy. I am a software developer by day and a rugby fanatic by... well, every other available moment. I've spent some time building systems and debugging and I've also spent just as many hours getting smashed in rucks, chasing breakdowns and screaming at referees(sorry, refs).&lt;br&gt;
For a long time I kept this two worlds separate. Then one day it hit me, rugby and software engineering are weirdly similar. Both are chaotic, high stakes, team-based, require important decisions, constant iteration and a strange mix of brute force and beautiful strategy.&lt;br&gt;
The realisation became the spark of this series: &lt;strong&gt;Rugby and Code: Tackling Tech Like a Foward.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What to Expect in This Series&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Over the next 10 posts, I'm going to explore the beautiful game through the eyes of a developer (and occasionally the other way around). We'll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How rugby concept map directly to software architecture and team practices&lt;/li&gt;
&lt;li&gt;Real tech being used in professional rugby&lt;/li&gt;
&lt;li&gt;Building rugby-related applications&lt;/li&gt;
&lt;li&gt;Emerging tech in the sport&lt;/li&gt;
&lt;li&gt;Leadership, resilience and culture lessons that translate between the pitch and the sprint board&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you play rugby, only know it from Rugby 7's or Rugby World Cup or are completely new to the sport, this series is for you. If you love analogies that actually make sense and practical takeaways you can use in your work, you're in the right place.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;My Rugby and Tech Background (Quick Version)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I started playing rugby in school. I was never the biggest or fastest guy on the pitch, so I had to rely on positioning, reading the game and technical understanding. That mindset transferred straight into coding.&lt;br&gt;
Over the years I've analysed match data just for fun, coached junior players while thinking about feedback loops and iteration and watched how professional teams use technology to get marginal gains.&lt;br&gt;
Rugby taught me more about system thinking, resilience under pressure and true teamwork than many stand-ups and retrospectives ever did.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Beautiful Chaos We'll Explore&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Think about it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A scrum is literally a self-organising team fighting for possession, sounds familiar to any agile team?&lt;/li&gt;
&lt;li&gt;A ruck is resource contention and quick decision making&lt;/li&gt;
&lt;li&gt;Phases of play are like deployment pipelines. You want clean ball, quick recycling and forward momentum.&lt;/li&gt;
&lt;li&gt;One moment of individual brilliance can change everything, but it only works because of the other 14 other people doing their jobs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds like any successful software project you've worked on?&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why This Matters Now&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Rugby is going through its own digital transformation just like our industry. GPS trackers, AI referee assistance(TMO), performance analytics, fan engagement platforms and many more. The sport is becoming a living laboratory for many technologies we work with daily.&lt;br&gt;
In this series we'll look under the hood at what's actually happening and extract lessons we can apply as builders.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>How Real Growth Happens in Software Development</title>
      <dc:creator>Timothy Opango</dc:creator>
      <pubDate>Tue, 12 May 2026 14:25:09 +0000</pubDate>
      <link>https://forem.com/opango_timmy14/how-real-growth-happens-in-software-development-55b9</link>
      <guid>https://forem.com/opango_timmy14/how-real-growth-happens-in-software-development-55b9</guid>
      <description>&lt;p&gt;Most learning resources focus on clean examples and ideal outcomes. You follow steps, write some code and everything works. It feels productive but it rarely reflects how real development actually happens. Real growth starts when things stop working.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Constraints change everything&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It’s easy to write code when there are no rules. You can always pick the fastest or simplest approach and move on. But introduce operation limitations, performance requirements, strict rule and everything changes. You’re forced to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Think before coding&lt;/li&gt;
&lt;li&gt;Evaluate alternatives&lt;/li&gt;
&lt;li&gt;Optimize intentionally instead of accidentally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Constraints push you out of autopilot and into problem-solving mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The gap between “working” and “robust”&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There’s a big difference between code that works once and code that works consistently.At first, you might:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assume inputs are always valid&lt;/li&gt;
&lt;li&gt;Ignore edge cases&lt;/li&gt;
&lt;li&gt;Skip error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then reality hits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paths break&lt;/li&gt;
&lt;li&gt;Inputs vary&lt;/li&gt;
&lt;li&gt;Environments behave differently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s when you start learning what robustness really means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing defensive code&lt;/li&gt;
&lt;li&gt;Handling failure gracefully&lt;/li&gt;
&lt;li&gt;Designing for unpredictability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Structure is not optional&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As systems grow, unstructured code quickly becomes a problem.Without clear boundaries, you end up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logic scattered everywhere&lt;/li&gt;
&lt;li&gt;Hard-to-test components&lt;/li&gt;
&lt;li&gt;Tight coupling between parts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With structure, everything improves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code becomes easier to reason about&lt;/li&gt;
&lt;li&gt;Changes become safer&lt;/li&gt;
&lt;li&gt;Bugs become easier to isolate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good structure isn’t about perfection, it’s about control.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The importance of environment awareness&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A piece of code doesn’t run in isolation. It runs in an environment and that environment matters more than most people expect. Differences in file systems, dependencies and runtime configurations can completely change behavior. Understanding this forces you to think beyond your local setup and consider portability and consistency across systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Debugging is where learning happens&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Writing code feels productive. Debugging feels frustrating. But debugging is where the real understanding comes from. When something breaks, you’re forced to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trace execution step by step&lt;/li&gt;
&lt;li&gt;Question assumptions&lt;/li&gt;
&lt;li&gt;Understand how components interact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, this builds intuition—the kind you can’t get from tutorials.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Iteration beats perfection&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the biggest shifts in mindset is moving away from trying to get everything right the first time. Real progress looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build something simple&lt;/li&gt;
&lt;li&gt;Break it&lt;/li&gt;
&lt;li&gt;Understand why it broke&lt;/li&gt;
&lt;li&gt;Improve it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repeat that cycle enough times and your skill level compounds.&lt;/p&gt;

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

&lt;p&gt;If you want to grow as a developer, focus less on getting things right immediately and more on understanding why things go wrong.Because in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code will fail&lt;/li&gt;
&lt;li&gt;Assumptions will break&lt;/li&gt;
&lt;li&gt;Systems will behave unexpectedly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your ability to navigate that uncertainty is what truly defines your skill. Not what you can build when everything works, but what you can fix when it doesn’t.&lt;/p&gt;

</description>
      <category>career</category>
      <category>learning</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
