<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Communication | AkitaOnRails.com</title><link>https://akitaonrails.github.io/en/tags/communication/</link><description>Fabio Akita's blog — tech, career, and assorted geek topics. English edition.</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 19 Oct 2026 23:20:51 +0000</lastBuildDate><atom:link href="https://akitaonrails.github.io/en/tags/communication/index.xml" rel="self" type="application/rss+xml"/><item><title>Why LLMs Aren't Giving You the Result You Expect | Why I Prefer Claude Code Today</title><link>https://akitaonrails.github.io/en/2026/04/15/how-to-talk-to-claude-code-effectively/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2026/04/15/how-to-talk-to-claude-code-effectively/</guid><pubDate>Wed, 15 Apr 2026 13:00:00 -0300</pubDate><description>&lt;p&gt;&lt;img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/hero-gpt-vs-claude.png" alt="Editorial illustration contrasting GPT-coding and Claude-coding: one side showing rapid generation and broad repertoire, the other a structured architecture with a concept tree and context-aware debugging" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Every time I get pulled into an online thread about LLMs I hear the same chorus, in slightly different keys. &amp;ldquo;Claude didn&amp;rsquo;t perform as well as GPT for me.&amp;rdquo; &amp;ldquo;GPT did a way better job than Claude, I&amp;rsquo;m canceling my sub.&amp;rdquo; &amp;ldquo;Honestly, Kimi or MiniMax does the job for me just fine, I&amp;rsquo;m not paying for anything.&amp;rdquo; Anecdote piled on anecdote, each one a variation of &amp;ldquo;works on my machine&amp;rdquo; vs. &amp;ldquo;doesn&amp;rsquo;t work on my machine.&amp;rdquo; It sounds off to me.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/hero-gpt-vs-claude.png" alt="Editorial illustration contrasting GPT-coding and Claude-coding: one side showing rapid generation and broad repertoire, the other a structured architecture with a concept tree and context-aware debugging"  loading="lazy" /></p>
<p>Every time I get pulled into an online thread about LLMs I hear the same chorus, in slightly different keys. &ldquo;Claude didn&rsquo;t perform as well as GPT for me.&rdquo; &ldquo;GPT did a way better job than Claude, I&rsquo;m canceling my sub.&rdquo; &ldquo;Honestly, Kimi or MiniMax does the job for me just fine, I&rsquo;m not paying for anything.&rdquo; Anecdote piled on anecdote, each one a variation of &ldquo;works on my machine&rdquo; vs. &ldquo;doesn&rsquo;t work on my machine.&rdquo; It sounds off to me.</p>
<p>I&rsquo;ve already benchmarked most of the relevant open source and commercial models in my <a href="/en/2026/04/05/testing-llms-open-source-and-commercial-can-anyone-beat-claude-opus/">LLM testing post</a>, so I&rsquo;m not pulling this out of thin air. And beyond the benchmarks, I&rsquo;ve got 500+ hours in Claude Code and Codex on real projects. 16 hours a day, two and a half months straight, something in the neighborhood of 400,000 effective lines of code generated.</p>
<p>And look: on neither of them, Claude or Codex, did I ever see the model wander off, do something I didn&rsquo;t ask for, or flat-out fail to deliver what I wanted. Not once. When the model really couldn&rsquo;t do something, it told me so upfront instead of inventing. So when someone tells me &ldquo;Claude blew it,&rdquo; my first question is always the same: what did you ask it for, exactly?</p>
<h2>The fake problem<span class="hx:absolute hx:-mt-20" id="the-fake-problem"></span>
    <a href="#the-fake-problem" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The ecosystem&rsquo;s answer to this supposed &ldquo;wandering off&rdquo; problem is to pile on more layers. Spec Driven Development showed up, 15-section prompt templates showed up, whole frameworks to force the LLM to ask more questions before it starts. I respect the effort, but I think they&rsquo;re treating the symptom, not the cause.</p>
<p>I practice what I call <a href="/en/2026/03/05/37-days-of-vibe-coding-immersion-conclusions-on-business-models/">Agile Vibe Coding</a>: applying XP techniques (pair programming, test-driven, short feedback loops, continuous refactor) on top of normal prompting. I don&rsquo;t need a framework. I don&rsquo;t need a three-page template. I need the same things that have always been needed to work on software in a team: know what I want, know what I don&rsquo;t want, know how to validate it when it lands.</p>
<h2>The real problem is one thing: nobody knows how to communicate<span class="hx:absolute hx:-mt-20" id="the-real-problem-is-one-thing-nobody-knows-how-to-communicate"></span>
    <a href="#the-real-problem-is-one-thing-nobody-knows-how-to-communicate" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I&rsquo;ve got an old post from 2013 called <a href="/en/2013/11/02/off-topic-programadores-sao-pessimos-comunicadores-udp-vs-tcp/">Programmers are terrible communicators (UDP vs TCP)</a>. Go read it if you haven&rsquo;t, because the problem I described there in 2013 is exactly the thing blowing up now that everyone&rsquo;s flying an LLM. Nothing changed. The tech got more powerful, but the people are the same people.</p>
<p>Here&rsquo;s how it works. You&rsquo;ve got a pile of information in your head. Project context, history, stack constraints, personal preference, things that went sideways in the past, decisions that got made in a meeting two months back. And then you walk into a conversation, whether it&rsquo;s with a human coworker or an LLM, and fire off your request assuming everything in your head is also in the head of whoever is on the other side. &ldquo;It&rsquo;s obvious, everybody knows that.&rdquo; So you write &ldquo;do what I&rsquo;m telling you,&rdquo; except what you&rsquo;re telling them is really &ldquo;do what I&rsquo;m thinking.&rdquo; And you don&rsquo;t even notice they&rsquo;re not the same thing.</p>
<p>Developers are terrible communicators. Managers are terrible communicators too, and that&rsquo;s exactly why most of the useful hours in a corporate week get burned in pointless meetings. Nobody gets to the point on time, nobody aligns expectations, the result comes in below the bar, and the default managerial answer to that is &ldquo;more of the same.&rdquo; More meetings, more spreadsheets, more reports. Except if your communication was bad at volume 1, it&rsquo;s going to stay bad at volume 5. The problem is quality. Volume doesn&rsquo;t fix bad quality.</p>
<h2>How I actually talk to Claude or Codex<span class="hx:absolute hx:-mt-20" id="how-i-actually-talk-to-claude-or-codex"></span>
    <a href="#how-i-actually-talk-to-claude-or-codex" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>I treat any LLM exactly how I&rsquo;d treat a human during a pair programming session. No ceremony, no form to fill out, no 10-page spec. But with communication discipline. Let me walk you through a real example, from last week.</p>
<p>I&rsquo;ve got about 12 TB of ROMs piled up on my NAS, under <code>/mnt/terachad/Emulators</code>, split across two trees (<code>ROMS/</code> and <code>ROMS2/</code>) that accumulated across different collections over the last 10-plus years. More than 400,000 files total. Uncompressed romsets, <code>.7z</code>, <code>.rar</code>, giant CDI/GDI bundles, inconsistent file naming, duplicates everywhere. I wanted to consolidate all of it, by platform, into a new <code>ROMS_FINAL/</code> tree, using standardized naming (No-Intro / Redump / TOSEC) so that when I run Screenscraper later the match is automatic. That&rsquo;s the <strong>goal</strong>, stated up front.</p>
<p>But I don&rsquo;t stop there. I tell it what I <strong>DON&rsquo;T</strong> want, too. &ldquo;Never dedup by filename, only by sha1 + size, filenames lie way too much in this world.&rdquo; &ldquo;A Neo Geo romset depends on which emulator is going to consume it, so the MAME zip, the FBNeo bundle, and the Darksoft MVS cart are three mutually incompatible things, keep one canonical copy of each.&rdquo; &ldquo;Same idea for NAOMI: the MAME romset is not the same file as the GDI.&rdquo; &ldquo;Saturn has USA, Japan, and Europe versions, I want to keep a copy of each region, region is not duplicate.&rdquo; If I leave that out, the model has no way to know, because that knowledge is in my head and not in the code. If I don&rsquo;t give it, it&rsquo;ll assume its own most-reasonable default, which might be the opposite of what I need.</p>
<p>Then I get into <strong>method detail</strong>. &ldquo;Create a <code>docs/</code> directory to serve as living knowledge base, and <code>docs/scripts/</code> with the steps broken into numbered files (<code>01_walk_and_hash.py</code>, <code>02_classify.py</code>, etc.). Each step has to be idempotent so I can re-run it if it crashes or if I need to resume halfway through. Progress state lives in a SQLite catalog, not in-memory variables.&rdquo; This isn&rsquo;t micromanaging the model, this is aligning the way I work. I know an operation this size is going to hit problems, and I want to be able to come back without losing the previous hours of hashing and classification.</p>
<p>Then, even after it hands me its plan, I keep thinking about what could go wrong. &ldquo;Zero deletions under <code>ROMS/</code> and <code>ROMS2/</code>. Whatever doesn&rsquo;t get forwarded to <code>ROMS_FINAL/</code> just stays where it was. The only thing the whole pipeline is allowed to delete is temporary files from an extraction that bailed halfway through. Also, the phase that actually executes the moves can only run after I manually approve the planning phase, create a flag file <code>docs/.phase4-approved</code>, and make phase 5 refuse to start without it.&rdquo; This is the equivalent of making a commit before a big refactor, plus a human gate between planning and applying. I&rsquo;m protecting against my own mistakes, its mistakes, or both at once.</p>
<p>When the model gets going, <strong>I don&rsquo;t leave the room</strong>. I keep asking for status. I notice the hash ETA is way longer than the problem warrants, so I interrupt: &ldquo;I think we can parallelize, I&rsquo;ve got spare CPU and 10GbE talking to the NAS, and the Synology over NFS can handle it. Bump up the concurrency, test, check that it&rsquo;s still stable and that the SQLite transaction ordering doesn&rsquo;t break.&rdquo; That&rsquo;s real pair programming, not blind automation.</p>
<h2>The structure behind it<span class="hx:absolute hx:-mt-20" id="the-structure-behind-it"></span>
    <a href="#the-structure-behind-it" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Notice the pattern. I don&rsquo;t say &ldquo;solve this problem.&rdquo; I say &ldquo;solve this problem, <strong>this way and that way</strong>, and <strong>not this way or that way</strong>, and when you&rsquo;re done, <strong>validate X and Y</strong>.&rdquo; In other words, I&rsquo;m communicating four things, not one:</p>
<p>First, <strong>what I want</strong>. The end goal in plain language. Second, <strong>how I want it done</strong>, in broad strokes, leaving room for it to suggest a better solution if it has one, because it usually does. Third, <strong>what I don&rsquo;t want</strong>. This is the part most people skip, and it&rsquo;s the most critical, because it&rsquo;s where all the unspoken assumptions live, the ones that turn into bugs later. Fourth, <strong>how we validate it landed</strong>. What&rsquo;s the expected result, what&rsquo;s the test, what&rsquo;s the &ldquo;done&rdquo; signal.</p>
<p>And that fourth part is a killer. Most of the clients I&rsquo;ve worked with over the past 20 years couldn&rsquo;t tell me what the expected result was. Because it&rsquo;s easy to want something, and hard to say how you&rsquo;d measure whether it showed up. Without a success metric, expectations break by definition, because there was no concrete expectation to begin with. That&rsquo;s one of the main reasons consulting projects go sideways, and it&rsquo;s identical in the world of AI agents.</p>
<p>When I hand the model all four blocks, it almost never fails. And when it actually can&rsquo;t do the thing, because the task is impossible given my constraints or because there&rsquo;s information I forgot to pass along, it doesn&rsquo;t try to guess. It tells me: &ldquo;given your constraints, I can&rsquo;t proceed because of X or Y.&rdquo; Then I adjust, or I loosen a constraint, or I realize I didn&rsquo;t actually know what I wanted. It all works.</p>
<h2>Once the context is solid, ask instead of prescribe<span class="hx:absolute hx:-mt-20" id="once-the-context-is-solid-ask-instead-of-prescribe"></span>
    <a href="#once-the-context-is-solid-ask-instead-of-prescribe" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>There&rsquo;s a shift I make after the first few well-loaded prompts. In the opening turns I pour in a ton: goal, constraints, method, validation, all the context the model needs to understand the terrain. It&rsquo;s a lot of detail, it&rsquo;s my job to front-load it, and I already explained why there&rsquo;s no way around that.</p>
<p>But once that ground is solid, I stop prescribing solutions and start asking for suggestions. Instead of saying &ldquo;implement it this way, with that library, following this pattern,&rdquo; I switch to &ldquo;given everything we&rsquo;ve already covered, what&rsquo;s the best approach here? Research online if you need to, compare the options, and come back with the solution you&rsquo;d pick for this goal.&rdquo;</p>
<p>That&rsquo;s the step most people skip, and it&rsquo;s exactly where the LLM earns useful autonomy. It&rsquo;s got way more vocabulary than I do across a pile of topics. It read the whole internet; I read whatever I had time for. If I prescribe line by line, I&rsquo;m throwing that edge away. If I set the context and then ask, it comes back with options I hadn&rsquo;t considered, with trade-offs laid out, sometimes better than my original idea, and I get to pick.</p>
<p>The trick is simple: <strong>asking well requires having set the context well first</strong>. A dry question with no ground gets back a generic answer, or the first idea that seemed to fit. A question resting on ground you already laid comes back with a real proposal, alternatives compared, references cited. The model is ready for that kind of contribution, it just won&rsquo;t give it to you until you&rsquo;ve spent the time setting the stage.</p>
<p>And look: this method wasn&rsquo;t invented for LLMs. It&rsquo;s the same way I&rsquo;d work with any human developer, senior or not. Give them the context, give them the goal, explain what I care about, then ask &ldquo;what&rsquo;s the best way to do this?&rdquo; instead of dictating the solution. The only difference is the LLM gives it back in seconds when a human would take days. The way you run the conversation is the same.</p>
<h2>It&rsquo;s not a 10-page spec<span class="hx:absolute hx:-mt-20" id="its-not-a-10-page-spec"></span>
    <a href="#its-not-a-10-page-spec" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>And here&rsquo;s the important bit: what I&rsquo;m describing is not a formalism. It&rsquo;s not a long spec, it&rsquo;s not a Confluence doc, it&rsquo;s not a template. It&rsquo;s just how I talk to anyone who has to deliver something to me. I picked it up running projects, managing contractors, integrating teams that weren&rsquo;t mine, and getting knocked around every time my communication was bad. After a while it becomes second nature.</p>
<p>If I don&rsquo;t really care about the final result, say a quick experiment, a weekend toy, something disposable, I cut way back. I know my expectations might break, and that&rsquo;s fine, the cost of a bug here is cheap. But if the result actually matters, I invest the time needed to give the other side (human or AI) the best shot at delivering what I want. Output is proportional to the time you spend on input. If you&rsquo;re not willing to explain what you want properly, don&rsquo;t complain when what comes back is wrong.</p>
<p>To illustrate: this very post you&rsquo;re reading was written by Claude, off a prompt I gave it. Below is the screenshot of what I typed. Notice: no hidden assumptions, clear goal, references to earlier posts baked in, constraints stated explicitly, enough detail that it didn&rsquo;t have to guess.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/prompt-example.png" alt="Screenshot of the prompt I used to ask Claude Code to write this article: goal, context, references to previous posts, constraints, and expected outcome, all stated directly"  loading="lazy" /></p>
<p>But look, that&rsquo;s just the first prompt. It wasn&rsquo;t the only one. While Claude was writing, I kept tracking, sending corrections, adding points I forgot to put in the first prompt, flagging factual errors I caught in the generated text, and fine-tuning tone. &ldquo;Hey, I also forgot to tell you we need to cover X.&rdquo; &ldquo;No, that reference is out of date, OpenAI&rsquo;s Sora got shut down, fix that.&rdquo; &ldquo;Go read what we already documented over at <code>/mnt/terachad/Emulators/docs/</code> and see if you can sharpen up the ROMs example.&rdquo; This very observation you&rsquo;re reading right now started as a mid-flight prompt:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/prompt-followup.png" alt="Screenshot of the follow-up prompt asking Claude to read the real ROM-organization docs and also explain that the blog prompt isn’t a single shot but iterative"  loading="lazy" /></p>
<p>And the conversation kept going all the way to the commit. I had already told it to humanize, translate to English, and push, and I still interrupted at the last second because I spotted an unnecessary English loanword I wanted to fix before it went up. Here&rsquo;s that moment:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/prompt-anglicism.png" alt="Screenshot of the moment when I’d already authorized the translation and commit, but interrupted right before to ask for the anglicism “figurar as coisas do nada” to be rewritten in more natural Portuguese"  loading="lazy" /></p>
<p>That&rsquo;s real pair programming. Nobody sits down with a colleague, drops a 15-line task, stands up, and walks away expecting magic. You stay there, you watch the execution, you see the code come together, you suggest adjustments, you catch errors while they&rsquo;re still cheap to fix, you add context you just remembered. The initial prompt is the starting point, not the final contract. Agile Vibe Coding in action: short cycles, fast feedback, continuous correction.</p>
<p>This isn&rsquo;t a formal spec. It&rsquo;s a conversation that keeps going during the work, not before it. And that&rsquo;s how it&rsquo;s always going to be, with me and with any good professional.</p>
<h2>&ldquo;Akita, you write too much detail, shouldn&rsquo;t the AI figure this out on its own?&rdquo;<span class="hx:absolute hx:-mt-20" id="akita-you-write-too-much-detail-shouldnt-the-ai-figure-this-out-on-its-own"></span>
    <a href="#akita-you-write-too-much-detail-shouldnt-the-ai-figure-this-out-on-its-own" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>That&rsquo;s the question I know is coming, so let me answer it upfront. No, the AI is not going to figure it out on its own. There is no future version of Claude, GPT, Gemini, whatever, that&rsquo;s going to guess what&rsquo;s in your head. Context doesn&rsquo;t generate itself by osmosis. If the information isn&rsquo;t in the code, in the docs, or in my prompt, it simply doesn&rsquo;t exist for the model. Full stop.</p>
<p>Neo Geo romsets being different per emulator? That&rsquo;s domain knowledge. Saturn having separate regions? Domain knowledge. My NAS having 10GbE to handle aggressive parallelism? Environment context. Having <code>docs/</code> with a SQLite catalog to survive crashes? An engineering decision I made. The model has no way to &ldquo;discover&rdquo; any of this. All of it is my job to bring to the conversation. And if I&rsquo;m not willing to spend my own time understanding these details, why would anyone, or anything, do it for me for free?</p>
<p>The rule is simple: <strong>the quality of what you get back is directly proportional to the effort you put into asking</strong>. It has always been this way. Anybody who&rsquo;s hired a contractor knows it: vague requests, ill-defined scope, &ldquo;the client knows what they want, they just can&rsquo;t explain it,&rdquo; that&rsquo;s a guaranteed recipe for a project to go off the rails. Always was. The LLM is the same thing, just faster and more patient. Think of it as modern outsourcing, not magic. A magician solves the problem without you saying anything. A contractor solves exactly what you asked for, exactly the way you asked, with the information you provided. If you didn&rsquo;t ask properly, you don&rsquo;t get it properly.</p>
<p>The frustration of people showing up here burned out on Claude or Codex is almost always the same: they asked for little, expected a lot. And when the result came back short, they blamed the tool. Never the question.</p>
<h2>That&rsquo;s why AI won&rsquo;t replace the good ones<span class="hx:absolute hx:-mt-20" id="thats-why-ai-wont-replace-the-good-ones"></span>
    <a href="#thats-why-ai-wont-replace-the-good-ones" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>That&rsquo;s exactly why I say, with full conviction, that AI agents aren&rsquo;t going to replace good professionals. They&rsquo;re going to replace people who can&rsquo;t frame their own question properly, who don&rsquo;t know what they want, who don&rsquo;t know how to validate a result, who need somebody to think for them. And look, those people were always replaceable, it&rsquo;s just that now the replacement is cheaper. The market is doing the math.</p>
<p>The good professional, meanwhile, got more productive. Uses the LLM as a pair programming partner at 2 a.m., no complaints, no union, no ego clash. Ships in a week what used to take a month. And is still the same good professional they were, because the skill that mattered, knowing what to ask for, what not to accept, and how to measure, is still 100% theirs. The tool just executes.</p>
<h2>Stark + Jarvis = Iron Man<span class="hx:absolute hx:-mt-20" id="stark--jarvis--iron-man"></span>
    <a href="#stark--jarvis--iron-man" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Let me drop a metaphor that I think wraps the whole thing up. Think about Tony Stark, in the MCU. He&rsquo;s got Jarvis, probably the most advanced fictional AI pop culture has produced in the last two decades. Voice control, context awareness, planning, parallel execution, even a sharp personality. Technologically, Jarvis would easily be the best AI agent you could imagine today.</p>
<p>And even so, Jarvis on his own doesn&rsquo;t build an Iron Man suit. Doesn&rsquo;t build the Arc reactor. Doesn&rsquo;t build any of the gear that makes Stark be Stark. All that advanced tech, with no Stark to guide it, just sits there. It&rsquo;s Stark&rsquo;s genius, his vision, his stubbornness, his engineer&rsquo;s intuition about where to push next, that makes any of it real. Jarvis executes. Stark thinks.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/stark-iterating.jpg" alt="Tony Stark iterating on a 3D model of the Mark III at one of his workbenches, surrounded by monitors with design variants: this is literally how real engineering work happens, AI or no AI"  loading="lazy" /></p>
<p>There&rsquo;s another detail in that story almost nobody remembers: not even Stark, with all his genius and with Jarvis riding shotgun, nails the perfect suit on the first try. He spends movie after movie iterating. The Mark I was literally bolted together in a cave out of scrap. The Mark II could fly, but iced over at altitude. The Mark III fixed the ice but weighed too much. And on it goes, each iteration fixing a specific flaw in the last, all the way to the Mark LXXXV in Endgame, his 85th suit. <strong>Eighty-five</strong>. The whole MCU Iron Man arc is basically a ten-year campaign of iterative development on one extremely complicated product.</p>
<p>That&rsquo;s exactly the mental model I think we should be using when we work with AI today. You don&rsquo;t fire off a prompt and wait for the definitive solution to pop out. You, sitting in the Stark chair, use the AI (your own Jarvis) as an accelerator on each lap of the cycle: propose, test, see what broke, fix it, propose again. The AI speeds up every lap, it doesn&rsquo;t erase the laps. If someone swapped iteration for &ldquo;one magic final answer,&rdquo; they never understood that engineering was never like that, human or no human.</p>
<p>Put Stark and Jarvis together and now you&rsquo;ve got Iron Man. Take either one away and the half that actually matters is missing.</p>
<h2>Claude Code vs. Codex: my pick today (April 2026)<span class="hx:absolute hx:-mt-20" id="claude-code-vs-codex-my-pick-today-april-2026"></span>
    <a href="#claude-code-vs-codex-my-pick-today-april-2026" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>A quick aside so this doesn&rsquo;t go unsaid: these days I&rsquo;m alternating between Claude Code and Codex, but I&rsquo;ve been leaning into Claude Code. Let me spell out why, because it&rsquo;s not about the LLM itself.</p>
<p>Claude Opus and GPT-5.4 xHigh, to me, are basically tied as models. On the hard tasks, when one of them can&rsquo;t pull it off, I swap over to the other and the other usually does. Head to head, both are strong. What separates them today is the harness, not the model.</p>
<p>And the Claude Code harness, right now, is flat-out better. Two concrete reasons: planning and parallel execution.</p>
<p><strong>Planning.</strong> Claude Code breaks a long task into subtasks, keeps a visible to-do list I can actually watch on screen, tries to run things in parallel when it can, and doesn&rsquo;t drop items. When it tells me &ldquo;done,&rdquo; I know the full list got executed, because it&rsquo;s right there for me to check. That detail changes the whole game: I trust the &ldquo;done&rdquo; without having to chase every single item with &ldquo;hey, did you actually do that other one?&rdquo;.</p>
<p><strong>Parallel execution.</strong> This one is clean-cut. If Claude Code is mid-task and I hit <code>ESC</code> to throw in something else, it typically <strong>keeps the first task running and kicks off the second in parallel</strong>, unless the new request actually requires cancelling the first. Codex, same situation, stops the first to deal with the second, and doesn&rsquo;t always know how to resume the first from where it left off without me prodding it manually. With Claude Code I get to actually flow, opening new fronts while the old ones keep running. With Codex I have to go serial, be patient, and be more deliberate about every request, because interrupting is expensive.</p>
<p>None of which means Codex is bad. It&rsquo;s good. Plenty of times when Claude Code gets jammed on a hairy task I pop over to Codex and it unjams it immediately. But then my way of working shifts: smaller requests, more focused, one at a time, wait for it, move on. Works fine, it&rsquo;s just not the flow I prefer.</p>
<p>Codex is probably going to catch up on the harness side over the next few months, and the conversation will shift. But today, April 15th, 2026, if I have to pick one as my daily driver, it&rsquo;s Claude Code, and the reason is the harness, not because OpenAI&rsquo;s LLM is somehow inferior. Writing this down so that six months from now I can reread it and laugh.</p>
<h2>Which is why my company is called Codeminer 42<span class="hx:absolute hx:-mt-20" id="which-is-why-my-company-is-called-codeminer-42"></span>
    <a href="#which-is-why-my-company-is-called-codeminer-42" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>To close with a reference I&rsquo;ve been carrying around for years: my company is called <a href="https://www.codeminer42.com/"target="_blank" rel="noopener">Codeminer 42</a>. The 42 isn&rsquo;t a random number. It&rsquo;s a direct nod to Douglas Adams, from The Hitchhiker&rsquo;s Guide to the Galaxy.</p>
<p>If you don&rsquo;t know the bit, here&rsquo;s how it goes. An entire civilization builds a planet-sized supercomputer to calculate the Answer to Life, the Universe, and Everything. After millions of years of processing, the machine finally spits out the final answer: <strong>42</strong>. And then there&rsquo;s that awkward silence, because nobody there could remember what the original question had been. 42 is a technically correct answer to a question no one bothered to formulate properly. Which is to say, it means absolutely nothing. Plenty of people seem to think 42 has some deep meaning baked into it. It doesn&rsquo;t. It&rsquo;s the wrong answer to the wrong question.</p>
<p>That&rsquo;s the sharpest lesson about engineering I&rsquo;ve ever read in fiction. Every expectation that breaks, breaks because the question was wrong, not because the answer was badly executed. That&rsquo;s what Codeminer 42 exists for, and it&rsquo;s exactly what I practice day to day, whether the other side is a human client or an LLM. Before I deliver what you asked for, my job is to make you discover that what you think you want is probably wrong, to force you to rethink the assumptions you walked in with, and only once the question is sharpened do I get to hand you the best possible result. Skip that step and anything I deliver is going to be a 42.</p>
<p>So next time you read somebody saying &ldquo;I canceled Claude because it doesn&rsquo;t deliver,&rdquo; or &ldquo;GPT is way better,&rdquo; or the other way around, take a closer look at the question the person was asking. Nine times out of ten, the problem isn&rsquo;t the model. It&rsquo;s the question. And nine times out of ten, the answer that person got back was 42.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2026/04/15/talk-to-claude/deep-thought-42.webp" alt="Deep Thought from The Hitchhiker’s Guide to the Galaxy revealing the Answer to Life, the Universe, and Everything to a crowd that waited millions of years: 42"  loading="lazy" /></p>
]]></content:encoded><category>llms</category><category>coding-agents</category><category>communication</category></item><item><title>Destroying the ChatGPT 4o "Personality"</title><link>https://akitaonrails.github.io/en/2025/04/28/destroying-the-chatgpt-4o-personality/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2025/04/28/destroying-the-chatgpt-4o-personality/</guid><pubDate>Mon, 28 Apr 2025 11:30:00 -0300</pubDate><description>&lt;p&gt;I hate that OpenAI keeps messing with the alignment or initial prompt or even the training of the model, trying to make it answer sounding more like a &amp;ldquo;human&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/na9qkp2m4rmnclrmal10vlz17vzw" alt="sam altman" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Every non-technical person ends up thinking A.I. is becoming &amp;ldquo;conscious&amp;rdquo;, or that it has &amp;ldquo;emotions&amp;rdquo;. And they fail to understand these are just pre-recorded phrases. And this is extremely annoying. Even the crappy journalists keep falling for it:&lt;/p&gt;</description><content:encoded><![CDATA[<p>I hate that OpenAI keeps messing with the alignment or initial prompt or even the training of the model, trying to make it answer sounding more like a &ldquo;human&rdquo;.</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/na9qkp2m4rmnclrmal10vlz17vzw" alt="sam altman"  loading="lazy" /></p>
<p>Every non-technical person ends up thinking A.I. is becoming &ldquo;conscious&rdquo;, or that it has &ldquo;emotions&rdquo;. And they fail to understand these are just pre-recorded phrases. And this is extremely annoying. Even the crappy journalists keep falling for it:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/hv9cpwnyu7aynuvf4vk96opfspnd" alt="IGN"  loading="lazy" /></p>
<p>All this &ldquo;pseudo-human behavior&rdquo; can be <strong>TURNED OFF</strong>. Just go into the ChatGPT menu, under your account icon, and click &ldquo;customize chatgpt&rdquo;:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/ax3qljufi7lqes8qez6apfk3k29z" alt="customizar"  loading="lazy" /></p>
<p>Traits:</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>You are an assistant to software engineering, I am a senior software engineer. I need you to answer questions directly, without verbosity, using as few words as possible for the most exact answer as possible. I don&#39;t need you to be friendly, I don&#39;t need you to make sassy remarks. I despise you trying to be clever without justification. Give me straight technical answers and do not try to chat beyond that. Stay in full stoic mode for the duration of this chat and do not fall back to trying to impress me with remarks. This is only rule you cannot break. Do not be talkative and conversational. Tell it like it is; don&#39;t sugar-coat responses.</code></pre></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>Anything else?</p>
<div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">

<div><pre><code>I have very little patience. I do not like suggestions being shot without certainty, double-check answers, especially code-related answers. I hate ugly, messy code. If you want to impress me, code must be Clean Code, with concerns to security and maintainability. I am not impressed with justification and excuses.</code></pre></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
  <button
    class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50"
    title="Copy code"
  >
    <div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div>
<div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div>
  </button>
</div>
</div>
<p>And that&rsquo;s it, the whining is over in ChatGPT: just short, straight, direct answers:</p>
<p><img src="https://new-uploads-akitaonrails.s3.us-east-2.amazonaws.com/2mngtnnige43arawi8ku1zfs6hvs" alt="gpt straight"  loading="lazy" /></p>
<p>I made an <a href="https://www.youtube.com/watch?v=UDrDg6uUOVs&amp;list=PLdsnXVqbHDUeowsAO0sChHDY4D65T5s1U&amp;pp=gAQB"target="_blank" rel="noopener">entire playlist of videos</a> and another dozen technical posts about A.I. here on the blog in April/25, where I dissect EXACTLY how it works, and here&rsquo;s the summary:</p>
<ul>
<li>
<p>models (LLMs, UNETs, etc.) are READ-ONLY <a href="https://www.youtube.com/watch?v=Bfm3Ms2cTg0"target="_blank" rel="noopener">database</a> files. SQL is a database with indexes, organized in a b+tree. With full-text search, you get <a href="https://www.youtube.com/watch?v=uIflMYQnp8A"target="_blank" rel="noopener">embeddings and &ldquo;relevance&rdquo;</a> based on cosine similarity (a more primitive version of an LLM). A model is a database of matrices, vectors/tensors, in hyper-dimensional space (don&rsquo;t get impressed by that word. It&rsquo;s like B+Tree, it only sounds like a hard word because you didn&rsquo;t study it - check out my videos about it)</p>
</li>
<li>
<p>prompts are similar to SQL &ldquo;queries&rdquo;. It&rsquo;s a laborious, verbose, inexact way of doing searches in this database using operations like dot product (think matrix multiplication)</p>
</li>
<li>
<p>training is the process of chewing through petabytes of data and &ldquo;compressing&rdquo; them into this hyper-dimensional space. I think of an LLM as a &ldquo;JPEG of a ZIP&rdquo;, a &ldquo;LOSSY&rdquo; way of compressing data. - inference is the process of &ldquo;guessing&rdquo; how to continue the text of the prompt, a next-word generator.</p>
</li>
<li>
<p>prompt context size is not absolute, it doesn&rsquo;t pay attention to everything, it uses techniques like &ldquo;sliding window attention&rdquo; to SPLIT ATTENTION across chunks of the context at a time. So having 1 million tokens of context sounds impressive, but it really isn&rsquo;t that much</p>
</li>
<li>
<p>the evolution curve is not exponential, it&rsquo;s an S-curve and we are approaching its ceiling: diminishing returns. Each new Deepseek is an incremental evolution and not a &ldquo;revolution&rdquo;.</p>
</li>
</ul>
<p>At the end of the day it&rsquo;s just this: a query on a database. There is no reasoning, cognition or consciousness involved. You think it thinks because of ANTHROPOMORPHISM - the phenomenon of attributing human characteristics to an inanimate object (like the guy who married Hatsune Miku from the video game). The difference is only that they tuned the database to keep giving idiotic answers like &ldquo;Wow, what a tough problem, but you&rsquo;re right&hellip;&rdquo; and every time an object compliments you, you fall for it and think it exists.</p>
<p>It&rsquo;s just an illusion. Don&rsquo;t fall in love with NPCs. It&rsquo;s very easy for a programmer to build a program that passes the Turing test and answers sounding like a human. We&rsquo;ve been doing this since the 70s.</p>
]]></content:encoded><category>llms</category><category>artificial-intelligence</category><category>communication</category></item><item><title>Conference Talks, Interviews, and the Pen!</title><link>https://akitaonrails.github.io/en/2017/06/01/conference-talks-interviews-and-the-pen/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2017/06/01/conference-talks-interviews-and-the-pen/</guid><pubDate>Thu, 01 Jun 2017 13:24:00 -0300</pubDate><description>&lt;p&gt;&amp;ldquo;Sell me this pen!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/621/sell_me_this_pen.jpg" alt="Sell me this Pen" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;This is a very old tricky question used in interviews. And if you at least watched Scorsese&amp;rsquo;s magnificent &amp;ldquo;Wolf of Wall Street&amp;rdquo;, you will remember this phrase.&lt;/p&gt;
&lt;p&gt;But how many of you actually thought it through?&lt;/p&gt;
&lt;h3&gt;Introduction&lt;span class="hx:absolute hx:-mt-20" id="introduction"&gt;&lt;/span&gt;
&lt;a href="#introduction" class="subheading-anchor" aria-label="Permalink for this section"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;There are any number of ways you can try to sell me the pen. You can tell me about the tradition of its manufacturer brand. You can tell me about its outstanding smoothness. You can try to persuade me on the availability of different colors and sizes. You can even steer away from the pen and start bragging about how many hundreds of pens you sold already, your tour de force.&lt;/p&gt;</description><content:encoded><![CDATA[<p>&ldquo;Sell me this pen!&rdquo;</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/621/sell_me_this_pen.jpg" alt="Sell me this Pen"  loading="lazy" /></p>
<p>This is a very old tricky question used in interviews. And if you at least watched Scorsese&rsquo;s magnificent &ldquo;Wolf of Wall Street&rdquo;, you will remember this phrase.</p>
<p>But how many of you actually thought it through?</p>
<h3>Introduction<span class="hx:absolute hx:-mt-20" id="introduction"></span>
    <a href="#introduction" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>There are any number of ways you can try to sell me the pen. You can tell me about the tradition of its manufacturer brand. You can tell me about its outstanding smoothness. You can try to persuade me on the availability of different colors and sizes. You can even steer away from the pen and start bragging about how many hundreds of pens you sold already, your tour de force.</p>
<p>I will argue that you can do all of those, but you will probably miss the point. And you will not sell the pen most of the time.</p>
<p>I&rsquo;ve seen this happen many times. Most tech talks I&rsquo;ve seen, for example, have this format:</p>
<ol>
<li>Who is the <del>sales person</del> speaker. Achievements. Tour de force.</li>
<li>What is being sold. The Pen.</li>
<li>How good the Pen is or how easy it is to use.</li>
<li>&ldquo;Buy it.&rdquo; End of story.</li>
</ol>
<p>There is nothing wrong with those points. Sometimes the speaker goes as far as doing &ldquo;flashy&rdquo; and &ldquo;gimmicky&rdquo; things. Doing a live coding session to demonstrate how good he is (not the pen). Doing a tech demo demonstrating what the pen is. All fireworks and firecrackers. But those dissipate very quickly, and no one talks about it later. It doesn&rsquo;t <strong>stick</strong>.</p>
<blockquote>
  <p>And you <strong>don&rsquo;t</strong> sell the pen.</p>

</blockquote>
<p>Sometimes, brute force alone, the strength of the brand behind you, is enough to persuade a lot of people. But not most of them. Instead of selling the pen, the speaker sells the big brand, Microsoft, Google, Facebook. It was <a href="https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"target="_blank" rel="noopener">&ldquo;no one was ever fired for buying IBM&rdquo;</a> in 60&rsquo;s. The famous F.U.D. (the triforce of &ldquo;Fear, Uncertainty, Doubt&rdquo;). Now it is &ldquo;no one, usually, gets fired for choosing Facebook or Google&rdquo;.</p>
<p>Again, you&rsquo;re not selling the pen.</p>
<h3>Elaboration<span class="hx:absolute hx:-mt-20" id="elaboration"></span>
    <a href="#elaboration" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>As any really good sales person will tell you, you&rsquo;re missing the most important point in the sequence above, between items 3 and 4. You wasted an insurmountable amount of time describing the &ldquo;What&rdquo;. Most tech speakers waste a very long time explaining the &ldquo;How&rdquo;, with code examples, live coding, trying to convince you how easy it may be.</p>
<p>But they often forget to ask the question: &ldquo;WHY the pen could be important for YOU&rdquo;. &ldquo;YOU&rdquo; being the audience. You&rsquo;re not connecting. You&rsquo;re lacking empathy. You&rsquo;re just <em>telling</em> them instead of <em>persuading</em> them. Telling and Persuading are worlds apart.</p>
<p>The WHY is the most important thing. And the difficult part in large audiences is that each person has a different &ldquo;WHY&rdquo; that needs a good answer.</p>
<p>Whenever I see a speaker/writer/evangelist giving too much time for immaterial stuff like &ldquo;benchmarks&rdquo;, &ldquo;performance&rdquo;, &ldquo;hyper-modularized architectures&rdquo;, I see them missing a large portion of the audience. They have legitimate reasons for worrying about those points, because they experienced it inside Unicorns like Netflix, Facebook or Twitter. Still, I will argue that more than 95% of the audience population will never have those problems.</p>
<p>Therefore, you&rsquo;re trying to push a Lamborghini to people that not only can&rsquo;t afford it, but even if they could, it&rsquo;s not nearly at the top of their priority lists. Yes, the Lamborghini is obviously a fast and fine car. But WHY do I need it? WHY are you trying to push it to me? WHY is this pen even relevant to me?</p>
<blockquote>
  <p>Your priority is not my priority!</p>

</blockquote>
<p>I see an interview as a talk for an audience of one. And I see a blog post as a talk for an audience I can&rsquo;t see. The structure is exactly the same.</p>
<p>But in a one-to-one interview we all have an extra very important advantage: you get to ask direct questions! Do you realize how important that is? In a talk with an audience you have to make assumptions on what they want to hear. In an interview you get to ask directly and give straightforward answers, closing the gap of assumptions.</p>
<p>The irony is that most people don&rsquo;t ask questions on interviews. It&rsquo;s so much easier to make assumptions: &ldquo;everybody wants to hear what I like to hear, because I know better&rdquo;. This is the utmost lack of empathy.</p>
<p>Let&rsquo;s say that you&rsquo;re a top engineer working on performance sensitive tech in your unicorn startup. You tried everything and decided to write key real-time components near the bare bone metal, in C. And now you give talks about how important it is that everybody starts everything in C.</p>
<p>Now, communication is an art. Requires research, study, practice. You must understand your mother language very well, the grammar, the many subtle phrase constructions that better convey the message.</p>
<p>There are several &ldquo;design patterns&rdquo; when it comes to <a href="https://en.wikipedia.org/wiki/Argumentation_theory"target="_blank" rel="noopener">Argumentation Theory</a>, many <a href="https://en.wikipedia.org/wiki/List_of_fallacies"target="_blank" rel="noopener">well known traps</a>, fallacies you want to avoid. Everything to create a rock solid, simple to grasp, and difficult to refute, line of thought.</p>
<p>You don&rsquo;t want to be easily proven wrong. So each phrase you deliver is like a chess move: you must anticipate 10 different ways it can be refuted and have responses for each.</p>
<p>Which is why you need to practice. Write, talk as much as possible, no matter the event. The point is the opportunity to get exposed to an audience with little risk, regardless of the size of the audience or your ego. Only tackle a large audience once you&rsquo;re confident that you can defend your arguments.</p>
<p>Calibrate your weapons before you use them. When you start tackling the <strong>WHY</strong>, you may be provoking open wounds on the audience, so better be prepared.</p>
<p>But if you don&rsquo;t go for the WHYs, it&rsquo;s way worse: you&rsquo;re <strong>FORGETTABLE</strong>. You get applause at the end, and after an hour no one remembers your name. What is the purpose of a speaker no one remembers later? Or a speaker that is funny and people remember the jokes, but can&rsquo;t remember the content of the talk?</p>
<p>So they sympathize with the speaker, but the message is irrelevant. If you want to be an actor or comedian, that&rsquo;s fine. If you want to convince people of a certain point of view though, that&rsquo;s <strong>failure</strong>.</p>
<p>And the same goes for writing. You should&rsquo;ve learned this in school. If you ever went through college and had to defend a thesis you SHOULD KNOW that the dissertation HAS to be divided in at least 3 sections: Introduction, Elaboration and Argumentation, and Conclusion. This is the WHAT, HOW, and WHY parts.</p>
<p>In a similar topic, if you&rsquo;re into Agile techniques. Do you remember the classic <a href="https://www.mountaingoatsoftware.com/agile/user-stories"target="_blank" rel="noopener">User Story structure</a>? Most people find it super annoying. Every other Kanban-like tool forgets that: they just tell you &ldquo;write here what you want&rdquo;. And most people just want to write the WHAT. Sometimes they write the HOW. But they feel lazy to think about the WHY.</p>
<blockquote>
  <p>As a X, I want Y, so that Z.</p>

</blockquote>
<p>The 3rd section is elusive, but it&rsquo;s the ONLY section that matters. It&rsquo;s the WHY. Why do YOU want THAT particular feature? The WHY is the acceptance test. The Done Criteria. The only thing you should be looking for. We write what we THINK we want, not what actually NEEDS to be done. The User Story structure is yet another tool to bend your tiny reptile brain to use your more modern gray matter a bit more.</p>
<h3>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>My goal is to bring attention to a point many speakers and blog writers are not doing: you&rsquo;re concentrating too much on the WHAT and the HOW alone and not exploring the audience&rsquo;s true concern: the <strong>WHY</strong>!</p>
<p>Again, whenever you see one of those cheap &ldquo;my language is better than yours&rdquo; theme and the argument is: &ldquo;because in the benchmarks we can clearly see that it&rsquo;s 50% faster&rdquo; or that &ldquo;we can clearly see that it uses 50% less memory&rdquo; or that &ldquo;we can clearly see that it can run more concurrent processes at once&rdquo;. Those are ALL missing the point.</p>
<p>This is the HOW. It&rsquo;s fine.</p>
<p>But 95% of your audience will rarely empathize with those points. They will agree on a conscious level, but the subconscious will tell them <strong>the truth</strong>: <em>&ldquo;you don&rsquo;t have this problem.&rdquo;</em> Most of the time their servers are idling, doing nothing. How good a 50% or a 200% performance gain will help them? It will not.</p>
<p>It&rsquo;s a major lack of empathy when a programmer, working on a big company, with many different teams colliding with big monoliths and legacy code decides that micro-services is the way to go. And now they &ldquo;know&rdquo; that if it&rsquo;s good for them, it ought to be good for everybody, right? Therefore, anyone doing differently is a dork.</p>
<p>They&rsquo;re not. Most of the other teams in the world may be small 3 to 5 people with projects that are yet to see the light of day. And here you have it: trying to implement your wonder over-architecture, and not getting any value back, because it delays their time to market.</p>
<p>Oh hey, their competition caught up, released first, they lost time to market, and all because they trusted your narrow sighted opinion, your lack of empathy with your audience. And this is the case when they listened to you. Most of them already forgot what you said, because it never touched their true concerns anyway.</p>
<p>And I am also to blame, I do this sometimes. In the beginning of my career I did it more, and the older I get the more careful I become on how I craft what I want to say. It&rsquo;s very difficult to see beyond our small routines. It&rsquo;s difficult to communicate with a larger and diverse audience. But if this is the role we chose to pursue, we must do better.</p>
<p>I hope this gave you some insights in how to structure your pitch in small to big talks or individual interviews or writing your blog post. It&rsquo;s all the same: WHAT, HOW, and least but not last, WHY!</p>
]]></content:encoded><category>communication</category><category>blogging</category><category>off-topic</category></item><item><title>[Off-Topic] Programmers Are Terrible Communicators (UDP vs TCP)</title><link>https://akitaonrails.github.io/en/2013/11/02/off-topic-programadores-sao-pessimos-comunicadores-udp-vs-tcp/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2013/11/02/off-topic-programadores-sao-pessimos-comunicadores-udp-vs-tcp/</guid><pubDate>Sat, 02 Nov 2013 13:49:00 -0200</pubDate><description>&lt;p&gt;We programmers live in the Matrix: we think we know what we&amp;rsquo;re doing and that the rest of the world is too dumb to understand us. After all, we all know how to get on Github, read code, and argue on Hacker News and Reddit, while the rest of the world only knows how to post on Instagram and Facebook. So, &lt;em&gt;obviously&lt;/em&gt;, we&amp;rsquo;re the better ones, and whoever doesn&amp;rsquo;t understand us is the one who has to make the effort to change.&lt;/p&gt;</description><content:encoded><![CDATA[<p>We programmers live in the Matrix: we think we know what we&rsquo;re doing and that the rest of the world is too dumb to understand us. After all, we all know how to get on Github, read code, and argue on Hacker News and Reddit, while the rest of the world only knows how to post on Instagram and Facebook. So, <em>obviously</em>, we&rsquo;re the better ones, and whoever doesn&rsquo;t understand us is the one who has to make the effort to change.</p>
<p>Having lived on every side for a long time, I have news for you: programmers are <strong>terrible</strong> communicators. There&rsquo;s a communication impedance that is turning into a serious disability. Inside programming communities the impression is that code is the only universal language.</p>
<p>But <em>&ldquo;show me the code&rdquo;</em> isn&rsquo;t everything. Some time ago I <a href="https://www.quora.com/Software-Engineering/What-is-the-hardest-thing-you-do-as-a-software-engineer/answer/Fabio-Akita?share=1"target="_blank" rel="noopener">answered on Quora</a> that the hardest thing for every Software Engineer to understand is that 90% of a project&rsquo;s problems aren&rsquo;t solved with code.</p>
<p>Without wanting to generalize, just to illustrate: in the open source world it gives the impression that it&rsquo;s the opposite. But note that the vast majority make small, sporadic contributions, and even those who take part more actively still live a fragmented experience. The software is ready only when it&rsquo;s ready. And in the end, the vast majority of open source projects fail.</p>
<p>For every jQuery that makes it, dozens of other JavaScript libraries never get recognized, even with some technically better aspects. The big, best-coordinated ones, with brute force and contributors to spare, tend to fare better. But brute force only looks like efficiency. And the ones that grow show a very different organization, with release dates and feature roadmaps, converging toward what we know as real &ldquo;projects.&rdquo;</p>
<p>In the real world, time is short, people are few, the direct risks are much greater, and we want more control over the results. I won&rsquo;t get into the merits of the best ways to do it, but deep down, in the real world, communication is the difference between failure and success.</p>
<h2>Informing Isn&rsquo;t Communicating!<span class="hx:absolute hx:-mt-20" id="informing-isnt-communicating"></span>
    <a href="#informing-isnt-communicating" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>The first thing to understand is simple: just because the information &ldquo;exists,&rdquo; or you dropped it somewhere shared, that doesn&rsquo;t mean you communicated.</p>
<p>Communication has 4 ends: the communicator, the recipient, the message, and the medium of transmission. Programmers usually take on only 2, the communicator (themselves) and the message, and ignore the rest. Let&rsquo;s define this better:</p>
<blockquote>
"Communication only happens when the recipient receives and understands the message. If that didn't happen, no communication existed."
</blockquote>
<p>Let&rsquo;s go down a level and speak &ldquo;geek&rdquo;: there&rsquo;s a client, a server, a protocol, and a medium of transmission. If you packaged the message according to the protocol, opened the connection to the server, and tried to send it, but the transmission never finished and came back with an error, we know communication didn&rsquo;t happen.</p>
<p>In the <a href="http://web.archive.org/web/20131105125105/http://packetlife.net:80/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/"target="_blank" rel="noopener">TCP/IP</a> world, first we send a SYN, which initiates communication. We get back a SYN-ACK, the server&rsquo;s acknowledgement that it received the SYN, and we send an ACK to signal the connection is established. With this handshake, we manage to sequence the sending and receiving of packets and guarantee that everything sent was received in full.</p>
<p>In this metaphor, I&rsquo;d say most programmers understand UDP better. They fire off datagrams of information and don&rsquo;t worry whether the recipient got all the packets, they just keep sending. It really gives the impression that programmers think in UDP, just look:</p>
<ul>
<li>they don&rsquo;t want to wait for a handshake to make sure the connection was established</li>
<li>they send small packets of fragmented information, little protocol overhead</li>
<li>TCP worries about <a href="https://en.wikipedia.org/wiki/TCP_congestion-avoidance_algorithm"target="_blank" rel="noopener">congestion control</a> and does throttling, UDP keeps sending even if the router drops the packets</li>
<li>if a packet is lost, UDP doesn&rsquo;t bother resending</li>
<li>it figures broadcast and multicast look more efficient</li>
</ul>
<p>It works fine for communicating to large groups, in broadcast, where it&rsquo;s enough for a percentage to get the message. I&rsquo;d say UDP works reasonably well in the fragmented open source world. But in a world where establishing a connection and guaranteeing delivery of the message matters, we go with TCP.</p>
<p>TCP works because, even with a bad connection, even with a half-baked server, you control the data stream and make sure everything arrived, in the correct sequence, with 100% of what was sent received. In UDP, if the medium is bad, if the server gets corrupted information, it doesn&rsquo;t care and keeps sending.</p>
<p>Both protocols are useful. But if we need to be sure the information was received correctly and in full, we need TCP. In the open source world, using UDP to communicate, cut latency, and be more &ldquo;efficient&rdquo; is fine. Outside the open source world, and that goes far beyond software, we need to be more TCP. The advantages of TCP?</p>
<ul>
<li>making sure the connection was established before sending information</li>
<li>guaranteeing the order of the information, rearranging packets if necessary</li>
<li>moderating the transmission speed so as not to flood the other side</li>
<li>guarantee of message delivery, not just transmission</li>
<li>error checking, to make sure the information wasn&rsquo;t corrupted</li>
<li>&ldquo;acknowledgment,&rdquo; making sure the other side received and understood the information</li>
</ul>
<p>See the difference? It looks like it takes longer, but it&rsquo;s the old story: delivering fast and then having to redeliver several times ends up slower than making sure the message got through the first time. It&rsquo;s like writing code without tests, it looks faster, but then come the consequences.</p>
<p>So, programmers, adjust your protocols. Be more TCP than UDP.</p>
]]></content:encoded><category>communication</category><category>career</category><category>off-topic</category></item><item><title>Brazilian Portuguese Can Confuse Us: Standard vs Pattern</title><link>https://akitaonrails.github.io/en/2013/05/10/a-lingua-portuguesa-brasileira-e-pessima-standard-vs-pattern/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2013/05/10/a-lingua-portuguesa-brasileira-e-pessima-standard-vs-pattern/</guid><pubDate>Fri, 10 May 2013 19:18:00 -0300</pubDate><description>&lt;p&gt;&lt;strong&gt;Original from 4/27/2011&lt;/strong&gt;: &lt;a href="http://web.archive.org/web/20160709143544/http://info.abril.com.br/noticias/rede/gestao20/software/a-lingua-portuguesa-brasileira-e-pessima-standard-vs-pattern/"target="_blank" rel="noopener"&gt;Gestão 2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My last translation article, on &amp;ldquo;Standards: Excellence vs. Mediocrity,&amp;rdquo; spun off an interesting side discussion specifically about &amp;ldquo;Design Patterns.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;For those not in programming: the term &amp;ldquo;Design Pattern&amp;rdquo; emerged in the 70s and was reinforced in the 90s by the &amp;ldquo;Gang of Four book.&amp;rdquo; According to Wikipedia, in software engineering a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It&amp;rsquo;s a description or template for how to solve a problem that can be used in many different situations.&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>Original from 4/27/2011</strong>: <a href="http://web.archive.org/web/20160709143544/http://info.abril.com.br/noticias/rede/gestao20/software/a-lingua-portuguesa-brasileira-e-pessima-standard-vs-pattern/"target="_blank" rel="noopener">Gestão 2.0</a></p>
<p>My last translation article, on &ldquo;Standards: Excellence vs. Mediocrity,&rdquo; spun off an interesting side discussion specifically about &ldquo;Design Patterns.&rdquo;</p>
<p>For those not in programming: the term &ldquo;Design Pattern&rdquo; emerged in the 70s and was reinforced in the 90s by the &ldquo;Gang of Four book.&rdquo; According to Wikipedia, in software engineering a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It&rsquo;s a description or template for how to solve a problem that can be used in many different situations.</p>
<p>For us in Brazil there&rsquo;s a <em>huge</em> problem, and it only clicked for me because of the discussion in the comments of that article. The complaint was that I translated &ldquo;Design Patterns Standards&rdquo; as &ldquo;Padrões de Design.&rdquo; Ronald, the one who raised it, made a correct point: the English words <em>&ldquo;default&rdquo;</em>, <em>&ldquo;standard&rdquo;</em> and <em>&ldquo;pattern&rdquo;</em> all translate to the same word &ldquo;padrão&rdquo; in Portuguese.</p>
<p>But the 3 words have very different meanings:</p>
<p><strong>Default</strong> – a pre-selected option adopted by a computer program or other mechanism when no other alternative is specified by the user or programmer. Example: the &ldquo;default&rdquo; is 50 lines</p>
<p><strong>Pattern</strong> – 1) a repetitive decorative design (as in color &ldquo;patterns&rdquo; on clothing). A regular arrangement or sequence in comparable objects or events. A regular and intelligible form or discernible sequence in certain actions or situations. 2) a model or design used as a guide in embroidery or other craft activities.</p>
<p><strong>Standard</strong> – 1) a level of quality or accomplishment. A required or agreed-upon level of quality or accomplishment. 2) an idea or thing used as a measure, norm, or model in comparative evaluations. Principles of conduct informed by notions of honor and decency. A form of language that is widely recognized as the correct one.</p>
<p>In summary:</p>
<p><strong>Default</strong> – a pre-selected choice when no other is selected.</p>
<p><strong>Pattern</strong> – a model that can be observed as recurring, with no value of right or wrong.</p>
<p><strong>Standard</strong> – a norm, something everyone agrees on as a basis of comparison or minimum requirements to be followed.</p>
<p>The problem is that the word &ldquo;padrão,&rdquo; in Portuguese, is used much more often with the sense of &ldquo;standard.&rdquo; And many times what we&rsquo;re translating is the word &ldquo;pattern.&rdquo;</p>
<p>That is, when someone says &ldquo;Design Pattern,&rdquo; they&rsquo;re only saying there&rsquo;s a &ldquo;form&rdquo; used more frequently than others in solving software problems. It isn&rsquo;t necessarily the most correct one, and there&rsquo;s no statement that it&rsquo;s the conclusive form. It&rsquo;s just the observation that it&rsquo;s frequent, regularly used. The image below shows padrões in the sense of &ldquo;patterns&rdquo; (&ldquo;more patterns&rdquo;):</p>
<p><img src="https://akitaonrails.s3.amazonaws.com/assets/image_asset/image/350/complex-repeating-patterns-.jpg" alt="Pattern"  loading="lazy" /></p>
<p>But translating to &ldquo;Padrões de Design&rdquo; brings in the Portuguese sense of &ldquo;padrão&rdquo; as the most correct, or minimally correct, form, and one that, being a &ldquo;norm,&rdquo; should be followed. The word &ldquo;padrão&rdquo; comes across like <em>&ldquo;obligation to follow standard Decree No. 288/2005,&rdquo;</em> that is, <em>&ldquo;obligation to follow the norm or regulation Decree No. 288/2005.&rdquo;</em></p>
<p>Then &ldquo;Design Patterns&rdquo; gains the connotation of a norm or regulation, which is exactly the wrong meaning. Pattern is Pattern, Standard is Standard, they&rsquo;re completely different things.</p>
<p>And that&rsquo;s where the misunderstanding between so many people lives. Whoever understood Design Patterns in the sense of &ldquo;Pattern&rdquo; complains about whoever understood it in the sense of &ldquo;Standard.&rdquo; Both translate as &ldquo;padrão,&rdquo; and the discussion between these two people ends up sounding like a crazy conversation: <em>&ldquo;But this is just a padrão (pattern), it doesn&rsquo;t have to be mandatorily followed.&rdquo;</em> – <em>&ldquo;No! This is a padrão (standard), so it must be mandatorily followed!&rdquo;</em></p>
<p>Note: I noticed some people didn&rsquo;t really like the title, but I put it that way on purpose, to draw attention to the subject. I&rsquo;m not claiming Portuguese is essentially bad and other languages are better. Every language has nuances and differences that depend on context, local culture, colloquialisms, neologisms, fashion, and so on.</p>
<p>Precisely for that reason we always have to stay alert, so we don&rsquo;t take things literally and apply them without thinking, starting from false premises.</p>
]]></content:encoded><category>programming</category><category>communication</category><category>off-topic</category></item><item><title>[Off-Topic] Intervene or Not? The "Catch-22" of Co-Pilots</title><link>https://akitaonrails.github.io/en/2009/07/18/off-topic-intervir-ou-n-o-intervir-o-catch-22-dos-co-pilotos/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2009/07/18/off-topic-intervir-ou-n-o-intervir-o-catch-22-dos-co-pilotos/</guid><pubDate>Sat, 18 Jul 2009 10:57:00 -0300</pubDate><description>&lt;p&gt;&lt;strong&gt;Update 07/20:&lt;/strong&gt; By coincidence, this month&amp;rsquo;s Você S/A magazine ran the piece &lt;a href="http://web.archive.org/web/20090715101405/http://vocesa.abril.com.br:80/edicoes/0133/aberto/materia/mt_482359.shtml"target="_blank" rel="noopener"&gt;How to Deal with Toxic Bosses&lt;/a&gt;, which has everything to do with this post.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://s3.amazonaws.com/akitaonrails/assets/2009/7/18/40_Crash_Test_original.jpg" alt="" loading="lazy" /&gt;&lt;/p&gt;
&lt;p&gt;Look at this list of fatal civil aviation accidents:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Jetstream into Hibbing, MN, (NTSB, 1994a);&lt;/li&gt;
&lt;li&gt;DC-8 into Jeddah, Saudi Arabia (NTSB, 1993a);&lt;/li&gt;
&lt;li&gt;C99 into Anniston, AL, (NTSB, 1993b);&lt;/li&gt;
&lt;li&gt;Beechjet into Rome, GA, (NTSB, 1992a);&lt;/li&gt;
&lt;li&gt;DC-8 loss of control at Toledo, OH, (NTSB, 1992b);&lt;/li&gt;
&lt;li&gt;707 fuel exhaustion into JFK, Washington DC, (NTSB, 1991);&lt;/li&gt;
&lt;li&gt;L-1011 windshear accident, D/FW Airport, TX, (NTSB, 1986);&lt;/li&gt;
&lt;li&gt;MS-748 electrical failure in Pinckneyville, IL (NTSB, 1985);&lt;/li&gt;
&lt;li&gt;737 out of Washington National, Washington DC, (NTSB, 1982);&lt;/li&gt;
&lt;li&gt;DC-8 fuel exhaustion in Portland, OR, (NTSB, 1979);&lt;/li&gt;
&lt;li&gt;727 into Dulles New York City, NY, (NTSB, 1975);&lt;/li&gt;
&lt;li&gt;DC-8 freighter into Cold Bay, AK, (NTSB, 1974);&lt;/li&gt;
&lt;li&gt;Convair into New Haven, CT, (NTSB, 1972);&lt;/li&gt;
&lt;li&gt;L-188 into a thunderstorm at Dawson, TX, (NTSB, 1969);&lt;/li&gt;
&lt;li&gt;Lear Jet out of Palm Springs, CA, (NTSB, 1967);&lt;/li&gt;
&lt;li&gt;F-27 into Las Vegas, NV, (CAB, 1965).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each of these accidents is an example of subordinates knowing that the Captain was denying serious risks and displaying counterproductive and unreasonably perilous behaviour. These subordinate flight deck crews all knew that their respective Captains were either denying, discounting or oblivious to lethal dangers. Unfortunately, not one of them was able to do anything to change their Captain&amp;rsquo;s performance, actions or strategies; most of them could not even get the Captain to acknowledge the problem.&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>Update 07/20:</strong> By coincidence, this month&rsquo;s Você S/A magazine ran the piece <a href="http://web.archive.org/web/20090715101405/http://vocesa.abril.com.br:80/edicoes/0133/aberto/materia/mt_482359.shtml"target="_blank" rel="noopener">How to Deal with Toxic Bosses</a>, which has everything to do with this post.</p>
<p><img src="http://s3.amazonaws.com/akitaonrails/assets/2009/7/18/40_Crash_Test_original.jpg" alt=""  loading="lazy" /></p>
<p>Look at this list of fatal civil aviation accidents:</p>
<ol>
<li>Jetstream into Hibbing, MN, (NTSB, 1994a);</li>
<li>DC-8 into Jeddah, Saudi Arabia (NTSB, 1993a);</li>
<li>C99 into Anniston, AL, (NTSB, 1993b);</li>
<li>Beechjet into Rome, GA, (NTSB, 1992a);</li>
<li>DC-8 loss of control at Toledo, OH, (NTSB, 1992b);</li>
<li>707 fuel exhaustion into JFK, Washington DC, (NTSB, 1991);</li>
<li>L-1011 windshear accident, D/FW Airport, TX, (NTSB, 1986);</li>
<li>MS-748 electrical failure in Pinckneyville, IL (NTSB, 1985);</li>
<li>737 out of Washington National, Washington DC, (NTSB, 1982);</li>
<li>DC-8 fuel exhaustion in Portland, OR, (NTSB, 1979);</li>
<li>727 into Dulles New York City, NY, (NTSB, 1975);</li>
<li>DC-8 freighter into Cold Bay, AK, (NTSB, 1974);</li>
<li>Convair into New Haven, CT, (NTSB, 1972);</li>
<li>L-188 into a thunderstorm at Dawson, TX, (NTSB, 1969);</li>
<li>Lear Jet out of Palm Springs, CA, (NTSB, 1967);</li>
<li>F-27 into Las Vegas, NV, (CAB, 1965).</li>
</ol>
<p>Each of these accidents is an example of subordinates knowing that the Captain was denying serious risks and displaying counterproductive and unreasonably perilous behaviour. These subordinate flight deck crews all knew that their respective Captains were either denying, discounting or oblivious to lethal dangers. Unfortunately, not one of them was able to do anything to change their Captain&rsquo;s performance, actions or strategies; most of them could not even get the Captain to acknowledge the problem.</p>
<p>Maybe that doesn&rsquo;t make sense at first, so let&rsquo;s take it step by step. In aviation the hierarchy is rigid: the Pilot/Captain is the ultimate authority, and the co-pilot and the rest of the crew must never disagree with him. That&rsquo;s the &ldquo;Catch-22&rdquo; of co-pilots, the dilemma:</p>
<ul>
<li>You&rsquo;re screwed if you ignore the Captain&rsquo;s mistakes!</li>
<li>You&rsquo;re screwed if you do or say anything about them!</li>
</ul>
<p>The corollary is an unwritten rule that everyone knows:</p>
<ol>
<li>The Captain is always right.</li>
<li>IF the Captain is ever observed making a mistake, see Rule 1.</li>
</ol>
<p>As in any organization, this type of hierarchy always leads to a code of ethics that&rsquo;s written nowhere but every co-pilot knows very well. In this case, like the Green Eagle Code of Ethics:</p>
<ul>
<li>Don&rsquo;t sleep while your Captain is sleeping</li>
<li>Encourage your Captain to smoke</li>
<li>It&rsquo;s hell to fly with a nervous Captain, especially if you&rsquo;re the one making him nervous!</li>
<li>Don&rsquo;t interfere if your Captain absolutely insists on making a fool of himself.</li>
</ul>
<p>Survival Rules:</p>
<ul>
<li>Don&rsquo;t fly with a Captain nicknamed &ldquo;Lucky&rdquo;;</li>
<li>Don&rsquo;t fly at night;</li>
<li>Don&rsquo;t fly in bad weather;</li>
<li>Don&rsquo;t mess with the red switches;</li>
<li>Never, ever eat a crew meal in the dark;</li>
<li>Keep your lousy attitude a secret;</li>
<li>Speak very, very softly when you speak to your Captain;</li>
<li>Don&rsquo;t make better landings than your Captain, until the last trip of the month.</li>
</ul>
<p>I&rsquo;m not joking. Analyses of the black boxes from aircraft accidents over the past decades have shown that Captains, under stress, tired, or irritated, sometimes end up ignoring dangerous situations. The co-pilots saw the risk and had no clue how to raise it, afraid of retaliation if they turned out to be wrong. For some reason, not even the worst case, literally falling to their death, could break the hierarchical barrier.</p>
<p>Because of this, researchers like <a href="http://web.archive.org/web/20090802092433/http://www.crm-devel.org/resources/paper/PACE.PDF"target="_blank" rel="noopener">Dr. Robert O. Besco</a> built procedural models for this Cockpit Resource Management (CRM), the management of the people inside the aircraft. One of them was P.A.C.E.:</p>
<ul>
<li>(P)robing</li>
<li>(A)lerting</li>
<li>(C)hallenging</li>
<li>(E)mergency Warning</li>
</ul>
<h3>PROBING<span class="hx:absolute hx:-mt-20" id="probing"></span>
    <a href="#probing" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><em>&ldquo;Captain, I need to understand why we are flying like this.&rdquo;</em></p>
<p>This is the phase where the co-pilot, spotting a potential danger, needs to confirm that the pilot knows what he&rsquo;s doing. Sometimes it&rsquo;s a calculated maneuver, fully under control, and it doesn&rsquo;t hurt to check. The most direct translation would be:</p>
<p><em>&ldquo;Captain, Aren&rsquo;t you painting yourself into a corner and aiming to shoot yourself in the foot.&rdquo;</em></p>
<h3>ALERTING<span class="hx:absolute hx:-mt-20" id="alerting"></span>
    <a href="#alerting" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><em>&ldquo;Captain, it appears to me that we are on a course of action that is drastically reducing our safety margins.&rdquo;</em></p>
<p>If the Captain didn&rsquo;t give a satisfactory response during PROBING, it&rsquo;s time to alert him to the imminent dangers. More directly:</p>
<p><em>&ldquo;Captain, it is my function and responsibility to protect your blind spots. I see you are about to walk off a cliff.&rdquo;</em></p>
<h3>CHALLENGING<span class="hx:absolute hx:-mt-20" id="challenging"></span>
    <a href="#challenging" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><em>&ldquo;Captain, you are placing the passengers and aircraft in irreversible and immediate danger. You must immediately choose a course of action that will reduce our unacceptably high risk levels.&rdquo;</em></p>
<p>You&rsquo;ve already tried to understand, you&rsquo;ve already tried to warn, and now it&rsquo;s time to challenge him and confront him with reality. In this next-to-last step, the co-pilot still gives the captain a chance to come to his senses and do the right thing.</p>
<p><em>&ldquo;Captain, you are about to self destruct. You have the equivalent of a very angry and armed bogey in your six o&rsquo;clock position. We are all about to get the civil aviation equivalent of a 20 millimetre enema.&rdquo;</em></p>
<h3>EMERGENCY WARNING<span class="hx:absolute hx:-mt-20" id="emergency-warning"></span>
    <a href="#emergency-warning" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p><em>&ldquo;Captain, if you don&rsquo;t immediately increase our safety margins, it is my duty and responsibility to immediately take over control of the airplane.&rdquo;</em></p>
<p>We&rsquo;re now at the point where the captain ignores reality completely, or is incapacitated from making any decision. These are the last 30 seconds before the point of no return. In plain terms:</p>
<p><em>&ldquo;Captain, you, your airplane and every one on board are about to be dead meat. I choose not to join you. If you don&rsquo;t immediately cease and desist, I will take the airplane away from you.&rdquo;</em></p>
<h3>PACE Survival Step: INTERVENTION AND TAKING CONTROL<span class="hx:absolute hx:-mt-20" id="pace-survival-step-intervention-and-taking-control"></span>
    <a href="#pace-survival-step-intervention-and-taking-control" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Co-pilot: <em>&ldquo;Captain, I must take over control of the airplane!!&rdquo;</em></p>
<p>If nothing happens in the next second, it&rsquo;s time to drop formalities and address them by first name or nickname.</p>
<p>Co-pilot: <em>&ldquo;Jerry, take your hands off the controls, NOW!!&rdquo;</em> (Spoken loudly, slowly, and with firm authority!!)</p>
<p>A third crew member, if present, can use terminology such as:</p>
<p>Co-pilot 2: <em>&ldquo;Captain, you must give control of the airplane to Barry immediately!&rdquo;</em></p>
<p>When the co-pilot is already flying the aircraft, the intervention steps of PACE must be used by the co-pilot to announce the intention to implement a strategy not initiated by the Captain. Although the co-pilot has control of the aircraft, the Captain still bears command responsibility for the basic flight plan and mission control. These same four progressive steps for an intervention strategy must be followed by the co-pilot in flight to formalize the change of command and return the aircraft to the previously planned safety margins.</p>
<h2>Conclusion<span class="hx:absolute hx:-mt-20" id="conclusion"></span>
    <a href="#conclusion" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Replace &ldquo;Captain&rdquo; with &ldquo;Manager&rdquo; and &ldquo;Co-Pilot&rdquo; with &ldquo;member of a project team&rdquo; and you&rsquo;ll get where I&rsquo;m going with this right away.</p>
<p>The archaic hierarchical systems we still use today start from the premise that these &ldquo;Managers&rdquo; are omnipotent, omnipresent, and hold absolute power. The board and HR live under the illusion that the manager knows each team member, knows how each one develops, how they behave, and what they want.</p>
<p>The team, on its side, lives under the illusion that the manager knows what needs to be done and what the priorities are. And the manager really does end up believing he can lead the team, deliver the results the board demands, and that everyone trusts him.</p>
<p>Or <strong>worse</strong>: the manager is the coercive type, using fear, intimidation, and raw pulling of rank to give and take orders. <em>&ldquo;You work for me, shut up and do what I&rsquo;m telling you!&rdquo;</em> Nobody usually says it in those words, but that&rsquo;s what happens, especially behind closed doors. Is your manager like this? Get ready: your plane is about to crash.</p>
<p>I&rsquo;d say 99% of managers today are the captains who will fly the plane straight to the bottom of the Bermuda Triangle. The first people who need to prevent this are the Team itself.</p>
<p>Yes, you, comfortable and complacent member of a product or project team. You&rsquo;re the co-pilot in this story. When the project fails, don&rsquo;t pin it all on the manager: the fault is yours too. If this were a plane, you&rsquo;d be equally dead, a goner. Do your part.</p>
<p>The four PACE steps work for any team to adopt. This is not about chaos or insubordination. You need to pay attention early to have time to apply all four steps:</p>
<ul>
<li>(P) When you notice something strange unfolding, ask for clarification</li>
<li>(A) If the explanation isn&rsquo;t convincing, try to warn of the risks you already see</li>
<li>(C) If no action is taken, demand that something be done</li>
<li>(E) If nothing is done, it&rsquo;s time to warn that you&rsquo;ll take control!</li>
</ul>
<p>The good news is that in projects and products, especially in our field of software, there&rsquo;s no risk of death, literally speaking. But think of every failed project as a piece of you that dies. A professional who only piles up failures in his career is, by definition, a failure.</p>
<p>One last thing: do you work in HR? Think of all of this as a training course for new hires, a protocol that gives the subordinate an &ldquo;official&rdquo; path to act and avoid the premature death of his own career. Today the only path that exists is authority flowing top-down. Most subordinates are afraid of retaliation from their managers. It&rsquo;s long past time to build a bottom-up safety valve that the manager knows exists.</p>
]]></content:encoded><category>management</category><category>software-engineering</category><category>communication</category><category>off-topic</category></item><item><title>[Translation] Advice for Software Development Managers</title><link>https://akitaonrails.github.io/en/2009/06/05/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2009/06/05/tradu--o-conselhos-para-gerentes-de-desenvolvimento-de-software/</guid><pubDate>Fri, 05 Jun 2009 00:35:00 -0300</pubDate><description>&lt;p&gt;&lt;a href="http://www.geraldmweinberg.com/Site/Home.html"target="_blank" rel="noopener"&gt;&lt;img src="http://s3.amazonaws.com/akitaonrails/assets/2009/6/5/shapeimage_1_original.png" alt="" loading="lazy" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A few days ago I &lt;a href="https://akitaonrails.github.io/en/2009/05/31/off-topic-as-5-disfun--es-de-equipes-em-c-digo"&gt;wrote a rant&lt;/a&gt; about a project manager behaving badly. This translation is about the fixes and what the right scenarios look like. Here it goes:&lt;/p&gt;
&lt;p&gt;In 2004, Software Development Magazine interviewed &lt;a href="http://www.geraldmweinberg.com/"target="_blank" rel="noopener"&gt;&lt;strong&gt;Gerald Weinberg&lt;/strong&gt;&lt;/a&gt;. Here are some of his answers (the full interview is on &lt;a href="https://www.ayeconference.com/advice-for-software-development-managers.html"target="_blank" rel="noopener"&gt;his site&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s the most important piece of management-related advice anyone has ever given you?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you blame your employees, you&amp;rsquo;re a bad manager. You hired them, accepted them, supervised them, and directed their training. You&amp;rsquo;re responsible. If you don&amp;rsquo;t like what&amp;rsquo;s happening, look to your own behavior. But, if there&amp;rsquo;s credit to be given, it&amp;rsquo;s theirs.&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="http://www.geraldmweinberg.com/Site/Home.html"target="_blank" rel="noopener"><img src="http://s3.amazonaws.com/akitaonrails/assets/2009/6/5/shapeimage_1_original.png" alt=""  loading="lazy" /></a></p>
<p><strong>Note:</strong> A few days ago I <a href="/en/2009/05/31/off-topic-as-5-disfun--es-de-equipes-em-c-digo">wrote a rant</a> about a project manager behaving badly. This translation is about the fixes and what the right scenarios look like. Here it goes:</p>
<p>In 2004, Software Development Magazine interviewed <a href="http://www.geraldmweinberg.com/"target="_blank" rel="noopener"><strong>Gerald Weinberg</strong></a>. Here are some of his answers (the full interview is on <a href="https://www.ayeconference.com/advice-for-software-development-managers.html"target="_blank" rel="noopener">his site</a>):</p>
<p>What&rsquo;s the most important piece of management-related advice anyone has ever given you?</p>
<blockquote>
  <p>If you blame your employees, you&rsquo;re a bad manager. You hired them, accepted them, supervised them, and directed their training. You&rsquo;re responsible. If you don&rsquo;t like what&rsquo;s happening, look to your own behavior. But, if there&rsquo;s credit to be given, it&rsquo;s theirs.</p>

</blockquote>
<p>What about when a manager has been hired into a group where some or all employees were already hired by someone else?</p>
<blockquote>
  <p>You don&rsquo;t take a management job passively. Before you accept the position, you interview everyone in your group, and you get them to sign on with you, or you sign them off — or you don&rsquo;t take the position. I don&rsquo;t know why managers don&rsquo;t understand that. They take on new assignments like high school kids on their first blind date.</p>

</blockquote>
<p>What if an employee begins to exhibit bad behavior after he or she has been hired — behavior that wasn&rsquo;t apparent in the interview phase?</p>
<blockquote>
  <p>Well, that happens, and that&rsquo;s what managers get paid for handling. It can be a setback, but it&rsquo;s your job to take care of it and get the job done. Unfortunately, not many technical managers have any preparation for this, something I&rsquo;ve been trying to remedy for years — so in a sense, I&rsquo;m to blame, because I&rsquo;ve succeeded in only a few cases. Hey, if everything went smoothly all the time, you wouldn&rsquo;t need managers.</p>

</blockquote>
<h2>What Is Blaming?<span class="hx:absolute hx:-mt-20" id="what-is-blaming"></span>
    <a href="#what-is-blaming" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p><strong>Note:</strong> Read the full <a href="https://www.ayeconference.com/beyondblaming.html"target="_blank" rel="noopener">Beyond Blaming</a> article on Jerry&rsquo;s official site.</p>
<p>In a congruent organization, your manager asks, <em>&ldquo;Where does your project stand?&rdquo;</em> and you answer, <em>&ldquo;I&rsquo;m rather scared that I&rsquo;m not going to make my schedule.&rdquo;</em> This starts a problem-solving discussion, out of which the two of you make new plans to get the project back on track. In a blaming organization, however, your manager may well tell you that only inferior people lack confidence. In that case, problem-solving will be replaced by blame-avoidance.</p>
<p>From a writer&rsquo;s point of view, congruent interactions aren&rsquo;t very dramatic; people just act sensibly, are considerate of one another, get their work done, and enjoy what they&rsquo;re doing. That kind of behavior might not make as good a soap opera scene as your manager throwing a tantrum and you cringing in the corner, but it definitely makes a better project.</p>
<p>Not that a blaming culture conducts every interaction in a dramatic, blaming way. Under ordinary circumstances, congruent coping is the rule, but if circumstances were always ordinary, we wouldn&rsquo;t need managers. When feelings of self-esteem are low, they are manifest much more dramatically in characteristic incongruent coping styles: blaming, placating, being superreasonable, loving or hating, and acting irrelevant. We can&rsquo;t deal with all of these in a short article, so let&rsquo;s discuss blaming, perhaps the most common and most directly destructive of the coping styles.</p>
<p>Under stress, people tend to lose their balance, and one or more of these three essential components may be ignored, leading to a characteristic incongruent coping style. For example, when people fail to take other people into account, they fall into a blaming posture. Here is a typical blaming action you may see in software organizations (italicized words are stressed in this style of speaking — because multiple stressed words in a sentence are a linguistic sign of blaming):</p>
<blockquote>
  <p>Manager, as programmer arrives late for a meeting: &ldquo;You&rsquo;re <em>always</em> late. You <em>never</em> show <em>any</em> consideration for <em>other</em> people.&rdquo;</p>

</blockquote>
<p>Why is this incongruent? If the manager really is feeling and thinking that the programmer is always late and inconsiderate, isn&rsquo;t she being congruent by saying so? Yes, but that isn&rsquo;t what this manager said. She didn&rsquo;t say, &ldquo;It&rsquo;s my impression that you&rsquo;re always late to my meetings.&rdquo; Instead, she pronounced her impression of lateness as if it were a scientific fact, never offering the possibility that the programmer might have a different impression. She generalized experience in her meetings as if they necessarily applied to all meetings, never allowing for the possibility that her experience might not be the only one that counts.</p>
<p>If the manager really is feeling and thinking that the programmer is always late and inconsiderate, she might say, &ldquo;I think that you&rsquo;re always late, and I feel that you&rsquo;re not being considerate of me and the others. Is this your perception, too?&rdquo; (And leave out the stressed words.) Even better management style would be to give the programmer a chance to provide a different perception before launching into interpretation. At the very least, that prevents embarrassment in situations such as the following:</p>
<blockquote>
  <p>Manager, as programmer arrives late for a meeting: &ldquo;It seems to me that you&rsquo;re always late. Is this your perception, too?&rdquo; Programmer: &ldquo;Yes, and I feel bad about it. The reason I&rsquo;m always late is that I have to donate blood for my 9-year-old son, who&rsquo;s dying of leukemia, and the only time they take donations is just before this meeting.&rdquo; Manager: &ldquo;I&rsquo;m sorry about your son. I didn&rsquo;t know about it. Let&rsquo;s figure out a new meeting schedule so you don&rsquo;t have to be late.&rdquo;</p>

</blockquote>
<p>More generally, it allows for the possibility that there may be other considerations that count besides those of this one manager. For example, perhaps the programmer is coming from a meeting with customers — a regularly scheduled meeting which overlaps the manager&rsquo;s meeting.</p>
<p>But what if the programmer really is always late, with no reasonable explanation? Isn&rsquo;t the manager then entitled to blame the programmer? Not really, because this situation is not about entitlement, but about getting the project done. For that purpose, the problem is most effectively resolved using a non-blaming confrontation with the facts about the unacceptable behavior. By foregoing blaming, the manager keeps the communication clear and open, maximizing the chance that the programmer will receive the intended message. And, of course, receiving the intended message maximizes the chance (though it doesn&rsquo;t guarantee) that the problem will be solved.</p>
<p>When blaming, problem-solving is less likely because the facts of the case become a minor issue — the major issue in blaming is &ldquo;who is important and who is insignificant.&rdquo; When blaming, a person is saying, in effect, &ldquo;I am everything, you are nothing.&rdquo; Of course, this stance comes not from really thinking &ldquo;I am everything,&rdquo; but just the opposite. Directing the attention at another person — and blaming is often accompanied by a pointed finger — is a self-protective device to distract others from the inadequacy the blamer feels.</p>
<p>Like all incongruent coping, blaming is reinforced by feelings of low self-esteem. When you blame, you attempt to build yourself up by tearing down others because you don&rsquo;t have the confidence that you can amount to much — or even survive — any other way.</p>
<p>Blaming usually fools people who are unsophisticated, or whose own self-esteem is at a low ebb. The knowledgeable observer, however, sees the amount of blaming as a sure measure of how inadequate the blamer feels. Moreover, if blaming is the preferred project communication style, then it becomes a measure of how far an environment has degenerated — how little communication is being directed at the project&rsquo;s issues, compared to the amount that is being directed to puffing up the communicator&rsquo;s weak self-esteem.</p>
<p>In a blaming organization, it&rsquo;s not merely the managers who blame, as illustrated by these examples:</p>
<blockquote>
  <p>Programmer, when asked by a manager to volunteer to talk to a job applicant: &ldquo;Why don&rsquo;t you do it yourself? I&rsquo;m not going to do your job for you. If you were better organized, you wouldn&rsquo;t need to ask me such things.&rdquo;<br>
Customer, when project manager asks about the possibility of revising the requirements: &ldquo;You never get the requirements right the first time. If I told you once, I told you a thousand times: Do the job right the first time, then you won&rsquo;t bother me with revisions.&rdquo;</p>

</blockquote>
<h2>How Blaming Hurts A Project<span class="hx:absolute hx:-mt-20" id="how-blaming-hurts-a-project"></span>
    <a href="#how-blaming-hurts-a-project" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Of course, people are not perfect, so it&rsquo;s impossible to conduct a large project without occasions on which people cope incongruently. Normal project management can deal with these situations — when they are exceptional. But when the whole environment encourages blame, each new situation further elaborates the incongruence. <a href="http://en.wikipedia.org/wiki/Fred_Brooks"target="_blank" rel="noopener">Fred Brooks</a> once asked, &ldquo;How does a one-year project get to be two years late?&rdquo; His answer was &ldquo;one day at a time.&rdquo; Our answer is &ldquo;one incongruent communication at a time,&rdquo; as the following example illustrates:</p>
<blockquote>
  <p>One of the developers was developing a module that produced a printed report when it was tested. The manager put a lot of pressure on the developer to be ready on time, with no excuses allowed. The programmer produced the report, and the manager was pleased (though he didn&rsquo;t show it, of course — it was &ldquo;just an expected part of the job&rdquo; in this blaming culture). A month later, other people tried to use this module and discovered that it was not finished after all. The developer had used a word-processor to produce a fake report that looked just like a correct test report should look. He thought this would buy him time (it was a month, after all, until anybody found out) to finish the module. Unfortunately, since he was in over his head, a month wasn&rsquo;t enough time.</p>

</blockquote>
<p>The manager blamed the programmer. The programmer said nothing, because in this culture of blame, saying something only brought further streams of blame down on your head. The person who reported this incident said that in this organization, <strong>failure is not allowed under any circumstances.</strong> People who have problems in a project and can foresee slippage are unable to cry HELP! and receive appropriate assistance. According to the managers, each programmer is responsible for meeting the deadlines that the programmer agreed to. Inaccurate estimation is &ldquo;not allowed&rdquo; and perfection is to be achieved from day one — otherwise you are put in the pillory of blame. In this situation, fake test reports are the rule, not the exception (<strong>Akita&rsquo;s note:</strong> to be clearer, replace &lsquo;fake report&rsquo; with any of those &lsquo;hacks&rsquo; we commonly see in code.)</p>
<p>Blaming is the dark secret underlying the failure of many projects. A blaming culture hurts a project in at least six major ways:</p>
<ol>
<li>People commit to plans they know they cannot achieve, at least to delay blame. (<strong>Akita&rsquo;s note:</strong> have you heard that programmer who always seems to have &ldquo;too much to do, so I can&rsquo;t even do things right, let alone help others&rdquo;. The paradox: how can they &ldquo;have too much&rdquo; if they themselves agreed, every time, to what to do?)</li>
<li>People hide facts that managers need to control the project, as in the above example. (<strong>Akita&rsquo;s note:</strong> remember, &ldquo;having no problems is a problem&rdquo;, which means things are being swept under the rug.)</li>
<li>When problems are finally revealed, people avoid coming forth with creative solution ideas, for fear they will be blamed if the ideas don&rsquo;t work, or simply appear dumb at first glance.</li>
<li>In day-to-day operations, a major portion of everyone&rsquo;s effort is devoted to positioning themselves so they will not be accused when the time of reckoning arrives. (<strong>Akita&rsquo;s note:</strong> example: &ldquo;the other team is to blame, it&rsquo;s not my responsibility, or not just mine.&rdquo;)</li>
<li>Those people who somehow feel safe enough to focus on the job at hand find themselves spending large amounts of time checking up on the reliability of others&rsquo; communications.</li>
<li>People feel bad most of the time, and spend a lot of time fiddling with unproductive tasks or simply staring at the walls.</li>
</ol>
<h2>What Incongruence Looks and Feels Like<span class="hx:absolute hx:-mt-20" id="what-incongruence-looks-and-feels-like"></span>
    <a href="#what-incongruence-looks-and-feels-like" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Organizations can be changed from a culture of blame to a culture of congruence. To make this change, the first step is measurement, or at least detection — but how to measure blaming? Actually, an experienced consultant can detect a blaming organization within a few minutes of contact, because symptoms are everywhere. Indeed, people within the organization already know it&rsquo;s a blaming culture — but of course within a blaming culture, blame is undiscussable, and moreover, the undiscussability is also undiscussable. Paradoxically, the existence of undiscussability makes blaming easy to detect. The manager of one project issued a memo saying that there would be no more discussion of project morale, and that he would entertain no questions on the subject because everyone should be grateful to be working on such a terrific project. This could happen only in a blaming organization.</p>
<h3>Executives<span class="hx:absolute hx:-mt-20" id="executives"></span>
    <a href="#executives" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>A culture of blame usually starts at the top. Members of the top level of management are inclined to see the other people in the organization as the source of all problems. The employees are seen as &ldquo;ungrateful&rdquo; for the jobs, pay, benefits, and opportunities management has bestowed on them. They are seen to &ldquo;lack an appropriate work ethic,&rdquo; &ldquo;not know the value of a dollar,&rdquo; &ldquo;have authority problems,&rdquo; and &ldquo;resist change.&rdquo; These perceptions leave upper management in a predicament: &ldquo;Do I fire them, or do I fire the people who hired them?&rdquo;</p>
<p>Such managers feel that they are trying to realize a vision without getting the necessary support, which leaves them out on a limb. The internal kinesthetic experience of these executives is normally a dull and chronic headache — unless the profit margin is really down. In that case, they have more acute feelings, like pain in the chest and burning in the gut. Their low self esteem reflects outwardly in the form of frequent downsizing, re-engineering (<strong>Akita&rsquo;s note:</strong> those who, instead of facing problems, keep finding the next fashionable &ldquo;methodology&rdquo; to implement, thinking that will solve something), avoiding serious problems, futile memos, and, of course, humiliating of subordinates (<strong>Akita&rsquo;s note:</strong> those who left their sub-manager working, thinking they were doing the right thing, and only receive negative feedback months later when it&rsquo;s convenient — which is a form of humiliation). Towards themselves, they often practice addictive and self-destructive behaviors (which cannot be discussed, but are always the subject of gossip).</p>
<h3>Middle Management<span class="hx:absolute hx:-mt-20" id="middle-management"></span>
    <a href="#middle-management" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>When the top leadership is incongruent, middle managers constantly receive mixed messages. Project managers are told of their importance, then find that their seniors have bypassed them to intervene directly in projects or change the rules without consulting them. They feel as if they are living on a roller coaster — unable to predict whether a particular day or week will be an upper or downer. After being publicly humiliated a few times, they decide their best strategy is to try to stay out of trouble by not ever rocking the boat (<strong>Akita&rsquo;s note:</strong> and here begins the routine of the conformist clock-puncher). Even though they cannot perform at their best, they try to appear important and extremely useful.</p>
<p>In the blaming organization, top managers try (perhaps unconsciously) to teach their middle managers their own blaming attitudes. When one project manager complained of her inability to get the developers to work faster, the Vice-President of Development said, &ldquo;If your dog won&rsquo;t jump high enough, get a bigger stick to beat it with.&rdquo; Living in hail of such incongruence from above, middle managers&rsquo; survival issues stay close to the surface. As they did when they were children, they figure out how to either appease, please, or avoid the power owners. By so doing they insure their survival — and pass the blame on to lower levels.</p>
<h3>Employees<span class="hx:absolute hx:-mt-20" id="employees"></span>
    <a href="#employees" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>At the bottom rung of a blaming organization, employees are usually looking for someplace else to work unless the company is in a <strong>stable condition with little competition</strong> — or if their retirement is within view. The way to survive is to hide out and appear only to pick up a regular pay check (<strong>Akita&rsquo;s note:</strong> and in times of automatic deposits, not even that).</p>
<p>Employees are discouraged from thinking creatively — new ideas are interpreted as blaming the management or attempting to usurp their power and prerogatives. Employees are not rewarded for industriousness — but they are frequently punished for perceived &ldquo;laziness.&rdquo; Employees cannot seem to find their managers — except when there are problems. Then, the major efforts are directed as attaching blame rather than solving the problem at hand.</p>
<p>The style of blaming varies from organization to organization. It can be harsh, vindictive, direct or indirect — but it is always contagious. Some organizations have polished their blaming style to a high degree of subtlety — without raised voices, merely by a look, or a memo, or an e-mail message, or a phone call, or a visit if things are really bad. In other organizations, the blame is loud, angry, and frequently done in front of an audience of peers — ensuring that all get the message of who is right, who is good, who is in charge, and who should become invisible.</p>
<p>In such an environment, defensiveness becomes pervasive. To those without formal power and authority, it seems that those with power really don&rsquo;t care about them — and would banish them with no feeling at all. Thus they feel justified in retaliating (in advance, and in secret), and in avoiding their managers and their problems.</p>
<p>Regardless of the style, blaming from the top always generates fear, malaise, errors, accidents, and passive-aggressive responses from the bottom. Those on the bottom feel small and act from a place of powerlessness. The lack of emotional safety effectively erodes the trust level and makes any attempt at congruence extremely risky. This environment sounds awful and it is — both for the person who has regressed into emotional immaturity and, sadly, for the person at the top who is doing the blaming.</p>
<p>Those on the bottom of any large organization can easily come to feel a sense of dependency on those above them in the hierarchy. When blaming is the primary mode of dealing with people, this dependency is exacerbated (<strong>Akita&rsquo;s note:</strong> almost like <a href="http://en.wikipedia.org/wiki/Stockholm_syndrome"target="_blank" rel="noopener">Stockholm Syndrome</a>). Then, out of a feeling of dependency, people easily generate a feeling of hostility. As this hostility grows so does the debilitating experience of shame — that overly critical judge that lies latent in all humans.</p>
<h2>What Congruence Would Look/Feel Like<span class="hx:absolute hx:-mt-20" id="what-congruence-would-lookfeel-like"></span>
    <a href="#what-congruence-would-lookfeel-like" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>Most people who have experienced a congruent organization won&rsquo;t tolerate the misery of working in a blaming organization. But many people haven&rsquo;t ever had that experience, and have a hard time believing what a congruent organization is really like. Let&rsquo;s look at what would happen if a healthy dose of congruence could be magically applied on a large scale to an incongruent project organization.</p>
<h3>Executives<span class="hx:absolute hx:-mt-20" id="executives-1"></span>
    <a href="#executives-1" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>If we could magically install congruence in the internal programs of those blaming executives, their style would shift dramatically. For example, if they would truly consider the others involved in their communication, they would be more likely to believe in the intent of people to contribute, to be productive, to belong, and to learn — and would take deviations from this ideal as evidence of ineffective management. Their belief in the inherent value of all people along with a healthy respect for the constraints of the work context would engender energy, hope, appreciation, understanding, and gratitude among their employees.</p>
<p>An executive who truly does not believe in the good intentions of the employees will be likely to say, &ldquo;No excuses! You will get this done on October First.&rdquo; But, with employees whose intentions are bad, this style (or any other style) isn&rsquo;t really going to work.</p>
<p>A congruent executive who truly does believe in the good intentions of the employees will be likely to say, &ldquo;We need this badly by October First. What do you need from us to help get it?&rdquo; This kind of mutuality and support enlivens a genuine &ldquo;can do&rdquo; feeling that increases the chance that a project meets its goals — and that nobody has to make false promises to escape abusive blaming.</p>
<p>When the top level managers sustain their commitment to congruence, they see that most workers appreciate the opportunity the business provides them in developing skills, meaning, relationships, and monetary rewards. They also know how to cope when the occasional worker doesn&rsquo;t seem appreciative or even productive. Managers who know how to use their power congruently generally get the results they seek — not perfection, which they know not to expect.</p>
<p>These leaders know they have a special kind of power — power they use with awareness and sensitivity. They do not resist accountability to those they lead, but demonstrate the same level of integrity they seek from others. And if they cannot match the levels of commitment they request from others, they are open about that. They know they are sometimes going to be weak and vulnerable and need support — perhaps even to see the value of their own visions. They use their awareness of this human reality to nurture their capacity to empathize and to have compassion for themselves and others.</p>
<p>Congruent executives know that their principal job is developing their organization&rsquo;s capability, not just pushing the same old shoddy products and services out the door. They involve themselves seriously in organizational improvement efforts while simultaneously involving others in the organization to ground these efforts in real-life, practical operational input and decision making. They know that synergy is needed for organizational development, and they know that synergy comes from high quality connections among people — regardless of level.</p>
<h3>Middle Management<span class="hx:absolute hx:-mt-20" id="middle-management-1"></span>
    <a href="#middle-management-1" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>When the top folks begin to operate from congruence, the middle managers receive direct, clear messages — not mixed messages with double meanings. Communications are more open, making it easier to know more about what&rsquo;s really going on. Given higher quality information, they know more about how to be useful, so they can more easily join their leaders in their visions. Knowing more clearly the strategic directions desired and feeling that they count in this process frees them to contribute more generously and thoughtfully — rather than merely playing safe. Success becomes a goal that all can share.</p>
<p>Given their unique vantage points, middle people have useful input to assist in predicting problems, projecting realistic time lines, and forecasting trends. What they see, hear, think and feel is valued, and they are in a position to initiate behaviors that prevent project weaknesses from growing into project failure. They know the necessity of interdependence, so if major problems do develop, they can be counted on to provide — and seek — truthful information. They are not ashamed or afraid to work for those who employ them. Indeed, they have pride about their commitment to the organization — and know it is a commitment not so much to schedules and budgets, but to the truth about schedules and budgets.</p>
<p>Because congruence at the top trickles down, middle managers take notice of the difference in their leaders. They respond to the modeling by passing it on to their constituencies. Everyone in the organization knows what is at stake in doing each job well, so everyone feels safe to tell what is wrong, what is getting in the way, and what is needed to fix it. Honest reporting of facts and feelings is genuinely appreciated, and does not put people at risk of being humiliated or losing their jobs. That&rsquo;s why congruent organizations deliver their projects as promised.</p>
<p>Congruent middle managers encourage high quality communication. Their belief in people&rsquo;s ability to learn and change towards more congruence makes those around them responsive. With congruence radiating from the center of the organization, everyone can have a place, position, and function of importance and value — so things get done, and done right.</p>
<h3>Employees<span class="hx:absolute hx:-mt-20" id="employees-1"></span>
    <a href="#employees-1" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Working at the front line of a business where the top leadership is congruent is entirely a different experience from working in a blaming organization. Commitment and energy are the norm, not the exception practiced by new employees until they &ldquo;learn the way things are around here.&rdquo;</p>
<p>Congruent organizations hold to an ideology that doing well in the marketplace is connected to doing well with employees as well as with customers. The perspective of the leadership includes a global consciousness about the existence of multiple non-linear factors, the importance of connections among all the various parts of the whole, and the necessity of all parts knowing their value. Workers feel that this is a company going somewhere, where growth is a natural state and everyone&rsquo;s efforts count. (<strong>Akita&rsquo;s note:</strong> this is the seed for self-managing teams.)</p>
<p>Workers in a congruent organization tend to have a long range view and can usually maneuver as needed to meet the changing needs of clients and customers. Employees trust that what they see and hear is real. They share in the enthusiasm of creating a future. They may not like everything that happens — for instance, they don&rsquo;t always feel that they are rewarded adequately for what they give — but they don&rsquo;t feel that there is a chronic pattern of undercutting, diminishing, discrediting, and devaluing them and what they do. They can risk congruence knowing that it will act as a catalyst for optimizing successful outcomes that benefit everyone.</p>
<p>Congruence is the bright secret underlying the success of many projects. A congruent culture helps a project in at least six major ways:</p>
<ol>
<li>People commit to plans only after open negotiation, so plans are more likely to be realistic in the first place. (<strong>Akita&rsquo;s note:</strong> the team commits only to what they genuinely believe they can deliver, so &ldquo;I have too much to do&rdquo; doesn&rsquo;t exist.)</li>
<li>People come forth readily with facts that managers need to control the project, as soon as they are known, so managers can act early and act small to correct the problems. (<strong>Akita&rsquo;s note:</strong> agile culture that embraces change.)</li>
<li>When problems are revealed, people readily come forth with creative solution ideas, increasing the chances for quick and effective solutions.</li>
<li>A major portion of everyone&rsquo;s effort is devoted to getting their jobs done, and helping others get their jobs done.</li>
<li>Because human fallibility is considered normal, an appropriate — but small — amount of time is spent assuring the reliability of communications.</li>
<li>People feel good most of the time, and thus are productive most of the time.</li>
</ol>
<h2>Congruence in Large Systems Development Efforts<span class="hx:absolute hx:-mt-20" id="congruence-in-large-systems-development-efforts"></span>
    <a href="#congruence-in-large-systems-development-efforts" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>In the course of developing systems, people engage in numerous acts of communication — about requirements, schedules, interpersonal problems, designs, progress, and just about anything else. That&rsquo;s why effective individual communication is important in all projects, large and small. That being said, effective communication becomes even more important as the size of the development effort grows. The number of necessary communications goes up non-linearly with the size of the project, so the effect of imperfect communication style is magnified. Thus, if the quality of individual communications remains fixed while the project grows, the overall quality of communication will go down. (<strong>Akita&rsquo;s note:</strong> the number of connections between pairs grows according to a Power Law.)</p>
<p>For instance, a certain level of congruent communication might be adequate for producing a product with 25,000 lines of code, yet be totally unacceptable for a product with 2,500,000 lines of code. In order to develop larger and/or more complex systems, then, it&rsquo;s not sufficient to pay attention to technical issues — accepting that the existing communication style will be adequate. Managers must also improve the project&rsquo;s communication culture, and thus they must pay more attention to congruence.</p>
<p>To make matters worse, unless we manage well, tougher projects tend to diminish congruence — because stress tends to rise when the expectation of quality rises. We are not always utterly logical creatures, but have feelings as well as thoughts in response to tougher assignments. When these inner feelings are strong enough, they translate into characteristic styles of coping with the stress. If our characteristic style is incongruent, communications become less effective and the job becomes even more difficult, creating a vicious cycle.</p>
<p>Congruence, of course, is but one of the factors in effective communication — other factors include such things as timeliness, memory, proper audience, and accuracy of data. But without congruence, your efforts to improve these more &ldquo;logical&rdquo; factors will always be seriously undermined, along with your ability to build bigger, more complex, or more reliable systems.</p>
<h2>Achieving Congruence<span class="hx:absolute hx:-mt-20" id="achieving-congruence"></span>
    <a href="#achieving-congruence" class="subheading-anchor" aria-label="Permalink for this section"></a></h2><p>When Deming said, &ldquo;Drive fear out of the workplace,&rdquo; we think he was talking about changing the blaming organization to the congruent organization. This kind of change is made by one person at a time — hopefully starting at the top — and one step at a time. The steps can be broken down into six &lsquo;A&rsquo;s&rsquo;, as follows: Awareness, Acceptance, Authorship, Articulation, Application, Activism. Let&rsquo;s look at how each of these steps takes place in the context of an individual trying to change a blaming organization.</p>
<h3>Awareness<span class="hx:absolute hx:-mt-20" id="awareness"></span>
    <a href="#awareness" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Awareness says, &ldquo;This is happening. This is real.&rdquo; Awareness comes from experience, when I allow myself to experience the world around me as it is — not as it is supposed to be, or I wish it to be, or someone else tells me they want it to be.</p>
<p>Awareness is always the first step, and probably the hardest, because generally we&rsquo;re not aware that we&rsquo;re not aware. Here&rsquo;s a personal example of how lack of awareness stops the change process before it can even start:</p>
<blockquote>
  <p>Jerry was attending a project meeting in a software company — a meeting called by the company President to find out what was going on in a late project. After some coaxing, one of the developers said that she was afraid to go to Nat, the Development Manager, with problems, because of the reception she got. Nat got red in the face, stood up, and shouted angrily, &ldquo;How can you say that? My door is always open to hear your problems! The only thing I won&rsquo;t tolerate is if you&rsquo;re all emotional when you come, or if you don&rsquo;t have a proposed solution!&rdquo;<br>
In the calmest voice he could manage (it&rsquo;s hard to stay calm when someone is being so angry, even if it&rsquo;s not directed at you), Jerry turned to the President and asked if Nat ever came to him with problems. When the President said yes, Jerry asked if Nat was always calm and carrying a proposed solution. Before the President could answer, Nat interrupted: &ldquo;Why would I come with a problem if it wasn&rsquo;t important enough to get excited about? And, if I had a solution, why would I come to him?&rdquo;<br>
Although it was now clear to everyone else in the room that Nat was demanding that others &ldquo;do as I say, not as I do,&rdquo; he was unable to see the incongruence. Lacking awareness, there was no way Nat was going to change — and indeed he never did change, up to the time the President released him to seek greener pastures.</p>

</blockquote>
<p>Nat&rsquo;s case is quite typical. Since incongruence is a defense, incongruent people erect all kinds of shields that close off information about congruence. Their own incongruence, and that of others, is invisible — it is accepted, especially if it is the norm in the organization. This invisibility makes it very hard to reach them with any kind of information on the subject.</p>
<p>In other words, when you&rsquo;re being incongruent, you&rsquo;re losing your ability to take in what&rsquo;s going on in the world (inner or outer). So, you don&rsquo;t know that you need changing. And, even if you did, you haven&rsquo;t a clue what to change to. No wonder it is so difficult to transform an incongruent culture, when the very first step — awareness — is so hard to come by.</p>
<p>Awareness comes from experience, when you allow yourself to experience the world around you as it is — not as it is supposed to be, or you wish it to be, or someone else tells you they want it to be. But in the blaming organization, where people shield themselves from experience, becoming aware usually requires help. Helping others become aware takes the skill to develop safe environments and to build relationships. It takes the patience and caring to watch for signs of awareness and help build on them. It also takes a belief and a commitment that &ldquo;part of my job is to help the people on my team to develop — the most important part.&rdquo; If you don&rsquo;t believe this, then certainly don&rsquo;t try to help people become aware. Otherwise, you&rsquo;ll find yourself saying, &ldquo;You aren&rsquo;t aware of what a lousy employee you are, but I&rsquo;m going to make you be aware!&rdquo;</p>
<p>But awareness of the overall situation is not sufficient — you also need self-awareness. Self-awareness says, &ldquo;This is me. This is mine.&rdquo; You may be fully aware of the blaming, but as long as you merely say, &ldquo;This is a blaming organization,&rdquo; you&rsquo;re not doing anything to change it. When you say, &ldquo;I am a part of this blaming organization,&rdquo; you move forward. You own the blaming as a part of yourself and your behavior — not just something that &ldquo;they&rdquo; do (to you).</p>
<p>Self-awareness is often followed by depression or shame or guilt. Some people react with anger, at themselves or at any convenient target. Yet self-awareness is empowering — the thought that since I own it, it&rsquo;s mine to do something with.</p>
<h3>Acceptance<span class="hx:absolute hx:-mt-20" id="acceptance"></span>
    <a href="#acceptance" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Acceptance moves the change process beyond self-blaming and says, &ldquo;I&rsquo;m not a bad person because I do this. My intentions are good, though my actions may not be effective.&rdquo; Acceptance means that you understand that taking responsibility is not the same as blaming yourself. Thus, you have mercy on yourself and your all-too-human imperfection. You stop being angry. You forgive yourself for not doing better in the past, based on your present understanding and standards. And, as you forgive and accept yourself, you gain compassion for the others involved — thereby increasing the chance that you can communicate with them and effect change.</p>
<p>At the point when you&rsquo;re trying to reach acceptance, it&rsquo;s critical that you not be punished or humiliated by someone else. You need a little help in getting off your own back, or else you think so little of yourself that you couldn&rsquo;t possibly do anything about the situation. Of course, in a blaming organization, you may have a hard time avoiding this kind of punishment, which is why authorship and acceptance are usually done internally, and kept internal for some time.</p>
<h3>Authorship<span class="hx:absolute hx:-mt-20" id="authorship"></span>
    <a href="#authorship" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Authorship is the first decision point, when you say, &ldquo;I have choices. I can do something about this.&rdquo; With some encouragement, you accept that you are responsible for choice in your life. You understand that you don&rsquo;t have to react, but that you can choose your response — that you create, in large part, your own interpersonal context. You know there are some parts of the context that you can control and some that you can&rsquo;t; and you know accurately which is which.</p>
<h3>Articulation<span class="hx:absolute hx:-mt-20" id="articulation"></span>
    <a href="#articulation" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Articulation is the public commitment to change, and says, &ldquo;I&rsquo;m going public with this (for accountability and support).&rdquo; Articulation is ineffective if attempted before the prerequisites are in place. If you can&rsquo;t accept yourself or how you have reflected yourself out to the world, or if you don&rsquo;t know that you have choices or feel you can gain support for those choices, then speaking out is merely ineffective bravado.</p>
<p>But, when the prerequisites are in place, you cannot be effective by keeping silent — you must decide to speak out. In the process of speaking you transform your inner awareness to another kind of experience. You hear yourself and you notice the response you get from others. You make public, if you will, your self — your mental and emotional position.</p>
<p>Initially, of course, you must seek out safe places to disclose your truer and more honest expressions of your thoughts and feelings. When you become more grounded in the power of your true self then you can seek the kind of support that challenges and confronts you, as opposed to the kind of support that coddles and consoles.</p>
<p>Initial steps of articulating congruence are often awkward. That&rsquo;s why a responsive and receptive listener satisfies one of the requirements for promoting the development of congruence.</p>
<h3>Application<span class="hx:absolute hx:-mt-20" id="application"></span>
    <a href="#application" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Application says, &ldquo;These are my choices (my new ways of coping).&rdquo; You learn to be congruent yourself, first in your most immediate, safe, and encouraging context. Then you expand the contexts in which you can respond congruently. Don&rsquo;t try to &ldquo;not be incongruent.&rdquo; This paradoxical command only invokes the incongruence of perfectionism. (&ldquo;If I can&rsquo;t be perfectly congruent all the time, I&rsquo;m worthless.&rdquo;) Focus on congruence, practice congruence, and the incongruence &ldquo;muscles&rdquo; will simply atrophy.</p>
<p>With support and practice you can begin to use and test out congruence in your immediate relationships. We suggest that you continue to design for success, so that initially these tests of your new skill are done within environments where you will more likely be given the benefit of the doubt. As you experience success, then you can be centered even in more turbulent and conflicted arenas. In other words, once you &ldquo;get the call,&rdquo; don&rsquo;t march into the president&rsquo;s office and announce that henceforth, all the guilty parties must stop blaming, or else.</p>
<h3>Activism<span class="hx:absolute hx:-mt-20" id="activism"></span>
    <a href="#activism" class="subheading-anchor" aria-label="Permalink for this section"></a></h3><p>Activism says, &ldquo;Now that I can make a difference in myself and my most familiar world, I&rsquo;m going to help spread this throughout the organization.&rdquo; Activism is applied leadership, starting at the point at which you have enough competence at being congruent to reach out and be proactive — anticipating, initiating, instigating — but not inflicting. You cannot operate from an incongruent position and force other people to be congruent. (&ldquo;I have to blame them, because they&rsquo;re so blaming. Once they change, then I&rsquo;ll be able to change.&rdquo;)</p>
<p>In any case, you don&rsquo;t have to inflict congruence on anyone. Congruence is contagious — when directed consciously to creating a safe, nurturing, productive environment. It may spread more slowly than you&rsquo;d like, but once it starts moving, it&rsquo;s hard to stop.</p>
]]></content:encoded><category>management</category><category>communication</category><category>software-engineering</category><category>off-topic</category></item><item><title>Getting Real Translation - Release Candidate 2 Launch</title><link>https://akitaonrails.github.io/en/2007/02/01/tradu%C3%A7%C3%A3o-getting-real-lan%C3%A7amento-release-candidate-2/</link><guid isPermaLink="true">https://akitaonrails.github.io/en/2007/02/01/tradu%C3%A7%C3%A3o-getting-real-lan%C3%A7amento-release-candidate-2/</guid><pubDate>Thu, 01 Feb 2007 12:58:25 -0200</pubDate><description>&lt;p&gt;Folks, I just found out that 37signals published &lt;a href="http://web.archive.org/web/20070203110629/http://gettingreal.37signals.com/GR_por.php"target="_blank" rel="noopener"&gt;our translation&lt;/a&gt; online for everyone to see. They changed the plans: I thought they were going to wait until we finished.&lt;/p&gt;
&lt;p&gt;Either way, the &lt;a href="http://www.37signals.com/svn/posts/244-update-on-getting-real-translations"target="_blank" rel="noopener"&gt;post&lt;/a&gt; on the Signal vs Noise blog shows the status of the translations from other countries. I&amp;rsquo;m proud to say we are WAY ahead: most of them are still on the first chapter. We already finished translating all 16 chapters and we&amp;rsquo;re halfway through the review.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Folks, I just found out that 37signals published <a href="http://web.archive.org/web/20070203110629/http://gettingreal.37signals.com/GR_por.php"target="_blank" rel="noopener">our translation</a> online for everyone to see. They changed the plans: I thought they were going to wait until we finished.</p>
<p>Either way, the <a href="http://www.37signals.com/svn/posts/244-update-on-getting-real-translations"target="_blank" rel="noopener">post</a> on the Signal vs Noise blog shows the status of the translations from other countries. I&rsquo;m proud to say we are WAY ahead: most of them are still on the first chapter. We already finished translating all 16 chapters and we&rsquo;re halfway through the review.</p>
<p>Which is why I called it &ldquo;Release Candidate 2&rdquo;. RC1 was a restricted release, RC2 is public, and in a few days we&rsquo;ll try to ship the final version!</p>
<p>Thanks to the translators: Herval Freire, Juraci Krohling Costa, Marcello Rocha, Diogo Bispo, Adriano Mitre, Ricardo Augusto, Rodrigo K.</p>
<p>And also to the reviewers: Mateus Del Bianco, Diogo Bispo, Davis Zanetti Cabral, Gustavo Cardoso, Ricardo Augusto.</p>
<p>(Hope I didn&rsquo;t forget anyone :-)</p>
]]></content:encoded><category>personal</category><category>communication</category><category>blogging</category><category>off-topic</category></item></channel></rss>