<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://utterly.dev/feed.xml" rel="self" type="application/rss+xml" />
  <title>utterly</title>
  <link>https://utterly.dev</link>
  <description>English communication skills for ESL software developers wanting to make an outsized impact in international teams</description>
  <language>en-us</language>
  <generator>Tableau v0.30.0</generator>
    <item>
       <title>Are You a Well-Documented API?</title>
       <link>https://utterly.dev/well-documented-api/</link>
       <pubDate>Wed, 13 May 2026 00:00:00 UTC</pubDate>
       <guid>https://utterly.dev/well-documented-api/</guid>
       <description><![CDATA[ <p>&quot;I'M not the loudest in the room.&quot;</p>
<p>Something a lead engineer told me recently. The kind of developer who designs and strategises architecture underneath a whole team. Not a junior finding their feet. Someone senior, trusted, technically excellent.</p>
<p>But that wasn't really the problem.</p>
<p>The problem was this: he'd share his thinking openly. Collaborate on the tradeoffs and contracts. And BAM, once in place the manager usually got the credit.</p>
<p>This problem got me thinking...</p>
<hr />
<h2><a href="#every-team-has-an-api-that-isnt-code" aria-hidden="true" class="anchor" id="every-team-has-an-api-that-isnt-code"></a>Every Team has an API that isn't Code</h2>
<p>Every engineering team has its own API. I am not talking about a codebase, either. A team is a unit in a business that has an outward facing interface. Directors, stakeholders, other teams interact wit this API and don't see the internals. They have nice, tidy endpoints to interact with the team.</p>
<p>Someone is always writing the docs for that API.</p>
<p>For the most part, that someone is the manager.</p>
<p>They take the team's output and route it through the API back into the business. They summarise it. All the grisly technical detail is translated into clean metrics and KPIs. They advocate for it, or they don't. They attach names to it, or they don't.</p>
<p>Developers are often happy to be an internal service, abstracted from the world of the business.</p>
<p>As a consequence, like any undocumented internal, they are invisible to the consumer.</p>
<h2><a href="#the-law-of-demeter" aria-hidden="true" class="anchor" id="the-law-of-demeter"></a>The Law of Demeter</h2>
<p>This is probably not a grand conspiracy to keep developers down. It's the principle of least knowledge. There's no need for external teams to be reaching deep into the internals of development. It's an org smell.</p>
<p>On the contrary, I've seen the damage this can do to effective software development.</p>
<p>We are better off assuming that the people closest to the work understand it best. As the work of engineering and organisational strategy are undertaken by wholly different people, there is always a translation layer between value creation and value recognition.</p>
<blockquote>
<p>&quot;Who controls the translation layer controls the influence.&quot;</p>
</blockquote>
<p>When a developer shares their thinking generously: bringing tradeoffs, alternatives, contracts, they are being collaborative. They are being professional. They are doing the right thing technically.</p>
<p>But unless they also own the translation, they are losing the influence they could have gained.</p>
<h2><a href="#the-point-of-leverage" aria-hidden="true" class="anchor" id="the-point-of-leverage"></a>The Point of Leverage</h2>
<p>The moment where the influence has been assigned is much earlier than we suspect.</p>
<p>A retroactive &quot;good work&quot; after shipping rarely does justice to the contribution of a senior, or lead developer.</p>
<p>Usually the decision is made as part of a messy internal---a PR comment, some archived ticket, an in-person meeting---the influence internally is created here.</p>
<p>However, it is shared organisationally during a status update, a board meeting, a strategy session. Rarely, is the primary source cited.</p>
<p>That is the moment that the communication happens. And it doesn't involve the internals of the system at all. It's an abstracted, packaged version from the translation layer.</p>
<h2><a href="#the-undocumented-endpoint" aria-hidden="true" class="anchor" id="the-undocumented-endpoint"></a>The Undocumented Endpoint</h2>
<p>This is not generally visible to developers because it is often a harmonious arrangement for shipping a quality product. Not everyone is talking to everyone.</p>
<p>But undocumented functionality is quietly overlooked. A slight frustration when a colleague gets recognised for something you contributed to. A sense that your manager likes you but never quite advocates for you. Performance reviews where you are solid but somehow not quite ready for the next level. It might even be when there are strong disagreements in the internals where one party holds a lot more influence.</p>
<p>And to developers, these often don't feel like 'communication issues' at first. They might feel like 'office-politics' (honestly same thing). They might feel like a bad culture.</p>
<p>Truthfully, they are interface problems where the docs are not properly updated by the maintainer.</p>
<p>Noticing this is the first step. If there are signs that your work is too internal, keep looking. It's likely that you are too removed from defining the API contract of your organisation.</p>
<p>Becoming a contributor to that contract is engineerable. If you want to know how, book a call.</p>
<p><a href="https://cal.com/willc33/" rel="noopener noreferrer" target="_blank">Book a call</a></p> ]]></description>
    </item>
    <item>
       <title>700 Layoffs at Coinbase. Everyone Else Just Got &#39;Promoted.&#39;</title>
       <link>https://utterly.dev/coinbase-layoffs/</link>
       <pubDate>Wed, 06 May 2026 00:00:00 UTC</pubDate>
       <guid>https://utterly.dev/coinbase-layoffs/</guid>
       <description><![CDATA[ <p>IF you weren't one of the 700, Brian Armstrong's restructure just changed your job description whether you agreed to it or not.</p>
<p>Armstrong's memo is explicit. Coinbase is eliminating pure management roles entirely. Every leader going forward is an &quot;active individual contributor&quot; and a &quot;player-coach.&quot; The org caps at five layers. AI handles the coordination work that used to require a layer of people between you and the business.</p>
<p>Those left are no longer cushioned by a communication layer between them and management. Decision-making is more direct. Value-sharing vital.</p>
<h2><a href="#et-tu-coinbase" aria-hidden="true" class="anchor" id="et-tu-coinbase"></a>Et Tu Coinbase?</h2>
<p>In September 2024, Amazon CEO Andy Jassy wrote directly to staff instructing every S-team organisation to increase the ratio of individual contributors to managers by at least 15% by the end of Q1 2025. His reasoning was structural: fewer managers, faster decisions, ownership pushed deeper into the SWE role.</p>
<p><em>(Source: <a href="https://www.aboutamazon.com/news/company-news/ceo-andy-jassy-latest-update-on-amazon-return-to-office-manager-team-ratio">Message from CEO Andy Jassy: Strengthening our culture</a> — aboutamazon.com, September 2024)</em></p>
<p>Meta went further. Its new applied AI engineering division (handling its superintelligence efforts) runs at a 50-to-1 employee-to-manager ratio, double the 25-to-1 figure widely regarded as the outer limit of managerial control.</p>
<p><em>(Source: <a href="https://fortune.com/2026/03/14/metas-ai-team-50-flat-management-structure/">Meta's new AI team has 50 engineers per boss</a> — Fortune, March 2026, citing Wall Street Journal)</em></p>
<p>Now Coinbase. It's becoming a familiar pattern: flatten the structure, cut the coordination layer, trust the engineers left to take full ownership.</p>
<h2><a href="#what-has-disappeared" aria-hidden="true" class="anchor" id="what-has-disappeared"></a>What has Disappeared?</h2>
<p>For most of history, there has been a 'chain of command', an organisational hierarchy. Whatever one wants to call it, it showed up in software teams in an important way. There was always someone to translate the technical realm of engineering and code to the 'powers that be.' These managers ran the stakeholder meetings. They translated your technical decisions into language the business understood. They explained value upward while you were busy raising PRs and tuning performance.</p>
<p>That person is gone now. The most important gap to close is the communication one.</p>
<p>The VP needs to understand the cause for delays. The board still needs full confidence in the army of agents engineers are expected to control (a whole issue unto itself!). The shrinking pool of juniors still need context. Those conversations aren't going away, however much we might prefer it. Instead they are the new job description for 'Software Engineer.'</p>
<h2><a href="#an-accelerating-trend" aria-hidden="true" class="anchor" id="an-accelerating-trend"></a>An Accelerating Trend?</h2>
<p>The ability to communicate, facilitate, persuade, and influence was always part of the job. There were people doing exclusively this. But the best performing engineers were never just technical wizards, they were the people who could convince the organisation of their expertise and vision---those capable of executing it through their team.</p>
<p>Now the cover is gone and the requirement is only accelerating.</p>
<p>The engineers who thrive in this structure won't simply be the most technically skilled in the room. They'll be the ones who can hold a stakeholder relationship, make technical complexity legible to people who don't share their context, and advocate for their work without someone else doing it for them.</p>
<p>It just so happens that AI means the last excuse to ignore communication is gone. We have left the territory of 'soft skills' training. It's what we are hired to do.</p> ]]></description>
    </item>
    <item>
       <title>You Got the Job. Now How Do You Make an Impact?</title>
       <link>https://utterly.dev/developer-communication-impact-new-role/</link>
       <pubDate>Thu, 30 Apr 2026 00:00:00 UTC</pubDate>
       <guid>https://utterly.dev/developer-communication-impact-new-role/</guid>
       <description><![CDATA[ <p>AFTER you've signed the contract for a new role, there is likely to be some confusingly organised onboarding. You'll navigate how the team speaks to each other and how they discuss their priorities and values.</p>
<p>You are likely to get questions passed around, and some vague 'documentation' on a complex system. No one gets a chance to review it more than once a year so... That means processes have changed. The coding standards are different now.</p>
<p>These are the general frustrations of the average company, where people focus on velocity more than the comfort of incoming colleagues.</p>
<p>Many new hires will take the time <em>not to rock the boat</em>. To put their head down and build some velocity. And that's a great strategy, if you want to become someone known for pushing good feature code and a 'safe pair of hands.'</p>
<p>The 'safe pair of hands' is someone we can trust to get things done, they are reliable, docile, and mostly invisible.</p>
<p>You can get on just fine as a team member who doesn't go 'above and beyond' but there is always a ceiling. It's simply the wrong approach.</p>
<p>If you think that above and beyond means overtime, late nights, grinding, and burnout, you are <strong>wrong</strong>.</p>
<p>Going above and beyond isn't about becoming a consumable that spits out code fastest (AI is always going to beat you, for people who aren't looking at the quality).</p>
<p><strong>Going above and beyond is a matter of <em>taste</em>.</strong></p>
<p>It's a matter of sharing <em>impactful</em> opinions, which means it's a matter of <em>persuasion</em>.</p>
<p>Because we aren't really that impactful as individuals, we are impactful when we steer our teams. Being known for opinions that create great outcomes is a skill. Being able to make them happen is a far better metric of seniority than a high velocity.</p>
<p>I know a lot of devs don't love leaning into these things. They are happier buried in the code. And I can understand that. Code is where we live and breathe but increasingly careers are decided outside the IDE by the 'non-technical stakeholders'.</p>
<h2><a href="#meetings" aria-hidden="true" class="anchor" id="meetings"></a>Meetings</h2>
<p><strong>Warning: I am going to focus on the most controversial meeting in the dev team.</strong></p>
<p>Be honest, which stand-up personality is yours? Are you more half-baked, boring festival of &quot;err...&quot;, &quot;um....&quot; with people zoning out. Or the classic &quot;Yesterday X, today Y. No blockers.&quot; Useful stuff, thanks!</p>
<p>I understand that most developers hate Scrum ceremonies. The stand-up more than any. An interruption to talk about work instead of working. It is so easy for it to become a status check in that nobody asked for. However, those are 15 non-negotiable minutes with time to influence.</p>
<p>For example, simply relating your tasks to the experiences you're hearing. If somebody is doing something similar to what you did yesterday, that's a moment to clarify that the pipelines are flaky or whatever. You can offer a hand. And when it comes to the next stand up you can remind people that &quot;Yesterday, I helped with...&quot; This gets you a reputation as being generous with your time, visibly.</p>
<p>Instead of people asking you outside of a meeting and that time disappearing from your velocity, it is acknowledged. Perhaps not for all posterity, but you leave an impression as a particular type of person. One who goes above and beyond for your team.</p>
<p>Even if you aren't eager to share at the stand-up, at its most basic level, communication is two-way. It's about listening as much as talking. Not listening to colleagues and continuing to clack on your mechanical keys is actually <strong>just rude</strong>. Simple as. People will notice it.</p>
<h2><a href="#mentoring" aria-hidden="true" class="anchor" id="mentoring"></a>Mentoring</h2>
<p>If you are this far into the article, I doubt this is your first rodeo. You already have tech experience. If you have colleagues with shorter tenure either overall or in the company. You can mentor them. If you know there is someone with an interest in coding outside of the dev team, you can mentor them. Potentially, if you are a career changer with some secret knowledge in a tangential field, you can mentor someone.</p>
<p>Mentoring provides outsized impact to your team. You are enabling people to solve problems in the future and to pass that experience forward. It creates institutional knowledge. <strong>It creates culture.</strong> There is a (clearly massively oversimplified) reason why the octopus is not the master of this planet. They don't live long enough to pass knowledge onward. That's a problem with AI too. However much you prompt it to make no mistakes and act as a senior developer, it resets. Your mentees don't.</p>
<p>You should even be mentoring for one wholly selfish reason, if it isn't something you enjoy. It clarifies your thinking. It makes you better at communicating complex ideas to less technically-able people. It helps you find a range of ways of explaining things that different people understand. And it makes people like you.</p>
<p>When I arrived fresh to my first day as a dev, I lucked out with my mentor. I had someone who told me the same thing way too many times when I asked stupid, stupid questions and rarely took notes. That's not a colleague one forgets!</p>
<h2><a href="#metrics" aria-hidden="true" class="anchor" id="metrics"></a>Metrics</h2>
<p>If you do any of the above, and you aren't generally miserable and difficult, your team is probably going to like you. Being well-liked is going to get people on your side.</p>
<p>So, by now you have demonstrated that you are a competent team player who is easy to get along with. So what about that bonus and a juicy senior or staff title?</p>
<p>You probably aren't getting promoted on that alone. You need a little more <em>leverage</em>. When we imagine great communicators we think of compelling public speakers. We overlook ongoing communication with ourselves. Something that allows us to create the story of our work before it is written by someone else.</p>
<p>Especially as we usually end up doing our work and forgetting. Lord knows our inundated managers aren't thinking about it. They might have some general visibility like velocity. But remember, a safe pair of hands is just that. They are doing all the feature work.</p>
<p>It's best not to get into your review or a salary negotiation, or even an interview with a blank canvas of what you've achieved.</p>
<p><strong>So write it down!</strong></p>
<p>A notepad, a word doc, a git repo. It doesn't matter. Write down what you did, what changed. If you have some numerical metrics about performance or business even better. If you have a way to collect them do so. If you don't, try to make a way. Employers salivate over CVs with metrics, like 'reduced login screen load time by 800ms, reducing bounce rate by 1.3%.'</p>
<p>If you are keeping note of all your achievements, not only are you going to feel insanely good, you also have a powerful tool to communicate your value to the company. As Simon Pegg says in Hot Fuzz, &quot;This is the most important piece of equipment you will ever own. This notebook has saved my skin more times than I care to remember.&quot;</p>
<p>And don't forget to keep it backed up to a personally accessible spot.</p>
<p>If you can manage these, you are in the top-tier of communicators in your team. Sometimes the bar is quite low.</p>
<p>These three Ms are simple areas that create a big change in one's communication habits. None of them involve drilling grammar and practising in the mirror or flashcards. They involve performing simple maintenance on the relationships at work. They involve setting an example for the team. These are the difference between a <em>safe pair of hands</em> who is given more <strong>velocity</strong> and an <em>asset</em> who is trusted with <strong>responsibility</strong>.</p>
<p>If this is something you would like help putting into practice for yourself, don't be a stranger. I work with devs on precisely that.</p> ]]></description>
    </item>
    <item>
       <title>Is Communication Not Technical Skill Stopping You From Interviewing?</title>
       <link>https://utterly.dev/communication-not-technical-skill/</link>
       <pubDate>Thu, 23 Apr 2026 00:00:00 UTC</pubDate>
       <guid>https://utterly.dev/communication-not-technical-skill/</guid>
       <description><![CDATA[ <p>YOU'RE a technical expert but interviews feel so daunting.</p>
<p>The last time you applied you drilled leetcode, prepared to talk about a side-project, gathered lots of stories about great things you did at your current job.</p>
<p>You know your stack. But putting that across under pressure is a different problem entirely.</p>
<p>Interviewers are probably using this dreaded phrase, &quot;talk through your thinking.&quot;</p>
<p>In a high stress situation like live-coding, talking about what you are doing is pretty difficult. At least, I find it to be.</p>
<p><strong>You are spending too much time thinking about how to say it, not what to say.</strong> And that is stopping you from showing your technical value.</p>
<p>It's unfair, like a lot of things in interviews. But employers can be picky.</p>
<p>Personally I prepare and rehearse interview answers. I have also interviewed in a second language to an offer and that was much harder to prepare, so I understand the pressure.</p>
<p>One of the problems is that, while there are <em>themes</em> of what we are normally asked, it's not possible to know <em>exactly</em> what the question will be.</p>
<p>This gap means there is always something we don't know, which can create anxiety. But the trick is to be able to move the interview question to <em>our</em> story.</p>
<p>The easiest thing to do is to prepare a few <em>flexible</em> answers. Those that can cover STAR answers based on a couple of themes: what went well, what went badly but you learnt from, and so on.</p>
<p>The best way to prep this is to simply look at your CV, and create a story from each point you make about what you achieved at the job. It's also worth looking at the job description and seeing how your experience connects with it.</p>
<p>If you have that skill, great. You can use the language in the description and connect it to your story. If there is a gap, prepare a bridging phrase. Something that says &quot;while I don't X, I do Y.&quot;</p>
<p>(If you aren't familiar with STAR, the below example shows how it works. It's about outlining a situation, task, action, and result. An LLM is a great starting point for writing them.)</p>
<p>Let's look at an example:</p>
<p>In the job description: &quot;Experience mentoring juniors as direct reports&quot; for a senior role. But maybe this is your first senior role.</p>
<p>This kind of requirement is usually a nice to have rather than a deal-breaker.</p>
<p>If you don't have this, how can you prepare a great answer?</p>
<p>Think about what you <em>do</em> have. You're very active in code reviews, for example. Perhaps you would write something like this:</p>
<ul>
<li><strong>Situation</strong>: During a routine code review, I noticed a junior developer had written a database query inside a loop, something that would work fine in testing but would cause serious performance problems in production at scale.</li>
<li><strong>Task</strong>: I needed to flag the issue in a way that was clear and educational, not just a rejection of their work.</li>
<li><strong>Action</strong>: Instead of simply commenting &quot;this will cause an N+1 problem,&quot; I left a comment explaining what would happen at scale, linked a short article on the N+1 problem, and suggested we pair for 20 minutes to look at it together. In that session I walked through how to move the query outside the loop and why the database cares about that.</li>
<li><strong>Result</strong>: They fixed it confidently and independently caught a similar issue themselves two weeks later.</li>
</ul>
<p>Now this is something you can use with a bridging phrase:</p>
<ul>
<li>&quot;While I don't have any formal reports at my current role, I am an active participant in code review.&quot;</li>
<li>&quot;I haven't held a senior title yet, but mentoring has been a natural part of how I work with the team.&quot;</li>
<li>&quot;Formal line management hasn't been part of my role, but I've taken ownership of bringing junior developers up to speed on our codebase.&quot;</li>
<li>&quot;I don't have direct reports, but I'm often the person juniors come to before they open a PR or ask a question in standup.&quot;</li>
</ul>
<p>This means you can give a proper answer like this:</p>
<p>&quot;While I don't have formal direct reports yet, mentoring has been a natural part of how I work. Once I was reviewing a PR from a junior on the team and spotted a database query inside a loop. It would have passed testing fine but would have been a real problem in production.</p>
<p>I didn't want to just reject the PR so I left a detailed comment explaining what would happen at scale, linked some reading on it, and suggested we pair for twenty minutes. We walked through the fix together and I explained the reasoning behind it rather than just showing them what to change.</p>
<p>Two weeks later they caught a similar issue themselves in someone else's review. That's the outcome I care about, not just fixing the problem but making sure they understand it.&quot;</p>
<p>Your answers should feel like a <strong>part of you</strong>. Reciting a script from memory is not good communication. Learn the ideas, not the words. Being comfortable with the idea is what creates confidence.</p>
<p>The goal is to speak confidently about <strong>what</strong> you did, without getting stuck on <strong>how</strong> to say it.</p>
<p>Even a couple of good, practised interview stories can make a big difference. And if you're smart about what you pick, you can almost always use the same ones.</p>
<p>If you are interested in a more structured approach to feeling confident in software interviews, I offer a review to see if you're ready to interview and secure a role.</p>
<p>We will talk about any difficulties, practice some real answers based on your CV, and create a plan to get you to your dream job.</p>
<p>I've helped dozens of professionals improve their interview skills across the tech industry, and I've also been in awful technical interviews myself so I understand the pain.</p>
<p>If that sounds useful, book here or have a 20 min chat if you're not sure what's right.</p>
<p><a href="https://cal.com/willc33/" rel="noopener noreferrer" target="_blank">Let's Talk</a></p> ]]></description>
    </item>
  </channel>
</rss>
