<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Onboarding on hippotion</title><link>https://blog.hippotion.com/tags/onboarding/</link><description>Recent content in Onboarding on hippotion</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 28 Feb 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.hippotion.com/tags/onboarding/index.xml" rel="self" type="application/rss+xml"/><item><title>I Inherited a System With No Map. So I Drew Two.</title><link>https://blog.hippotion.com/posts/inherited-a-system-no-map/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://blog.hippotion.com/posts/inherited-a-system-no-map/</guid><description>How I turned a tribal-knowledge handover into a two-track learning roadmap — one track for the technology, one for our system, designed to interleave.</description><content:encoded><![CDATA[<p>When I took over DevOps, the handover was a person, not a document. That person was leaving. Everything I&rsquo;d need to keep thirty-odd services and a fleet of customer servers alive lived in his head, in scattered runbooks, and in the muscle memory of having done it before. The classic shape: the system worked, and exactly one human knew why.</p>
<p>So the first real project wasn&rsquo;t a migration or a dashboard. It was writing down the system before the only other copy walked out the door.</p>
<p>The obvious move is to write <em>the docs</em> — one big knowledge base, ordered however the system happens to be wired. I tried that for about a day. It doesn&rsquo;t work, and the reason it doesn&rsquo;t work is the whole point of this post.</p>
<h2 id="the-two-questions-a-new-hire-is-actually-asking">The two questions a new hire is actually asking</h2>
<p>Watch someone learn an unfamiliar platform and you&rsquo;ll notice they&rsquo;re never confused about one thing. They&rsquo;re confused about two, and they&rsquo;re different kinds of confused.</p>
<p>The first is <strong>&ldquo;what is this technology?&rdquo;</strong> — what&rsquo;s a Pod, what does ArgoCD actually do, why would anyone want a secret manager with leases. This confusion is generic. It has nothing to do with us. The answer is the same whether you&rsquo;re here or anywhere else.</p>
<p>The second is <strong>&ldquo;how do <em>we</em> use it?&rdquo;</strong> — where our ArgoCD lives, how our customer tokens are minted, which Grafana panel goes red first when a backup stalls. This confusion is entirely local. No textbook will ever answer it, because the answer is our repo and our decisions.</p>
<p>A single linear document forces these two into one sequence, and they fight. Explain Kubernetes from scratch and the engineer who already knows it skims and misses the system-specific bit buried in paragraph six. Skip the basics and the engineer who <em>doesn&rsquo;t</em> know it is lost before they reach anything useful. You can&rsquo;t order one list to serve both readers. So I stopped trying.</p>
<h2 id="track-1-is-the-textbook-track-2-is-the-house">Track 1 is the textbook. Track 2 is the house.</h2>
<p>The fix was to split the knowledge base along that exact seam.</p>
<p><strong>Track 1 — Technical Foundation.</strong> Ten pages of generic DevOps: Linux, containers, Kubernetes concepts, Helm, GitOps &amp; ArgoCD, GitLab CI/CD, Vault, Argo Events, observability, Terraform. Every page is something you could, in principle, read on any platform team on earth. Assumed background is stated up front — comfortable with Linux and shell, no Kubernetes required — so nobody has to guess whether a page is for them.</p>
<p><strong>Track 2 — Our System.</strong> A dozen-plus pages of nothing <em>but</em> us: the cluster and its app-of-apps, the deploy pipelines, the customer model, the monitoring and backup agent, our Vault layout and token expiry monitoring, SSO, the approval portal, the full new-customer install. Every page assumes you already understand the underlying tech — and if you don&rsquo;t, it links straight back to its Track 1 counterpart.</p>
<p>That&rsquo;s the rule that keeps the split honest: each Track 1 page ends with an &ldquo;in our system&rdquo; link down to its implementation, and each Track 2 page names its Track 1 prerequisite at the top. Concept and implementation are separate documents, permanently wired to each other.</p>
<p>The win is that both tracks stand alone. A senior who&rsquo;s done Kubernetes for years skips Track 1 entirely and reads Track 2 like a system design doc. A strong sysadmin with zero cloud-native experience leans hard on Track 1 first. Same knowledge base, two honest reading paths, neither one padded for the other reader.</p>
<h2 id="the-interleave-is-the-whole-trick">The interleave is the whole trick</h2>
<p>Two tracks on their own would just be two piles. The thing that makes them a <em>roadmap</em> is the order you walk them in — and the order is a zipper, not two straight lines.</p>
<pre tabindex="0"><code>Track 1: Technical Foundation        Track 2: Our System
───────────────────────────────      ──────────────────────────────────
K8s concepts          → then →       K8s in our cluster
ArgoCD concepts       → then →       our ArgoCD + GitOps flow
Vault concepts        → then →       Vault here, customer tokens
Observability theory  → then →       our Grafana dashboards, alert types
</code></pre><p>Learn the concept cold, then immediately see it wearing our clothes. The generic mental model gets nailed down by a concrete, real, in-production example before it has time to evaporate — which is the difference between &ldquo;I read about ArgoCD once&rdquo; and &ldquo;I know where our ArgoCD is and what drift looks like on it.&rdquo; Read-then-do, not read-then-read.</p>
<h2 id="four-phases-because-learn-devops-isnt-a-task">Four phases, because &ldquo;learn DevOps&rdquo; isn&rsquo;t a task</h2>
<p>A pile of pages still isn&rsquo;t a plan, so the roadmap sits on top of both tracks and spends them over twenty weeks, in four phases, each with one blunt milestone:</p>
<table>
	<thead>
			<tr>
					<th>Phase</th>
					<th>Weeks</th>
					<th>Milestone</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Foundations</td>
					<td>1–3</td>
					<td>Can describe every component and monitor alerts</td>
			</tr>
			<tr>
					<td>Operations</td>
					<td>4–8</td>
					<td>Can deploy a customer stack and restore a backup solo</td>
			</tr>
			<tr>
					<td>Ownership</td>
					<td>9–14</td>
					<td>Can install a new customer from scratch</td>
			</tr>
			<tr>
					<td>Mastery</td>
					<td>15–20</td>
					<td>Can train someone else</td>
			</tr>
	</tbody>
</table>
<p>The milestones are deliberately verbs, not reading counts. Nobody is &ldquo;done with Phase 2&rdquo; because they finished the pages. They&rsquo;re done when they&rsquo;ve restored a backup without me in the room. The last milestone is the one that matters most to me personally — <em>can train someone else</em> — because that&rsquo;s the only state in which I&rsquo;m allowed to be hit by a bus.</p>
<h2 id="the-readiness-tracker-or-vibes-dont-scale">The readiness tracker, or: vibes don&rsquo;t scale</h2>
<p>Here&rsquo;s the part I&rsquo;m most attached to, because it&rsquo;s the part that fixes the original problem. &ldquo;Are you ready to own this?&rdquo; answered by gut feel is exactly the tribal-knowledge trap I was trying to escape, just relocated into the new hire&rsquo;s head.</p>
<p>So full ownership is broken into eight weighted domains, and at the end of every phase you score yourself against them — honestly — and then study your <em>lowest</em> numbers, not your favorites. It turns &ldquo;do I know enough yet?&rdquo; from a vibe into a number with a gap next to it. The same instinct I&rsquo;d apply to a service I&rsquo;m monitoring, pointed at a person&rsquo;s readiness instead. You don&rsquo;t get to feel ready. You get to be measurably less unready every three weeks.</p>
<h2 id="what-id-tell-the-next-me">What I&rsquo;d tell the next me</h2>
<p>The mistake I almost made was treating onboarding docs as a <em>description of the system</em>. They&rsquo;re not. A description is ordered by how the machine is built. Onboarding has to be ordered by how a human learns — and a human learning a platform is running two processes at once, the general and the specific, and you have to feed both without starving either.</p>
<p>Splitting the knowledge base in two felt like more work and more surface to maintain. It was the opposite. Now when the tech changes, I edit Track 1. When <em>we</em> change, I edit Track 2. The seam that makes it easy to read is the same seam that makes it easy to keep alive.</p>
<p>The handover I got was a person. The handover I&rsquo;m leaving is a map — and it&rsquo;s drawn so the next person can read it without me standing behind them. That was the entire goal. The fact that I can now point a brand-new hire at a URL instead of at my calendar is just the proof it worked.</p>
]]></content:encoded></item></channel></rss>