<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://emauton.org//feed.xml" rel="self" type="application/atom+xml" /><link href="https://emauton.org//" rel="alternate" type="text/html" /><updated>2024-04-16T13:36:24+00:00</updated><id>https://emauton.org//feed.xml</id><title type="html">emauton.org</title><subtitle>Cian's writing on tech etc.</subtitle><author><name>Cian Synnott</name></author><entry><title type="html">Starting new things as a Staff+ engineer</title><link href="https://emauton.org//2024/03/29/starting-new-things/" rel="alternate" type="text/html" title="Starting new things as a Staff+ engineer" /><published>2024-03-29T10:00:00+00:00</published><updated>2024-03-29T10:00:00+00:00</updated><id>https://emauton.org//2024/03/29/starting-new-things</id><content type="html" xml:base="https://emauton.org//2024/03/29/starting-new-things/"><![CDATA[<p>From time to time I’m asked how I approach getting started in a new area - a new job or a new role. I’m told I do this well. Notes I find myself sharing:</p>

<ul>
  <li>A <a href="https://gist.github.com/emauton/e470a1f84da1c615c393d7b37a37624d">short piece on onboarding</a> I wrote about my first 6 months at Datadog.
    <ul>
      <li>This was quickly typed out as a response to a question on <a href="https://randsinrepose.com/welcome-to-rands-leadership-slack/">RLS</a>; it’s a bit stream-of-consciousness but interesting.</li>
      <li>The summary <a href="https://www.youtube.com/watch?v=aLu3NazBbLw">video</a> and <a href="https://www.ricklindquist.com/notes/the-first-90-days">notes</a> on Watkins’ <a href="https://hbr.org/books/watkins">The First 90 Days</a> linked here are particularly useful I think.</li>
    </ul>
  </li>
  <li>When moving to my current role in late 2022 - which is larger than the one I started in - I took similar approaches, in particular the ongoing list of “hypotheses/questions” to guide early conversations.
    <ul>
      <li>I also collected notes on “hopes” - a common question I have when meeting folks in a new area is what they’re hoping for (or worried about) as a new senior person steps into the space.</li>
      <li>I find at some point I’ve built up enough context and stop updating these lists; usually after 2 months or so in the new space.</li>
      <li>Compare <a href="https://randsinrepose.com/archives/the-blue-tape-list/">The Blue Tape List</a>.</li>
    </ul>
  </li>
  <li>An alignment exercise I use is to outline my <a href="https://emauton.org/2022/11/13/writing-your-job-description/">job description</a> from time to time and share it, in various formats.
    <ul>
      <li>This might not land well in every environment, but has worked well for me.</li>
      <li>Note that there’s a section on this in the <a href="https://noidea.dog/staff">Staff Engineer’s Path</a> which is worth owning if you don’t have it already.</li>
    </ul>
  </li>
  <li><a href="https://www.youtube.com/watch?v=uA00zR0Fmck">Starting a new job as a Staff+</a> from <a href="https://amyunger.com/">Amy Unger</a> is very well framed and full of good ideas.</li>
</ul>]]></content><author><name>Cian Synnott</name></author><category term="thoughts" /><category term="work" /><summary type="html"><![CDATA[From time to time I’m asked how I approach getting started in a new area - a new job or a new role. I’m told I do this well. Notes I find myself sharing:]]></summary></entry><entry><title type="html">Types of engineering metrics</title><link href="https://emauton.org//2023/12/27/types-of-engineering-metrics/" rel="alternate" type="text/html" title="Types of engineering metrics" /><published>2023-12-27T18:30:00+00:00</published><updated>2023-12-27T18:30:00+00:00</updated><id>https://emauton.org//2023/12/27/types-of-engineering-metrics</id><content type="html" xml:base="https://emauton.org//2023/12/27/types-of-engineering-metrics/"><![CDATA[<p>I’ve found myself expressing from time to time that there are different types
or “levels” of metrics we can use in and around engineering, and that each has
different requirements.</p>

<p>An incomplete set of examples that I feel are most relevant to <strong>engineers</strong>
follows. Note that as we move “up” levels of abstraction here, the value of the
metrics is increasingly about the conversation that “pushing on the numbers”
can stimulate.</p>

<p>See <a href="https://lethain.com/measuring-engineering-organizations/">Will Larson’s
notes</a> for more
discussion and a broader taxonomy, mostly focused on “investment-level” metrics
below.</p>

<h3 id="1-operations-level-metrics">1. Operations-level metrics</h3>

<p>Emitted by our software services: the stuff we put on service dashboards,
representing workloads and how they’re doing. <strong>May</strong> have alerting attached,
but <a href="https://emauton.org/2014/07/12/alerting-in-production-systems/">probably
shouldn’t</a>.</p>

<p>Precision is king, here: we want each metric to have a clear meaning and
implications. “Muddiness” or subtlety is the enemy. A good example of the
latter is <a href="https://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html">Linux load
average</a>.
<em>Caveat operator</em>.</p>

<h3 id="2-service-level-metrics">2. Service-level metrics</h3>

<p>Emitted by our services and the infrastructure around them (for example,
<a href="https://en.wikipedia.org/wiki/Synthetic_monitoring">synthetic probes</a>). Often
used as
<a href="https://en.wikipedia.org/wiki/Service_level_indicator">service level indicators</a>
to understand customer experience and <a href="https://en.wikipedia.org/wiki/User_journey">user
journeys</a>; may also include
adoption and capacity metrics. <strong>Often</strong> have alerting attached.</p>

<p>While we want to <em>define</em> these precisely - see for example the <a href="https://sre.google/resources/practices-and-processes/art-of-slos/">Art of SLOs
workshop</a> -
it’s OK for there to be uncertainties, subtleties, and warnings attached. Often
we have to choose proxies for customer experience, or it’s prohibitively
expensive to measure some important part of a user journey.</p>

<p>So we’re fine with service-level metrics needing to have an explanation
attached: some bullet points, or a few paragraphs.</p>

<h3 id="3-investment-level-metrics">3. Investment-level metrics</h3>

<p>Gathered in lots of different ways, often across a broad swath of systems and
services. Used to drive or inform a specific large-scale investment by a group
or organization: a difficult migration, the health of some org-level process.
As likely to be delivered by a more traditional
<a href="https://en.wikipedia.org/wiki/Business_intelligence">BI</a> system as by Datadog
dashboards. <strong>Rarely</strong> have alerting attached.</p>

<p>Again, we want a reasonably clear definition of a metric like this. However, it
can be even less precise than a service-level metric, and have more caveats and
edge-cases attached. It’s almost always a proxy - often a “trailing edge”
indicator - for some important effort we’re trying to drive across the
business.</p>

<p>It’s OK for a metric like this to have a page or a whole document explaining
it, as long as we agree it provides a useful “needle we can move” over time.</p>]]></content><author><name>Cian Synnott</name></author><category term="thoughts" /><category term="work" /><summary type="html"><![CDATA[I’ve found myself expressing from time to time that there are different types or “levels” of metrics we can use in and around engineering, and that each has different requirements.]]></summary></entry><entry><title type="html">Effective communication and surprise</title><link href="https://emauton.org//2023/10/01/effective-communication-and-surprise/" rel="alternate" type="text/html" title="Effective communication and surprise" /><published>2023-10-01T22:30:00+00:00</published><updated>2023-10-01T22:30:00+00:00</updated><id>https://emauton.org//2023/10/01/effective-communication-and-surprise</id><content type="html" xml:base="https://emauton.org//2023/10/01/effective-communication-and-surprise/"><![CDATA[<p>A ~15 minute talk intended for software engineers, delivered at an internal engineering summit at <code class="language-plaintext highlighter-rouge">$current</code>, September 2023.</p>

<p><img src="/img/effective-communication-and-surprise/slide-1.png" alt="A waving hand emoji" width="300" /></p>

<p>Hi folks, my name is Cian Synnott. I’m senior staff engineer with Runtime Infrastructure - that’s our production compute, networking, identity &amp; access management, and deployments systems. These days I’m focusing mainly on issues around cloud resource management.</p>

<p>The title of this talk is “Effective communication”. I’ll make a few general points, and then focus on the idea of <strong>surprise</strong> in communication.</p>

<p>I’ll talk about ways to reduce the frequency and impact of surprise, and how to react productively to it. Finally I’ll talk a little about the practice of empathy for our colleagues.</p>

<p>We’ll have time at the end for a discussion. I’m curious to hear whether the ideas I present resonate with you.</p>

<p><img src="/img/effective-communication-and-surprise/slide-2.png" alt="A speech bubble emoji" width="300" /></p>

<p>Communication at work is an enormous topic. I’ll touch on a couple of general points and then I’m going to focus on one interesting facet: surprise.</p>

<p>First up, what’s “effective” communication? Not just “impactful” - it’s easy to have a big impact with communication, positive or negative. “Effective” implies a goal: communication that has the desired effect.</p>

<p>There’s a goal behind most communication at work: convince someone of something; share context so they understand something that we know; learn ourselves, or teach; make sure we have the same understanding of a problem, or shared priorities.</p>

<p>If you’re trying to communicate something, particularly to a larger audience, and you can’t express what your goal is in doing so, maybe get back to the drawing board.</p>

<p>Second, the myth of the lone genius programmer is persistent in our industry, but the truth is that getting large things accomplished means working as part of a team - where you are communicating constantly.</p>

<p>As such, communication skills are first order skills for software engineers. We tend to valorize pure technical capability, but communication skills are easily as important.</p>

<p>Third, everything we communicate is to some audience of fellow humans: another engineer, our manager, our team, partners, customers, our organization. Not one person in this world sees things exactly the way I do or you do. We each have our own background, context, worries, preoccupations.</p>

<p>So we’re crossing a chasm when we communicate: trying to get our meaning, our understanding, our intention across to the people on the other side. To be effective - to achieve our goals - we have to try to understand where our audience is at and meet them there.</p>

<p><img src="/img/effective-communication-and-surprise/slide-3.png" alt="An exclamation mark emoji" width="300" /></p>

<p>Let’s talk about surprise. Our team, our work group, our company is a community or a social system. And that combines with our technical systems to make our system of work - you hear people talk about “socio-technical” systems.</p>

<p>What do we call a big surprise in our technical systems? An incident! An incident requires response - often by many people - incident management, cleanup. It can be very chaotic. Usually an incident turns out to contain a series of surprises; some of those are in our social system. A good incident review will address these directly.</p>

<p>Our technical systems aside, communication is full of surprises. We can experience these surprises as positive or negative. Many are inconsequential. But big, negative surprises - just like a technical incident - can create a lot of chaos and upset.</p>

<p>As a few examples: unexpected negative feedback; realizing that you and a colleague have a totally different conception of a problem you’ve worked together on for weeks; finding out your company or your customers don’t value something your team has sunk a lot of time into.</p>

<p>Surprise in communication is the enemy of effective communication. It gets in the way of our goals, creates churn that we have to manage, and potentially derails whole efforts. So broadly speaking “don’t surprise people!”</p>

<p>Much easier said than done. Just like in our technical systems, surprise in our system of communication is inevitable. But what we can do is:</p>

<ul>
  <li>limit how often we surprise people;</li>
  <li>limit the impact when we do; and</li>
  <li>react productively to surprise - ours or others.</li>
</ul>

<p><img src="/img/effective-communication-and-surprise/slide-4.png" alt="A megaphone emoji" width="300" /></p>

<p>How do we surprise people less often and less extremely? There’s a framing from Elizabeth Ayer that I love and use: “<a href="https://medium.com/@ElizAyer/dont-ask-forgiveness-radiate-intent-d36fd22393a3">radiating intent</a>”. Her analogy is a turn signal on the road: if you indicate what you intend to do, you won’t surprise the people around you when you proceed.</p>

<p>So say you want to make a technical change. You say “I intend to do X”. Repeat that in a few contexts: for example 1:1s, team meetings, customer meetings, an RFC for something bigger. You can get a few different reactions.</p>

<ul>
  <li>Radio silence? Sounds like assent to me, go ahead and do it. You might still surprise someone, but you created a lot of opportunity for feedback.</li>
  <li>More commonly, you’ll get some feedback: maybe your team says “yeah that’s great, please do it”; maybe your manager says “Y is equally important and more urgent, could you take a look at that instead?” Maybe a colleague tells you that X is a terrible idea, we tried it three years ago, it’ll never work. That’s a good start to a conversation; you’ll learn something.</li>
</ul>

<p>Note how different this is from “asking forgiveness rather than permission”. We’re still not asking permission: just stating our intent. But by doing that up front we create the opportunity for feedback. And we turn a potentially big surprise - “I went ahead and did this” - into a small one - “I intend to do this”.</p>

<p>Similarly, we can limit surprise by sharing the context we have with others. A big source of surprise in communication is unspoken assumptions, background we don’t share, missing information, differing incentives.</p>

<p>So we can “radiate context” as well as “radiating intent”: actively and readily sharing what we know as well as making connections between efforts and people.</p>

<p>For example, a little FYI or heads-up can go a long way - “in case you missed it, X is working on something similar from another direction, did you see their doc?”.</p>

<p>Or realizing in a meeting with a partner team that they’re unaware of the broader reasons behind how you’re prioritizing, and sharing those directly.</p>

<p>A <a href="https://twitter.com/deniseyu21/status/1357832803531051009">great note</a> from Denise Yu on what makes a strong senior engineer: “in every conversation you’re part of, create clarity and reduce chaos.”</p>

<p><img src="/img/effective-communication-and-surprise/slide-5.png" alt="A question mark emoji" width="300" /></p>

<p>Reducing frequency and impact aside, surprise is inevitable. So what about when you’ve surprised someone, or you’re surprised? Emotions are immediately heightened. Depending on the situation, you may experience a physical reaction: an adrenaline spike, heart racing, face flushing. And I don’t know about you, but these are things I do not enjoy at work.</p>

<p>But: just like in technical incidents, every surprise is an opportunity to learn. And we learn most when we don’t jump straight to blame and judgement. I won’t call those a natural reaction - who knows - but they’re certainly a common default.</p>

<p>Instead, we can take a breath, feel what we feel, and then set that aside and <strong>get very curious</strong>. What happened here? What does this person know that I don’t? Have I misunderstood something? What’s important to them in this situation?</p>

<p>A friend of mine calls this “leading with curiosity”, which I love because of the double meaning: both the sense of starting and of leadership. I often think of it as a means of “lowering the temperature”, calling back to Denise Yu’s note on clarity and chaos.</p>

<p>I find people react well to curiosity. I mean, genuine curiosity - not necessarily 20 questions. But “Huh, what happened here?” and a real attempt to understand their perspective.</p>

<p><img src="/img/effective-communication-and-surprise/slide-6.png" alt="A heart emoji" width="300" /></p>

<p>Each of these ideas - radiating your intent and context; leading with curiosity - is a practical exercise of empathy: we’re trying to meet our colleagues where they’re at when we communicate.</p>

<p>That is frequently not where we’d like them to be: every person brings their own stuff with them to every conversation. So communicating effectively - meeting our goals - is always going to require navigating and dealing with surprise.</p>

<p>The good news is that these are skills! We can practice and get better at them. Just like blameless incident retrospectives are a trained response in an organization, we can train our personal response to surprise.</p>

<p>Sometimes, maybe particularly in our industry, we speak in a very “fixed” way about so-called soft skills: Cian “is” an empathetic engineer, like I was born that way. I assure you I was not.</p>

<p>We can learn to share our perspectives more effectively, and to understand other people’s better; to turn our rapid judgements into hypotheses fuelling our curiosity; and ultimately to achieve our goals more often when we communicate.</p>

<p>To summarize:</p>

<ul>
  <li>Don’t surprise people BUT</li>
  <li>Surprise is inevitable SO</li>
  <li>Radiate your intent and context AND</li>
  <li>Lead with curiosity AND</li>
  <li>Remember these are learnable skills.</li>
</ul>

<p><img src="/img/effective-communication-and-surprise/slide-7.png" alt="A folded hands emoji" width="300" /></p>

<p>Thank you!</p>

<p>We have a few minutes left, so I’m interested to hear any questions you have, or any thoughts this raised. Does this resonate? Have I over-simplified?</p>

<p>A few references:</p>

<ul>
  <li><a href="https://jessitron.com/2017/05/05/code-and-coders-components-of-the-sociotechnical-system/">Code and Coders: components of the sociotechnical system - Jessitron</a></li>
  <li><a href="https://medium.com/@ElizAyer/dont-ask-forgiveness-radiate-intent-d36fd22393a3">Don’t ask forgiveness, radiate intent - Elizabeth Ayer</a></li>
  <li><a href="https://surfingcomplexity.blog/2023/08/27/operating-effectively-in-high-surprise-mode/">Operating effectively in high surprise mode - Surfing Complexity</a></li>
  <li><a href="https://kind.engineering/">Kind Engineering - Evan Smith</a></li>
</ul>]]></content><author><name>Cian Synnott</name></author><category term="talks" /><category term="thoughts" /><category term="career" /><category term="work" /><summary type="html"><![CDATA[A ~15 minute talk intended for software engineers, delivered at an internal engineering summit at $current, September 2023.]]></summary></entry><entry><title type="html">A safe pair of hands</title><link href="https://emauton.org//2022/12/24/a-safe-pair-of-hands/" rel="alternate" type="text/html" title="A safe pair of hands" /><published>2022-12-24T01:40:00+00:00</published><updated>2022-12-24T01:40:00+00:00</updated><id>https://emauton.org//2022/12/24/a-safe-pair-of-hands</id><content type="html" xml:base="https://emauton.org//2022/12/24/a-safe-pair-of-hands/"><![CDATA[<p>A lot of ink has been spilled about progressing from one “level” of
engineering to the next: junior to intermediate; intermediate to senior; and
recently we see more about senior to <a href="https://noidea.dog/staff">staff</a>.</p>

<p>There’s an important common factor in all of these career steps: being seen as
<strong>a safe pair of hands</strong>. This becomes central as you become more senior.</p>

<p>Yonatan Zunger presented a great talk at LeadDev last year that I find
myself referencing a lot: <a href="https://leaddev.com/sites/default/files/2021-09/Role%20and%20Influence%20The%20IC%20Trajectory%20Beyond%20Staff.pdf">Role and Influence: the IC trajectory beyond
Staff</a>.</p>

<p>Zunger’s framing made sense of my roles over the last decade in a way that
<a href="https://staffeng.com/guides/staff-archetypes">staff archetypes</a> didn’t. Rather
than wondering about what archetype I fit in any particular quarter, it’s much
easier to think about the mix of technical, people, product, and project
disciplines I’m applying.</p>

<p>The hidden fifth discipline is “adult supervision”, and I think that’s really
what I’m talking about here.</p>

<p>A thing I love to see - and experience! - in my colleagues is where they take
something on and I know it’ll be done <em>right</em>. Not exactly like I would do it;
not some kind of ideal that stands independent of our working context; but
<em>right</em>.</p>

<p>The problem is solved; the crisis is handled; the relevant people are informed
and involved; risks are surfaced early and when shit goes wrong - as it will! -
no-one is caught out.</p>

<p>This is level-independent! It’s perfectly possible for someone to do this in a
<em>level-appropriate</em> way. The problems and relationships you’re handling may get
a lot hairier as you step up in seniority, but the basic ideas don’t change
much.</p>

<p><a id="accountable_ref"></a>How <em>trustworthy</em> are you with your work? Do you
often <em>surprise people</em>? Can I expect you to be
<em>accountable</em><sup><a href="#accountable">1</a></sup> or do I need to rely on someone else
for that?</p>

<p>If you can answer well - no matter where you are in your career - then you’re
building a solid foundation for your next step. <strong>You’re a safe pair of
hands</strong>.</p>

<hr />
<p><a id="accountable"></a>
<a href="#accountable_ref">1</a>. I’ve heard the word “accountable” thrown around a lot in industry, often
without definition. Here’s mine:</p>

<p>Being accountable for an effort as an engineering leader has two components:
ownership, and communication.</p>

<ol>
  <li>Ownership: the effort is “yours”, and you act that way. There may be
sub-components spread across people and teams, but overall you’re the one
who’s on the hook. Your performance is assessed against the results of the
efforts you lead. Judiciously - not every effort will succeed, and that’s
OK.</li>
  <li>Communication: you can tell the detailed story of why we’re doing it, how
it relates to other efforts, how it is progressing. You actively raise
blocking issues or risks and get the necessary people together to address
them. Where you can’t, you escalate effectively.</li>
</ol>]]></content><author><name>Cian Synnott</name></author><category term="thoughts," /><category term="career," /><category term="work" /><summary type="html"><![CDATA[A lot of ink has been spilled about progressing from one “level” of engineering to the next: junior to intermediate; intermediate to senior; and recently we see more about senior to staff.]]></summary></entry><entry><title type="html">Writing your job description</title><link href="https://emauton.org//2022/11/13/writing-your-job-description/" rel="alternate" type="text/html" title="Writing your job description" /><published>2022-11-13T09:30:00+00:00</published><updated>2022-11-13T09:30:00+00:00</updated><id>https://emauton.org//2022/11/13/writing-your-job-description</id><content type="html" xml:base="https://emauton.org//2022/11/13/writing-your-job-description/"><![CDATA[<p>I joke sometimes that I rewrite my job description every 6 or 8 months. This is <em>approximately</em> true: it’s roughly the cadence that my role and focus changes. Writing it down is about setting expectations and aligning on what my manager, peers, and other colleagues need from me.</p>

<p>The format is far from fixed, though. Here are a few examples from my <a href="https://www.datadoghq.com/">current job</a> in 2022.</p>

<p>Early on, I sketched an “engagement model” with three modes:</p>

<blockquote>
  <ul>
    <li><strong>Consult</strong>:
      <ul>
        <li>Work alongside a team to help understand problems, direct energy, guide solutions.</li>
        <li>Connect teams and individuals dealing with similar problems: enable a “<a href="https://medium.com/hackernoon/designing-for-constant-evolution-41b216741974">system of theft</a>” of good practice across teams.</li>
      </ul>
    </li>
    <li><strong>Embed</strong>:
      <ul>
        <li>Given a specific problem, dig in with the team to help bootstrap initial work, or redirect/turn around struggling work.</li>
        <li>Focus on disambiguating problems to the point that they are a 10-20% stretch for folks on the team.</li>
        <li>Back off on details but continue to offer decision support.</li>
      </ul>
    </li>
    <li><strong>Coach</strong>:
      <ul>
        <li>Work with individuals (for example, coming out of <em>consult</em> or <em>embed</em> modes), enabling them to effectively own specific problems and grow via them.</li>
        <li>Focus mostly on senior engineers and team leads, with the goal of enabling them to do the same for less experienced engineers.</li>
      </ul>
    </li>
  </ul>
</blockquote>

<p>The framing of “engagement model” comes mainly from my work in <a href="https://sre.google/books/">Site Reliability Engineering</a>, and borrows more recently from <a href="https://teamtopologies.com/">Team Topologies</a>. I’ve found this resonates with other engineers too. A colleague was struggling with the transition to “more conversation and less code” in working more broadly across teams: thinking through their different scopes and priorities in terms of an engagement model proved useful.</p>

<p>A little later, my colleague <a href="https://drew.thecsillags.com/">Drew</a> and I expanded on the above to share a longer “your staff engineers and you” doc explaining how we intended to support our group. An excerpt:</p>

<blockquote>
  <p><strong>How you can use us</strong></p>

  <p>The staff engineer, team lead, and senior engineer roles are all “scaling” or “multiplicative”: we help everyone around us to be more effective. Differences are mainly in scope, focus, and expected impact.</p>

  <p>The amount and type of support a TL wants from a staff engineer depends on the TL’s focus: some are more interested in the management path, others in the technical path. Similarly, senior engineers want different guidance depending on their experience and current projects.</p>

  <p>When it comes to technical direction and decisions, each individual’s appetite for accountability and responsibility is different. We want you to take on as much as you are able to, and support you in growing that capacity.</p>

  <p>Things we can help with:</p>

  <ul>
    <li>Batting ideas around;</li>
    <li>Advice and direct support in navigating cross-team or cross-org issues;</li>
    <li>Partnership and review on technical approaches, RFCs, roadmaps;</li>
    <li>Advocacy and signal amplification for your ideas;</li>
    <li>Coaching and mentoring.</li>
  </ul>
</blockquote>

<p>Most recently, I proposed embedding with a specific team in my area. I wrote yet another “job description” for this, outlined as:</p>

<blockquote>
  <p><strong>Why?</strong></p>
</blockquote>

<blockquote>
  <ul>
    <li>For me</li>
    <li>For the team</li>
  </ul>

  <p><strong>How?</strong></p>

  <ul>
    <li>Timeline</li>
    <li>Things I expect to do</li>
    <li>Things I will not do</li>
  </ul>

  <p><strong>Other engagements</strong></p>

  <p><strong>Success criteria</strong></p>
</blockquote>

<p>What you put into a “job description” like this depends a lot on the audience: the first was mainly for my manager and peers; the second for my whole group; the third for a specific team.</p>

<p>In all cases this is about transparency and alignment. “Very senior” engineering roles are frequently <em>confusing</em>, not just for us but for the people we work with. Articulating what we’re trying to achieve and how is both personally and organizationally useful.</p>

<p>Note that Tanya Reilly covers this idea towards the end of chapter 1 of <a href="https://noidea.dog/staff">The Staff Engineer’s Path</a>, and offers a lot of useful guidance in figuring out <a href="https://www.youtube.com/watch?v=StIcRH_e6zQ">what you do here</a>.</p>]]></content><author><name>Cian Synnott</name></author><category term="thoughts," /><category term="career," /><category term="work" /><summary type="html"><![CDATA[I joke sometimes that I rewrite my job description every 6 or 8 months. This is approximately true: it’s roughly the cadence that my role and focus changes. Writing it down is about setting expectations and aligning on what my manager, peers, and other colleagues need from me.]]></summary></entry><entry><title type="html">Personal retrospectives</title><link href="https://emauton.org//2021/10/29/personal-retrospectives/" rel="alternate" type="text/html" title="Personal retrospectives" /><published>2021-10-29T10:30:00+00:00</published><updated>2021-10-29T10:30:00+00:00</updated><id>https://emauton.org//2021/10/29/personal-retrospectives</id><content type="html" xml:base="https://emauton.org//2021/10/29/personal-retrospectives/"><![CDATA[<p>As an expansion of my <a href="https://emauton.org/2015/11/05/snippets/">snippets</a>
habit, for the last 7 years I’ve written up a “yearly snippets” doc each year -
a personal retrospective for the year.</p>

<p>I’ve used various formats - from “incident review” style through
“<a href="https://www.retrium.com/retrospective-techniques/4ls">4Ls</a>” - but always with
the intention of sharing more broadly than just to me and my manager. My
colleagues have generally appreciated the perspective, and some have taken
up the practice.</p>

<p>One of my favourite things about doing this is that it’s <strong>for me</strong>. Yes, it’s
useful to my manager (and a useful way of “managing up”). I use it as input
to the local performance and review system. But I’m the main audience and it’s
my practice. I <em>hate</em> the kinds of performance mangement systems we see in tech
companies. Having something that “works around” them to my benefit is very
freeing.</p>

<p>Anyhow, <a href="https://www.brautaset.org/">Stig</a> and I wrote up some notes and
guidance about the idea at <code class="language-plaintext highlighter-rouge">$current</code>:</p>

<ul>
  <li><a href="https://circleci.com/blog/a-guide-to-personal-retrospectives-in-engineering/">A guide to personal retrospectives in engineering</a></li>
</ul>]]></content><author><name>Cian Synnott</name></author><category term="tldr," /><category term="organization," /><category term="culture," /><category term="remote" /><summary type="html"><![CDATA[As an expansion of my snippets habit, for the last 7 years I’ve written up a “yearly snippets” doc each year - a personal retrospective for the year.]]></summary></entry><entry><title type="html">Oncall compensation structures</title><link href="https://emauton.org//2021/08/31/oncall-compensation-structures/" rel="alternate" type="text/html" title="Oncall compensation structures" /><published>2021-08-31T11:45:00+00:00</published><updated>2021-08-31T11:45:00+00:00</updated><id>https://emauton.org//2021/08/31/oncall-compensation-structures</id><content type="html" xml:base="https://emauton.org//2021/08/31/oncall-compensation-structures/"><![CDATA[<p>The subject of compensation for <a href="https://johnbarton.co/posts/developers-on-call">developers
oncall</a> comes up from time to
time.</p>

<p>It can be difficult to find public examples of compensation structures to use.</p>

<p>These notes are from a quick survey of existing stuff I could find via
discussions in opsy chats, the Internet, and direct questions to my network.</p>

<h2 id="asking-questions">Asking questions</h2>

<p>First, for those on the job hunt, a list of questions to ask about oncall, gathered from the <a href="https://irishtechcommunity.com/">Irish Tech Community</a>:</p>

<ul>
  <li>Do you compensate being oncall (i.e. value the stress) or just when you get called (bullshit) or never (warning sign)?</li>
  <li>What is the response time? Is it 5 mins (no life), 15-30 mins (some life, depending on if you have kids), or an hour (you can go to the cinema with your laptop)?</li>
  <li>What percentage of your time is operations, when you’re oncall?</li>
  <li>How many people are in the rotation? If &lt; 6, is there a realistic plan in place to fix that?
    <ul>
      <li>You need at least 4 people for a reasonable shift pattern, plus one for maintenance (e.g. holidays) + one for emergency (e.g. attrition).</li>
    </ul>
  </li>
  <li>Is there one person oncall in a shift or is it a primary/secondary kind of thing?</li>
</ul>

<h2 id="notes-from-the-net">Notes from the ‘net</h2>

<p>Second, some posts that cover oncall compensation in various detail:</p>

<ul>
  <li><a href="https://www.atlassian.com/incident-management/on-call/on-call-pay">https://www.atlassian.com/incident-management/on-call/on-call-pay</a>
    <ul>
      <li>Kind of marketing white-paper stuff for OpsGenie which seems to have some support for oncall comp calculations. But some good notes on comp structures.</li>
    </ul>
  </li>
  <li><a href="https://sre.google/sre-book/being-on-call/#compensation">https://sre.google/sre-book/being-on-call/#compensation</a>
    <ul>
      <li>Google’s (short) take on it in the SRE book.</li>
    </ul>
  </li>
  <li><a href="https://johnbarton.co/posts/developers-on-call">https://johnbarton.co/posts/developers-on-call</a>
    <ul>
      <li>Has a good section on comp with philosophy as well as basic structure ideas.</li>
    </ul>
  </li>
  <li><a href="https://copyconstruct.medium.com/on-call-b0bd8c5ea4e0">https://copyconstruct.medium.com/on-call-b0bd8c5ea4e0</a>
    <ul>
      <li>Long, philosophical, no comp structure details but good thinking around why it should be comp’d in “Toward a more sustainable and humane on-call” section.</li>
    </ul>
  </li>
</ul>

<h2 id="example-structures">Example structures</h2>

<p>Finally, a set of example compensation structures from various companies.</p>

<p>A fintech company in south America:</p>

<ul>
  <li>If you are oncall but not working, +33% of equivalent hourly rate.</li>
  <li>Paged and start working, +300% of your hourly for that period.</li>
  <li>Some more extras for nights or weekends.</li>
  <li>They just exported data from Pagerduty: time working was acknowledgement → resolution.</li>
  <li>People would not resolve until they were finished any report or comms work that had to be done out-of-hours.</li>
  <li>This apparently was just how labour laws in that country apply - works the same way for doctors.</li>
</ul>

<p>A medium-sized SaaS company operating across US / EU:</p>

<ul>
  <li>Time off as standard if you actually get paged out of hours: ½ day per four hours or part thereof in responding.</li>
  <li>Comp at 25% for oncall time regardless.</li>
  <li>Comp → 100% for the time you’re responding.</li>
  <li>Because of how their shift structure works, this all tends to amount to roughly a 10% lift in salary, plus time to recover.</li>
</ul>

<p>A large multinational:</p>

<ul>
  <li>Some teams have business-hours only shifts for internal infra APIs.</li>
  <li>Other teams have customer-facing services and much stricter on-call.</li>
  <li>Those latter get paid per shift, get a mifi, and get time off etc.</li>
  <li>^ didn’t get exact comp structure here.</li>
</ul>

<p>Another large multinational:</p>

<ul>
  <li>Three tiers of oncall, depending on pager SLA.</li>
  <li>Tier 1: &gt;= 99.9% availability SLA, 5min pager response SLA.
    <ul>
      <li>Comp paid at ⅔ for outside hours</li>
      <li>That is, outside business hours accrue hours at 2h for every 3h oncall.</li>
    </ul>
  </li>
  <li>Tier 2: &gt;= 99.9% availability SLA, &gt; 5min but &lt;= 15min pager response SLA.
    <ul>
      <li>Comp paid at ⅓ for outside hours.</li>
      <li>That is, outside business hours accrue hours at 1h for every 3h oncall.</li>
    </ul>
  </li>
  <li>Tier 3: everything else, not comped.</li>
  <li>Mon-Fri comp paid outside 9-6 core hours. Sat &amp; Sun all comped.</li>
  <li>So if you were oncall 6am-6pm Mon-Sun that’d be like</li>
  <li>3 x 5h for Mon-Fri</li>
  <li>2 x 12h for Sat-Sun</li>
  <li>So 39h compensatable, converting into pay as 13h at tier 2 or 26h tier 1.</li>
  <li>You could take this as either time in lieu (at 8h/day) or cash (pro-rated to salary).</li>
</ul>

<p>A medium-sized SaaS multinational:</p>

<ul>
  <li>Shifts are either weekday or weekend.</li>
  <li>Pay according to 60h week (hourly equiv. from salary) if weekday shift.</li>
  <li>According to 40h week + 24h if weekend shift.</li>
  <li>Payout doubles if schedule includes public/bank holidays.</li>
  <li>Contact there mentioned this was very similar to structure in last job, another similar-sized SaaS.</li>
</ul>

<p><a href="https://www.intercom.com/blog/rapid-response-how-we-developed-an-on-call-team-at-intercom/">Intercom’s oncall implementation</a>:</p>

<ul>
  <li>Former Ruby monolith sharded out over the last few years into services. Heavy on AWS and <a href="https://www.intercom.com/blog/run-less-software/">running less software</a>.</li>
  <li>An unusual structure, but interesting: specifically because they have modified their approach to avoid having “too many people/teams oncall”.</li>
  <li>Virtual team, volunteers from any team in the org.</li>
  <li>6-month rotations in that virtual team, having taken a handful of shifts.</li>
  <li>Oncall went from being spread across more than 30 engineers to just 6 or 7.</li>
  <li>“We put in place a level of compensation that we were happy with for taking a week’s worth of on call shifts.”
    <ul>
      <li>Not sure of precise structure, presumably a bonus per week oncall.</li>
    </ul>
  </li>
</ul>

<p>Criteo, medium-sized Adtech HQ’d in France. This is from a <a href="https://www.reddit.com/r/devops/comments/72lj1q/what_is_your_company_oncall_compensation_model/">3y old Reddit thread</a>:</p>

<ul>
  <li>SREs are oncall. Pager response time is 30 minutes. (!)</li>
  <li>They are paid for oncall for nights/weekends etc. Exact comp unspecified.</li>
  <li>If you are paged, you get comped time as well in exchange (½ day at least).</li>
  <li>Internet &amp; phone bill reimbursed for oncall engineers.</li>
  <li>If you work during the night, you have to stay home until you get 11h consecutive rest (French law).</li>
</ul>]]></content><author><name>Cian Synnott</name></author><category term="work," /><category term="operations," /><category term="process" /><summary type="html"><![CDATA[The subject of compensation for developers oncall comes up from time to time.]]></summary></entry><entry><title type="html">How I think about career development</title><link href="https://emauton.org//2021/07/24/how-i-think-about-career-development/" rel="alternate" type="text/html" title="How I think about career development" /><published>2021-07-24T19:45:00+00:00</published><updated>2021-07-24T19:45:00+00:00</updated><id>https://emauton.org//2021/07/24/how-i-think-about-career-development</id><content type="html" xml:base="https://emauton.org//2021/07/24/how-i-think-about-career-development/"><![CDATA[<p>Over the years I’ve come up with a basic approach to my career:</p>

<ul>
  <li>Figure out what I want from life, and how work can support that;</li>
  <li>Use role models and writing to imagine possible futures;</li>
  <li>From those, map out the skills and capabilities I want to develop;</li>
  <li>Lean on my current work environment - or change it - to support my development.</li>
</ul>

<p>From time to time I talk with colleagues and friends about this. These are some
notes to make sharing easier.</p>

<h3 id="assumptions">Assumptions</h3>

<p>I’m writing about software engineering, systems engineering, and adjacent
careers. Mainly for individual contributors, because that’s what I know best.</p>

<p>We are on the hook for managing our own careers: a common mistake for less
experienced engineers is believing that their manager will do this. Sometimes,
managers will be a help; often they won’t.</p>

<p><a href="https://betterprogramming.pub/why-learning-is-the-most-important-skill-in-tech-990f36e4106f">Everything is
learnable</a>.
We’re not fundamentally limited by our current roles, skills, whatever.</p>

<h3 id="starting-out">Starting out</h3>

<p>I think about what I want my work to enable in my life.</p>

<p>For some people, that’s wanting to travel, or to learn specific things, or to
settle down in a beautiful place, or to found a company, or things related to
family, or all of the above.</p>

<p>My personal list is rather general at this point, but well tested. I want to:</p>

<ul>
  <li>Support my family in a good life;</li>
  <li>Help other human beings do things that are meaningful to them;</li>
  <li>Work with teams I trust;</li>
  <li>Be trusted in turn with a high degree of autonomy;</li>
  <li>Learn a great deal;</li>
  <li>Solve interesting problems;</li>
  <li>Leave things better than I found them.</li>
</ul>

<p>This is in rough priority order. Had I thought about this more clearly, earlier
in my career, I think the order might be different. At times, particularly when
changing jobs, I might have had more specific ideas. Many companies and types
of work can support everything above. Some simply can’t.</p>

<p>I like having this list because it helps orient me around the things that I
need or am looking for. If I can check off everything above, or I am making
positive progress, then I feel like my career is in a good place. If there are
things lacking, maybe I need to take action to fix that.</p>

<p>It also makes the classic “where do you see yourself in five years?” feel
somewhat tractable. :o)</p>

<h3 id="drawing-a-map">Drawing a map</h3>

<p>We have a starting point, but assuming that we want to meet some specific need,
how do we figure out what moves to make, where to go?</p>

<p>I like to have a map, a way of identifying the gaps between where I am and my
possible futures.</p>

<p>I often use role models for this - colleagues current and former, industry
people I respect. What do I value about what they do and how they behave? What
do I want to be when I grow up? :o)</p>

<p>Another useful resource is published “job ladders”. These are a good way to
look at the things various organizations value and how they see careers
progressing.  Examples:</p>

<ul>
  <li>Rent the Runway’s <a href="https://dresscode.renttherunway.com/blog/ladder">ladder</a>;</li>
  <li>CircleCI’s <a href="https://circleci.com/blog/why-we-re-designed-our-engineering-career-paths-at-circleci/">competency matrix</a>;</li>
  <li>Dropbox’s <a href="https://dropbox.github.io/dbx-career-framework/">career framework</a>.</li>
</ul>

<p>It’s worth having a think about how much you value the skills and capabilities
listed, and how different companies’ ladders differ, particularly at senior
levels.</p>

<p>Finally, there’s an expanding literature around how senior engineers work:</p>

<ul>
  <li><a href="https://staffeng.com/book">Staff Engineer: Leadership beyond the management track</a> - Will Larson</li>
  <li><a href="https://noidea.dog/">No Idea Blog</a> - Tanya Reilly’s writing;</li>
  <li><a href="https://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/">On Being A Senior Engineer</a> - John Allspaw.</li>
</ul>

<p>There’s a lot to like, to learn, and to model in all of these.</p>

<h3 id="filling-in-the-gaps">Filling in the gaps</h3>

<p>I tend to think in terms of skills and capabilities.</p>

<p>Given all of the above, which skills do I have but could develop further? Which
do I lack entirely? What capabilities do I think my role models have that I
don’t? Which do I value the most? Which would have helped me in my recent work?
Which will enable me the most in future?</p>

<p>Now I have a list of specific things I want to be better at: the beginnings of
a plan! I look for ways I can manoeuvre myself into work that will stretch me
in those skills, build those capabilities.</p>

<p>Where I think it will be useful, I advertise! Let my manager, my mentors, my
team know that I am trying to develop these skills. Can they help me find
opportunities to improve? If I can find ways to work directly with some of the
people I find inspiring, on those specific kinds of work, even better.</p>

<p>Note that this can form a good basis for annual or quarterly goals, so that’s
another pain out of the way. ;o)</p>

<h3 id="considering-context">Considering context</h3>

<p>While you work on your plans and your goals, pay attention to what’s going on
around you.</p>

<p>Keep notes on what’s working and what’s not: in your own work, your team, your
org, your production systems. This can be a useful source of ideas for specific
projects or development opportunities.</p>

<p>If you can, find ways to make your goals work with those of the people around
you. Developing your career can and should be something where everyone
benefits.</p>

<h3 id="wrapping-up">Wrapping up</h3>

<p>I have a particular perspective, and I’m certain I am missing a lot: I
generally think in terms of skill acquisition and deployment, and I’m not sure
how well any of this will apply to different kinds of work or different kinds
of people. Take all of my advice with a grain of salt. We’re all just working
this out.</p>

<p>To recap:</p>

<ul>
  <li>Think about what you want out of life, and try to make your career serve
that.</li>
  <li>Imagine possible futures by using role models, formal career “level”
guides, and the best writing you can find on being an engineer.</li>
  <li>Move towards those possibilities by mapping out a path in terms of skills
and capabilities.</li>
  <li>Ask for help getting what you want, and try to make it work well with what
everyone around you wants.</li>
</ul>

<p><em>With thanks to <a href="https://noidea.dog/about">Tanya Reilly</a> and <a href="https://linkedin.com/in/niallm">Niall Richard
Murphy</a>.</em></p>]]></content><author><name>Cian Synnott</name></author><category term="thoughts," /><category term="career" /><summary type="html"><![CDATA[Over the years I’ve come up with a basic approach to my career:]]></summary></entry><entry><title type="html">Driving a “long incident” as an engineer</title><link href="https://emauton.org//2021/02/03/driving-a-long-incident-as-an-engineer/" rel="alternate" type="text/html" title="Driving a “long incident” as an engineer" /><published>2021-02-03T17:15:00+00:00</published><updated>2021-02-03T17:15:00+00:00</updated><id>https://emauton.org//2021/02/03/driving-a-long-incident-as-an-engineer</id><content type="html" xml:base="https://emauton.org//2021/02/03/driving-a-long-incident-as-an-engineer/"><![CDATA[<p>Archiving a <a href="https://twitter.com/systemician/status/1357014453963874304">Twitter
thread</a>:</p>

<p>Wrote a few notes for a colleague about driving a “long incident” as an
engineer.</p>

<p>That is, one of those “important AND urgent” things that’s going to take weeks
and multiple cooperating teams to get done.</p>

<p>Focus here is on senior IC behaviour, but cf. <a href="https://sre.google/sre-book/managing-incidents/">Managing
Incidents</a> from the SRE book.</p>

<p>Overcommunicate.</p>

<p>If you’re running a meeting, have a clear agenda, a plan for what you want out
of it. Take notes. If you need to switch audience, write something separately.</p>

<p>Maintain notes in Slack of what’s going on in Zoom.</p>

<p>Summarize and update status frequently.</p>

<p>If you feel like you’re communicating too much, it <em>might</em> be enough. :o)</p>

<p>Communicate clearly to your different audiences.</p>

<p>What do your team, or a sibling engineering team, or your support colleagues,
or the execs need to know?</p>

<p>Think about their points of view, and frame things for them.</p>

<p>Engineer to engineer communications are vital. Keep managers and other parties
informed, but focus on assembling and directing the engineering team who will
solve the problem.</p>

<p>If necessary, fight for the people and resources you need to make progress.</p>

<p>Treat the problem with urgency, but push back on “we don’t have enough time /
we can’t test X”.</p>

<p>Take an engineering perspective: get as many facts on the table as you can.</p>

<p>Test assumptions about those facts.</p>

<p>Work constantly to reduce uncertainty.</p>

<p>Map out areas of risk: lean on your experts and help them identify questions we
don’t have answers for yet.</p>

<p>Push on getting answers to the tractable questions, given the time and
resources available.</p>

<p>Keep an eye out for anyone spinning their wheels.</p>

<p>Stay calm and focused. Help everyone else to do the same. Always worth a
re-read: <a href="https://phillydan.wordpress.com/2012/03/28/good-emts-dont-run/">Good Medics Don’t
Run</a>.</p>

<p>If you’ve been somewhat insulated from ops, there’s lots of literature out
there to help reflect on incidents and long-running issues, and build up those
production muscles.</p>

<p>I’d start probably with <a href="https://sre.google/books">the Google SRE books</a>, with
the usual caveats about <code class="language-plaintext highlighter-rouge">$megacorp</code> vs. <code class="language-plaintext highlighter-rouge">$tinycorp</code>.</p>

<p>It comes down to people skills - <strong>hard skills</strong>, and the ones senior engineers
most need to cultivate.</p>

<p>Since this is largely about communications, I must include my theme song:
<a href="https://youtube.com/watch?v=1PENZkWqqUk">Write It Down</a>.</p>

<p>I literally never tire of this video. Sorry / not sorry.</p>]]></content><author><name>Cian Synnott</name></author><category term="operations," /><category term="process" /><summary type="html"><![CDATA[Archiving a Twitter thread:]]></summary></entry><entry><title type="html">A little negativity about OKRs</title><link href="https://emauton.org//2021/01/31/a-little-negativity-about-okrs/" rel="alternate" type="text/html" title="A little negativity about OKRs" /><published>2021-01-31T22:38:00+00:00</published><updated>2021-01-31T22:38:00+00:00</updated><id>https://emauton.org//2021/01/31/a-little-negativity-about-okrs</id><content type="html" xml:base="https://emauton.org//2021/01/31/a-little-negativity-about-okrs/"><![CDATA[<p>Archiving a <a href="https://twitter.com/systemician/status/1356008952899772417">Twitter
thread</a>:</p>

<p><a href="https://twitter.com/niallm/status/1355988157108465664">Niall’s thread</a> is as
thoughtful, judicious, and balanced as I’d expect. Allow me to be a bit more
negative about Objectives and Key Results. :o)</p>

<p>First, the planning horizon. At <code class="language-plaintext highlighter-rouge">$megacorp</code> and anywhere that follows that
playbook, OKRs are a quarterly process.</p>

<p>“Be careful what you measure”: if your planning cadence is quarterly, there’s a
strong chance it’ll become your delivery cadence too. That is too slow.</p>

<p>I love having a plan. Honestly, I enjoy the chaos as we watch it crash into
reality, particularly in teams that are constrained by operational concerns
(read: basically everyone with real customers).</p>

<p>Plans go out the window. That’s fine, they’re still useful.</p>

<p>But a quarter - for most teams and orgs I’ve worked with, including at
<code class="language-plaintext highlighter-rouge">$megacorp</code> - is too big a chunk to let us respond well to inevitable change.</p>

<p>So OKRs become a big, expensive activity that swallow a bunch of team and
management bandwidth without allowing room to react.</p>

<p>Second, “KRs considered harmful” (with caveats).</p>

<p>Making good KPIs is a known hard problem, right? As an engineering example,
consider the difficulty of producing meaningful SLOs.</p>

<p>Coming up with a brand new set of good KPIs each quarter is high overhead and
prone to failure.</p>

<p>“KR 1: produce the metrics we’re going to use to track this objective.” :o)</p>

<p>It can feel really hard to tie quantitative measurement of KRs - often proxy
metrics - to the real outcomes we’re trying to drive.</p>

<p>Finally though, it’s not all gloom.</p>

<p>Objectives are a good tool for driving alignment. They can build a coherent
narrative around strategy and tactics, from execs through to delivery teams.</p>

<p>I like to de-emphasize the measurement part though.</p>

<p>Where we do have KRs, ideally they’re tied to longer-term KPIs that we can
iterate on and come to understand better over time, on the order of months or
years.</p>

<p>SLOs are a good example. Or from a team perspective, the DORA metrics. Or
“north star” product / business metrics.</p>

<p>As for planning horizons: I am strongly attracted to ~6 week “bets” like
<a href="https://basecamp.com/shapeup">Basecamp’s</a> or
<a href="https://intercom.com/blog/6-week-cycle-for-product-teams/">Intercom’s</a>.</p>

<p>Where I’ve worked like this, it’s felt lighter-weight and more agile in the
best senses.</p>

<p>All that said, whatever your particular team, org and/or company are doing to
plan their time: get involved, and try to make it work as well as possible.</p>

<p>Channel your reservations into creativity. Use and improve the system. Try
experiments. Share them.</p>

<p>Planning is good!</p>]]></content><author><name>Cian Synnott</name></author><category term="thoughts," /><category term="process" /><summary type="html"><![CDATA[Archiving a Twitter thread:]]></summary></entry></feed>