<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Mindless Rambling Nonsense</title>
		<description>My thoughts are mindless and rambling so the best place for them is the internet</description>		
		<link>https://pauldambra.dev</link>
		<atom:link href="https://pauldambra.dev/feed.xml" rel="self" type="application/rss+xml" />
		<updated>2026-10-21T08:44:27+00:00</updated>
		
			<item>
				<title>Machinists &gt; Tailors</title>
				<description>&lt;p&gt;Machinists &amp;gt; Tailors&lt;/p&gt;

&lt;p&gt;Software engineers are turning into AI Engineers? No, we are turning into software machinists. Replacing handmade software with (increasingly) cheap, plentiful, machine-made software. Unlike tailors who handcraft each item, machinists build tooling and inspect samples and then produce in large numbers.&lt;/p&gt;

&lt;p&gt;Mid 2025 tab completion was a toy. I didn&apos;t really use it and was no slower than colleagues who did. &lt;a href=&quot;https://pauldambra.dev/2026/02/deca-hundy.html&quot;&gt;I shipped around 60 PRs a month in 2025&lt;/a&gt; and barely used AI. Around September 2025 I confidently told a table of other engineers that there was no chance I would stop writing code. I simply loved it too much.&lt;/p&gt;

&lt;p&gt;Then Opus 4.5 happened and by chance I changed laptops. I realised at the end of January 2026 that I had not written a line of code by hand. I hadn&apos;t even installed an IDE on the machine I was using. I merged 62 PRs in the PostHog monorepo in Jan 2026, roughly the same as any month in 2025, but all without typing a single line. And I loved it. It made me wonder if I was that wrong in September, then how wrong was I now?&lt;/p&gt;

&lt;p&gt;Observing the changes in how I work, and how my colleagues work, I see a number of common changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;we are tech leads for a team of junior engineers now&lt;/li&gt;
  &lt;li&gt;the code is not for us&lt;/li&gt;
  &lt;li&gt;paying attention to context (pun intended) is even more important&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And have some predictions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;continuous integration and review will change next&lt;/li&gt;
  &lt;li&gt;we make tools for our workshop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ok, some folks are still working on systems with critical safety requirements or high performance systems where it is easier to cause an incident and things have changed less for them. But the majority of us now have a different job. It is no longer sufficient to pore over every line of code, following the practices of bespoke tailored software engineers. Now we are software machinists.&lt;/p&gt;

&lt;h1 id=&quot;observations&quot;&gt;Observations&lt;/h1&gt;

&lt;h2 id=&quot;we-are-all-tech-leads-now-leads-of-a-team-of-robo-juniors&quot;&gt;We are all tech leads now. Leads of a team of robo-juniors&lt;/h2&gt;

&lt;p&gt;Tech leads set direction and curate team habits so that the group becomes more effective over time. Our robo-engineers are not curious, so with a robo-team it is up to us to set direction. In the past this was necessary because it helps us do better work. Now it is necessary because the robots won&apos;t do it. It&apos;s one part where the human is value-add. To quote Kent Beck after he first tried using ChatGPT: &quot;The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x. I need to recalibrate&quot;.&lt;/p&gt;

&lt;p&gt;The tech lead was always responsible, not for reading and reviewing all the code, but for setting direction. For being the casting vote when there is disagreement. They follow the work of each team member in enough detail that they can share context without getting into the weeds of each piece of work.&lt;/p&gt;

&lt;p&gt;Now we do that for our robots. At first it was by choosing when to hit tab, then the prompt, the context, the harness… increasingly at PostHog I see even that work delegated. Several people will ask our &lt;a href=&quot;https://posthog.com/docs/libraries/slack&quot;&gt;Slack agent&lt;/a&gt; to create github issues when they see a thread they want to act on. Those issues are picked up by our self-driving tooling and they will be tagged on the pull request when it is generated.&lt;/p&gt;

&lt;p&gt;A lead is responsible for paying attention to overall quality of the systems they own. Importantly, that&apos;s not quality per PR. Your team should be able to review each other&apos;s PRs without you. Your responsibility is the quality over time. Unintended consequences accrue over time as well-intentioned decisions in each change combine in a way you didn&apos;t expect and wouldn&apos;t have chosen.&lt;/p&gt;

&lt;p&gt;To cover this I have been using &lt;a href=&quot;https://posthog.com/docs/self-driving/scouts&quot;&gt;Scouts&lt;/a&gt; (agents that run on a timer). I have a suite of &quot;complexity hunters&quot;. They check for cyclomatic complexity because even with agent-written code, we see exceptions cluster in complex code. And then they open PRs to split this up. Using skills to guide how we like to see code split, not just chasing a complexity score.&lt;/p&gt;

&lt;p&gt;The hunters check for share of comments in a diff, we&apos;ve seen that grow from 2% to over 9% before getting things back under control. And they check for known shapes of bugs we&apos;ve seen more than once. Like forgetting to use a different serialiser in an API for listing things, or using a Django TestCase that sets up the database only to run tests that don&apos;t make any queries.&lt;/p&gt;

&lt;p&gt;The complexity hunters have merged 47 PRs in the last 30 days. These PRs are mostly reviewed by other agents. The job of the software machinist is to make it safe not to review the PRs. This one set of scouts are shipping almost as many PRs in a month as I was each month through 2025.&lt;/p&gt;

&lt;p&gt;Leading from a place of trust means coming to understand what different models are capable of. To delegate to my robo-team members appropriately. Giving them the right instructions and guard rails so that they can do good work. It means not always reading every line of code because we trust the system built around the work of the robots. Knowing when a task needs closer attention and when it needs none at all. Setting up the practices that team members can follow so that lessons learned are baked into our habits.&lt;/p&gt;

&lt;p&gt;I have a review skill that is &quot;trained&quot; on the history of my PR reviews at PostHog over the three years before AI really took off. Another that is trained on the wisdom of the conversations on c2wiki.com. Where the folks that went on to write the agile manifesto and in other ways shape modern software engineering would discuss how they thought about engineering. These and other skills run on a variety of models and their reviews automatically become prompts that ship fixes to my PRs. I only get involved when that all has settled.&lt;/p&gt;

&lt;p&gt;In the same way that I don&apos;t check the work of prettier when it reorganises my files. I don&apos;t check the individual steps of the work of these reviewers. I only look at their final output. The job has always been about delivering the most value for the least effort. How I express that is different now. I can fight it or I can shut up and ship some value. 2025 Paul would never have handed over review to automation. 2026 Paul can&apos;t afford not to.&lt;/p&gt;

&lt;h2 id=&quot;the-code-is-not-for-us&quot;&gt;The code is not for us&lt;/h2&gt;

&lt;p&gt;The better the robots become, the less that the code is for the humans.&lt;/p&gt;

&lt;p&gt;To quote my colleague, Tue Haulund:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I&apos;m sure when the first FORTRAN compiler was released, for a time, engineers still read the machine code output that it produced to make sure it was up to scratch. Who does that still? Compiler developers and nobody else. It will be like that for generative LLMs producing code also. Imagine someone making the argument that if you don&apos;t read, understand and verify all the assembly that GCC outputs then they&apos;re not a real engineer or they&apos;re somehow not doing their job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sure, compilers are deterministic, so this doesn&apos;t map one-to-one onto agent driven work. But it shows that as technology changes our behaviours around it will need to change.&lt;/p&gt;

&lt;p&gt;This can be seen not just at the technology level. As soon as a company is large enough you don&apos;t read all the code. Another team ships an API. You may write some integration tests but you use the API without reading its code. You install a dependency and you don&apos;t read the code, you write some tests to verify it works and you move on.&lt;/p&gt;

&lt;p&gt;Now that it is cheaper to generate code I have to treat the work of the agents in the same way. I don&apos;t read it. I verify it works. We take the behaviours that protect us and double down. Having strong habits and automation around validation has always been a multiplier for how fast you can safely mutate your system. As we speed up the ability to create and change our software this becomes more important. Reading the code was only ever a part of that validation so that the human could understand the interaction between the desired impact and what needed to be validated.&lt;/p&gt;

&lt;h2 id=&quot;paying-attention-to-context-pun-intended-is-even-more-important&quot;&gt;Paying attention to context (pun intended) is even more important&lt;/h2&gt;

&lt;p&gt;An old colleague, Andy Longshaw, used to say &quot;A problem has a solution in a context&quot;. Even within one organisation there is more than one context for the work of doing engineering. In test driven development people talk about &quot;driving in gears&quot;. The idea that just like you have to drive in the right gear for the terrain and conditions the way you write code and tests changes as the context of the code changes.&lt;/p&gt;

&lt;p&gt;Folks who are working on high performance or critical systems will be less likely to allow robots to self-drive their systems with minimal human interaction. I made a mistake once in a change to PostHog&apos;s ingestion pipeline that increased CPU usage. The runaway impact led to an hours-long incident call as we fought to stabilise the pipeline enough to recover from the backlog that was caused.&lt;/p&gt;

&lt;p&gt;In that type of system accepting a change is more complicated. Deployments are split into stages and the new code taking effect is separated from the deployment of the code so that it can be safely rolled out. Robo-juniors still need much more shepherding to achieve this kind of work.&lt;/p&gt;

&lt;p&gt;Even here they can help. For example, in our JS SDK repo we have a list of code areas that were involved in significant bugs. We automatically flag when a change touches one of those areas and have a skill that teaches an agent how to go deeper in a follow-up if the validation flags a change. Encoding organisational knowledge in an active way to help improve safety.&lt;/p&gt;

&lt;p&gt;Or we surface checks from CI back to the agent. When a PR might change an API and the desktop app at the same time, we warn the agent that it needs to deploy the work to change the API first or make the change backwards compatible. And that problem doesn&apos;t need to bubble out to humans unless the solution isn&apos;t clear.&lt;/p&gt;

&lt;h1 id=&quot;predictions&quot;&gt;Predictions&lt;/h1&gt;

&lt;h2 id=&quot;continuous-integration-and-review-will-change-next&quot;&gt;Continuous integration and review will change next&lt;/h2&gt;

&lt;p&gt;Theory of constraints suggests that continuous integration and review will change next. This theory tells us that every system has one step that is slower than all the other steps. That slow step sets the speed of the whole system. We call it the constraint (or the &quot;bottleneck&quot;). You can learn more in The Goal from Dr. Eliyahu Goldratt. I’m lazy, so I recommend the graphic novel of the book.&lt;/p&gt;

&lt;p&gt;Now that robots can speed up PR creation, PostHog has seen around a 5x increase in PRs against a 1.5x increase in headcount, that creation is likely no longer your system&apos;s slowest step. The next steps in the chain are to review, build, test, and then deploy your system. One of those becomes the new bottleneck in your delivery.&lt;/p&gt;

&lt;p&gt;We are forced to focus even more on &quot;the work not done&quot;. For example to reduce unnecessary CI steps. PostHog ran 46 years of CI time in August 2026 (kudos to depot.dev for absorbing the growth). Allowing this to grow unbounded is unsustainable even just economically. In September we had this down to 36 years of CI time. There’s the value of the work not done, we merged 26% more PRs but CI time fell 22%.&lt;/p&gt;

&lt;p&gt;We expect to see software services and tooling flourish here. This new bottleneck will need new solutions to help us deal with this growth in code creation. I’m thinking about how we present changes so that we can care about each agent-driven PR roughly as much as we used to care about each commit in the PRs.&lt;/p&gt;

&lt;p&gt;The next discovery for us is what tooling and behaviour has to change to make this safe. Of course, it is possible that it cannot be made safe. And then we also need to recognise that and put back pressure in place to avoid overwhelming the system with fresh PRs when there is already too much work in progress. One consequence of the theory of constraints in a production line is to teach us to control work entering the system, as well as to increase it at the slowest point.&lt;/p&gt;

&lt;p&gt;I have never recommended that people try to read every PR. Instead we set up the guard rails that help the members of the team make decisions and then step back and let them work. We have an agent called StampHog that has a set of rules of how to decide if a PR is safe to approve without needing further review. It can approve a PR without other human interaction. About 30% of our PRs are approved by StampHog. For around $910 a month in token costs. Fantastic value for money to speed up other work.&lt;/p&gt;

&lt;p&gt;StampHog is open source so you can see how it works. But how can I be sure it’s not a slop cannon? At PostHog we are quick to revert a PR if there is even a hint of a problem. In January 2026 1.5% of our PRs were reverts, in August 2026 just 0.25% of PRs were reverts. I’m confident from how we measure the system and from user feedback that we’re not shipping fast just for the sake of it.&lt;/p&gt;

&lt;p&gt;And for the PRs that aren&apos;t an easy stamp, we have ReviewHog. This goes deep on reviews and you can apply your own skills to extend the reviews on your PRs. Humans at PostHog tend to take half a day to get around to reviewing a PR. It takes ReviewHog 30 minutes to do a deep and thorough review.&lt;/p&gt;

&lt;p&gt;We run evaluations against our AGENTS.md making a change with and without it present to check that it is actually guiding our agents and scoring various models to keep track of how they behave. And have various models recreate human-only pull requests from the before times to score how well they mimic accepted changes from the past.&lt;/p&gt;

&lt;h2 id=&quot;we-make-tools-for-our-workshop&quot;&gt;We make tools for our workshop&lt;/h2&gt;

&lt;p&gt;Machinists, of course, do one-off work to make tools for the workshop. They make them cheaply and often throw them away, because they’re just as cheap to make again. And so we should expect to see some systems be completely ephemeral, while others will be critical. When the cost of making code is low, people will make very quick apps to solve their problems. The opportunity for organisations to identify when something is useful and to promote it from “ephemeral” to “critical” will be powerful.&lt;/p&gt;

&lt;p&gt;We are already seeing this at PostHog as people generate new apps to manage PR reviews, present diffs in new ways, manage CI and review shepherding across tens of PRs at a time, and even ship wasm to the browser so they can embed doom in our main product. And they are doing this alongside their primary work not instead of it.&lt;/p&gt;

&lt;p&gt;My colleague Tom Owers has made &lt;a href=&quot;https://www.talyn.dev/&quot;&gt;Talyn&lt;/a&gt;. He uses it to manage the hundreds of PRs he generates expanding the range of sources our context warehouse can handle. Talyn started as one person’s vibe-coded app and now multiple people are using it and contributing to it. Alongside it, he made totally custom software to manage tracking requested sources and replying to people automatically when they’re shipped. Several others have made applications to visualise and review changes through multiple lenses. Our devex team has made an application to group and prioritise github notifications so you can focus your attention when unblocking others.&lt;/p&gt;

&lt;p&gt;Here is a real impact of the switch to machine-made systems over bespoke systems. The ability to very quickly retool and deliver products is enhanced. This is a new expression of agility and craft. Something that wasn&apos;t available to as many organisations as before. These applications might continue to be worked on, they might be thrown away and serve as inspiration to the replacement. When the cost of making is low, the cost of discovery is lowered.&lt;/p&gt;

&lt;p&gt;Generating SQL queries and UI over your data is available to more people on a timescale that wasn&apos;t available before. When I worked at Co-op Digital we had a large team that spent many months making a repeatable web platform on top of a design system in order to industrialise the production of content driven websites. I would expect that to be days or weeks not weeks or months now.&lt;/p&gt;

&lt;p&gt;But I would also expect the bottleneck there to still be the design system. At co-op one problem was that with so many teams and departments systems that were built looked, behaved, and felt different. And so &lt;a href=&quot;https://www.coop.co.uk/experience-library/&quot;&gt;their design system&lt;/a&gt; was critical. That work is still hard and still essential.&lt;/p&gt;

&lt;p&gt;Since the barrier to entry for SQL queries has fallen, the barrier to generating a bad query or analysis has fallen too. At PostHog we&apos;ve had to build a &quot;semantic layer&quot; so that we can have one place where the robots can look-up meaning to guide their decisions. Otherwise nuanced questions like &quot;What is the revenue of product X&quot; can have varying answers. We don&apos;t want to restrict who can ask which question, we just want tooling that enables good answers.&lt;/p&gt;

&lt;p&gt;So, some of the systems we use now will be almost entirely ephemeral. Entirely validated by their behaviour, generated on-demand, cheap to create, and so cheap to throw away. Others will be all the more critical. Being built and validated more carefully under the increased rate of change. As the cost of creating these things falls. The shared layer, things like your design system or security controls, becomes even more important, contributing to your ability to maintain a high pace safely.&lt;/p&gt;

&lt;h1 id=&quot;the-conclusion&quot;&gt;The conclusion&lt;/h1&gt;

&lt;p&gt;There isn&apos;t one kind of engineering job. This is true at PostHog where we have teams that cover a range of responsibilities: growth, products, ingestion, ClickHouse, billing, and more. And so it is easy to make statements that will work for one group and not at all for others. But that won’t stop me. Most engineers need to stop trying to read the code and start trying to make it safe not to read the code. Even if agents don&apos;t improve their capabilities from now, the job of a software engineer has changed. If they keep improving it will be fully transformed.&lt;/p&gt;

&lt;p&gt;This might feel uncomfortable but we mustn&apos;t complain about &quot;slop&quot; any more than a sailor should complain about the weather. Instead we must act to make our systems better. Taking advantage of the tools available to us. Like a machinist we build tools to do the work and the checks that test it.&lt;/p&gt;
</description>
				<pubDate>Wed, 21 Oct 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/10/machinists-not-tailors.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/10/machinists-not-tailors.html
				</guid>
			</item>
		
			<item>
				<title>Don&apos;t stop the slop</title>
				<description>&lt;p&gt;I&apos;ve long avoiding saying &quot;legacy&quot;. I think it&apos;s lazy to use it. It&apos;s always seemed to be a term to group together &quot;a bunch of stuff i don&apos;t like&quot;.&lt;/p&gt;

&lt;p&gt;Same with technical debt. Which &lt;a href=&quot;https://pauldambra.dev/2021/07/tech-debts.html&quot;&gt;I wrote about at length&lt;/a&gt; a few years ago.&lt;/p&gt;

&lt;p&gt;They&apos;re words that mean &quot;i don&apos;t like that&quot; or &quot;i wouldn&apos;t do that&quot;&lt;/p&gt;

&lt;p&gt;Worse. If you say them to ten people at least eleven different definitions were heard. It&apos;s just not good communication.&lt;/p&gt;

&lt;h2 id=&quot;and-now-everyone-says-slop&quot;&gt;And now everyone says &quot;slop&quot;&lt;/h2&gt;

&lt;!--more--&gt;

&lt;p&gt;I&apos;ve noticed this creeping in. In bug reports &quot;why even ship this slop&quot; for features that were made in the beforetimes (pre-October 2025 and the great AI awakening). It just means &quot;i don&apos;t like that&quot; and it doesn&apos;t have a defined definition. It&apos;s just not good communication&lt;/p&gt;

&lt;p&gt;Then, while writing this, I googled for the definition… if I&apos;m gonna say it doesn&apos;t have a definition (and this is the load bearing part 🤢) I should check if that&apos;s true&lt;/p&gt;

&lt;p&gt;And, well, it does have a definition… and it&apos;s fucking glorious.&lt;/p&gt;

&lt;h2 id=&quot;ok-ill-bite-whats-the-definition&quot;&gt;Ok, i&apos;ll bite… what&apos;s the definition?&lt;/h2&gt;

&lt;p&gt;using this &lt;a href=&quot;https://en.wikipedia.org/w/index.php?title=Slop_(clothing)&amp;amp;oldid=1373259449&quot;&gt;version of the Wikipedia page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you go back far enough it&apos;s just &quot;various types of loose clothing&quot;. 19th century British naval ships even had a &quot;slop chest&quot;&lt;/p&gt;

&lt;p&gt;But in the 19th century as the industrial revolution bit and we could make things with machines in a way we couldn&apos;t really before &quot;slop&quot; had a negative connotation. There was conflict between bespoke tailors and slop traders. Slop was a term applied to all clothing that was not skilfully tailor-made for the customer.&lt;/p&gt;

&lt;h2 id=&quot;and-we-all-still-wear-bespoke-tailored-clothes-thank-the-maker-for-that&quot;&gt;And we all still wear bespoke tailored clothes, thank the maker for that&lt;/h2&gt;

&lt;p&gt;Machine-made clothes won out, right? In the UK at least it is rare to wear bespoke tailor-made clothes. But nobody calls it slop. Industrial clothes production was cheaper and closed the quality gap enough that most people don&apos;t care.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2026/09/slop-confuse.png&quot; alt=&quot;the title of the Wikipedia page&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;well-i-am-wilfully-going-to-confuse-it-with-ai-slop&quot;&gt;Well, I am wilfully going to confuse it with AI slop.&lt;/h2&gt;

&lt;p&gt;During the short-lived tab completion phrase AI made software badly. Claude&apos;s Opus, fable and Jippity&apos;s astra, and sol circle around making software passably. Sometimes they are amazing and sometimes not. You can meaningfully write software without ever actually writing the software.&lt;/p&gt;

&lt;p&gt;Arguably, right now your bespoke tailor-made software beats the cheap ready-made stuff. Engineers still worry about the code being slop.&lt;/p&gt;

&lt;p&gt;But…&lt;/p&gt;

&lt;p&gt;It keeps getting better. And the slop only has to become cheap enough or good enough and that will flip. We won&apos;t call it slop any more, it&apos;ll just be code.&lt;/p&gt;

&lt;p&gt;You and I as software engineers just need to decide when we switch and become software machinists or software therapists.&lt;/p&gt;

&lt;p&gt;Personally, I don&apos;t really care if it is desirable since I think it is inevitable.&lt;/p&gt;

&lt;p&gt;And to paraphrase my wonderful colleague Jon McCallum: I&apos;d rather rise to the occasion than complain about it.&lt;/p&gt;
</description>
				<pubDate>Tue, 22 Sep 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/09/i-will-happilly-slop.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/09/i-will-happilly-slop.html
				</guid>
			</item>
		
			<item>
				<title>How I use LLMs? - six</title>
				<description>&lt;p&gt;Let&apos;s &lt;del&gt;growth hack blog visitor numbers&lt;/del&gt; and keep on recording how I use agents/LLMs today as a little reflection on where I think they work and where they don&apos;t. Something I can revisit as the tech (and my skill with it) improves&lt;/p&gt;

&lt;p&gt;This is update number five, or entry number six, depending on how you want to count it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/07/how-i-use-llms.html&quot;&gt;part 1 - structured tone of fascination + scepticism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/10/how-i-use-llms-2.html&quot;&gt;part 2 - learning how to manage and control them&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/01/how-i-use-llms-3.html&quot;&gt;part 3 - reluctant acceptance but also thankfulness (?) of what they do for you when you let go of control&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/03/how-i-use-llms-4.html&quot;&gt;part 4 - realising even though it&apos;s no longer &quot;braincode&quot; + no longer for humans, it still comes from human brains&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/06/how-i-use-llms-5.html&quot;&gt;part 5 - oh no, am i AI pilled&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;someone at work named the episodes for me, i love it&lt;/p&gt;

&lt;p&gt;so now… part 6 - i think maybe everything changed&lt;/p&gt;

&lt;h2 id=&quot;in-todays-edition-of-ai-hot-takes&quot;&gt;in today&apos;s edition of AI hot takes&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;saying &quot;slop&quot; considered harmful&lt;/li&gt;
  &lt;li&gt;ship value, not craft&lt;/li&gt;
  &lt;li&gt;don&apos;t read code&lt;/li&gt;
  &lt;li&gt;manage loops and context - fuck prompts&lt;/li&gt;
  &lt;li&gt;if you make me copy &amp;amp; paste a prompt you&apos;ve lost me&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;first-a-necessary-but-brief-diversion-into-how-i-use-tools-generally&quot;&gt;First, a necessary but brief diversion into how I use tools generally&lt;/h1&gt;

&lt;p&gt;I was largely self-taught as a developer and (after vbscript 😱) I started with DotNet. I found JetBrains Resharper early on and never looked back. The assistance in the IDE to write, refactor, and improve code was game-changing. I don&apos;t begrudge anybody any tool they want to use to level-up. Wanna use a graphical git client, or emacs, or anything else… go for it, go make cool things&lt;/p&gt;

&lt;p&gt;Because of that entry to the industry I&apos;m also not super keen on VSCode (you love it? great, see above, you do you, go make cool things). I&apos;m too used to clever interventions helping me and VSCode is too barebones (and so much slower than SublimeText)&lt;/p&gt;

&lt;p&gt;So, I &lt;em&gt;like&lt;/em&gt; having tools directly involved in my workflow. I learned LINQ more quickly and more thoroughly because I had resharper prompting me inline, at write-time: &quot;hey, why not like this?&quot;&lt;/p&gt;

&lt;h1 id=&quot;saying-slop-considered-harmful&quot;&gt;saying &quot;slop&quot; considered harmful&lt;/h1&gt;

&lt;p&gt;I&apos;ve noticed a habit for folk reporting a bug with a system to say things like: &quot;ugh, the clink expander doesn&apos;t work. why even ship this slop?!&quot;&lt;/p&gt;

&lt;p&gt;my friends, if you think there were no bugs prior to December 2025 then you were not paying attention.&lt;/p&gt;

&lt;p&gt;through most of 2025 if you were just shipping AI generated code without thorough checking then you were going to be in for a bad time… but the world changed in Dec 2025 and several times again through 2026.&lt;/p&gt;

&lt;p&gt;the code written by LLMs is now at least as good as that written by the worst junior developers i&apos;ve worked with over ~20 years. and sometimes much better.&lt;/p&gt;

&lt;p&gt;those junior developers all managed to ship value despite being inexperienced.&lt;/p&gt;

&lt;p&gt;and the goal is shipping value&lt;/p&gt;

&lt;h1 id=&quot;ship-value-not-craft&quot;&gt;ship value, not craft&lt;/h1&gt;

&lt;p&gt;i have long considered myself a software crafts person. attended user group meetups; run brownbags at work; practised deliberately and consistently; learned about XP, agile, tdd, and more.&lt;/p&gt;

&lt;p&gt;why… because i believe that software gets harder to change and extend over time otherwise&lt;/p&gt;

&lt;p&gt;and that&apos;s important because i have always been focused on shipping value to people&lt;/p&gt;

&lt;p&gt;a problem has a solution in a context&lt;/p&gt;

&lt;p&gt;as agents have improved the context has changed gigantically&lt;/p&gt;

&lt;p&gt;the problem of needing to ship value remains but the solution of software craft doesn&apos;t fit any more&lt;/p&gt;

&lt;p&gt;software needs to be easy to change and extend &lt;strong&gt;by agents&lt;/strong&gt; way more than by humans&lt;/p&gt;

&lt;p&gt;we would slow down when software files became complex because they broke our meat brains… but our meat doesn&apos;t need to parse it any more, our agents will&lt;/p&gt;

&lt;p&gt;if software is for agents not humans, then one change (whether you like or not) is…&lt;/p&gt;

&lt;h1 id=&quot;dont-read-code&quot;&gt;don&apos;t read code&lt;/h1&gt;

&lt;p&gt;to quote a (frankly fantastic) colleague:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I&apos;m sure when the first FORTRAN compiler was released, for a time, engineers still read the machine code output that it produced to make sure it was up to scratch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Who does that still? Compiler developers and nobody else.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;It will be like that for generative LLMs producing code also.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Imagine someone making the argument that if you don&apos;t read, understand and verify all the assembly that GCC outputs then they&apos;re not a real engineer or they&apos;re somehow not doing their job.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think about this like I am working with a team of developers. Not &lt;em&gt;in&lt;/em&gt; the team. &lt;strong&gt;with&lt;/strong&gt; the team.&lt;/p&gt;

&lt;p&gt;If I hire them to make an API for me. I&apos;ll write tests directly against their API maybe. Against my use of it for sure. I&apos;m very, very unlikely to look at their code. When I&apos;m using agents. I&apos;m working with them, not in them. So, the code they write is simply unimportant if it works.&lt;/p&gt;

&lt;p&gt;I have always asked three questions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;how do you know the software doesn&apos;t do it today&lt;/li&gt;
  &lt;li&gt;how will you know the software does do it in this change&lt;/li&gt;
  &lt;li&gt;how will you know the software still does it the day after the deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the answer has always been &quot;writing tests, gathering metrics, and talking to users&quot;&lt;/p&gt;

&lt;p&gt;this becomes so much more important in this new world&lt;/p&gt;

&lt;p&gt;deciding what to build and whether it was good idea once you&apos;ve finished is where you should spend your time. reading code used to support that, but not any more&lt;/p&gt;

&lt;h1 id=&quot;if-you-make-me-copy--paste-a-prompt-youve-lost-me&quot;&gt;if you make me copy &amp;amp; paste a prompt you&apos;ve lost me&lt;/h1&gt;

&lt;p&gt;i noticed i now find tools that expect me to copy their output to the next LLM annoying&lt;/p&gt;

&lt;p&gt;the future is a world of agents interacting. not people passing text between agents.&lt;/p&gt;

&lt;p&gt;different people will want to grab output from the loop of genies at different points. your org might require you use a particular system or an air-gapped network or whatevs and you&apos;ll need to break the loop and move data yourself in some way.&lt;/p&gt;

&lt;p&gt;but lots of systems will be a set of agents triggered by timers or external signals passing data and prompts between themselves… and it&apos;s gonna be super cool.&lt;/p&gt;
</description>
				<pubDate>Sat, 25 Jul 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/07/how-i-use-llms-6.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/07/how-i-use-llms-6.html
				</guid>
			</item>
		
			<item>
				<title>How I use LLMs? - five</title>
				<description>&lt;p&gt;I have lost roughly 60% of my cynicism about the current high-water mark for LLMs and augmented coding… I am certain this last 9 months has been a significant generational change in how we can approach work.&lt;/p&gt;

&lt;p&gt;Oh no, I&apos;m AI pilled&lt;/p&gt;

&lt;p&gt;Let&apos;s &lt;del&gt;growth hack blog visitor numbers&lt;/del&gt; record how I use them today as a little reflection on where I think they work and where they don&apos;t. Something I can revisit as the tech (and my skill with it) improves&lt;/p&gt;

&lt;p&gt;This is update number four, or entry number five, depending on how you want to count it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/07/how-i-use-llms.html&quot;&gt;part 1 - structured tone of fascination + scepticism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/10/how-i-use-llms-2.html&quot;&gt;part 2 - learning how to manage and control them&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/01/how-i-use-llms-3.html&quot;&gt;part 3 - reluctant acceptance but also thankfulness (?) of what they do for you when you let go of control&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/03/how-i-use-llms-4.html&quot;&gt;part 4 - realising even though it&apos;s no longer &quot;braincode&quot; + no longer for humans, it still comes from human brains&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;someone at work named the episodes for me, i love it&lt;/p&gt;

&lt;p&gt;so now… part 5 - yee haw, paul is AI pilled&lt;/p&gt;

&lt;h2 id=&quot;in-todays-edition-of-ai-hot-takes&quot;&gt;in today&apos;s edition of AI hot takes&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;the agent is my to-do list&lt;/li&gt;
  &lt;li&gt;no longer focused on the code, 5% focus down from 95%&lt;/li&gt;
  &lt;li&gt;i don&apos;t use these tools, i hire them into my team&lt;/li&gt;
  &lt;li&gt;genuine frustration when they lack autonomy&lt;/li&gt;
  &lt;li&gt;stop making me tell you when to run&lt;/li&gt;
  &lt;li&gt;skills skills skill skills&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;first-a-necessary-but-brief-diversion-into-how-i-use-tools-generally&quot;&gt;First, a necessary but brief diversion into how I use tools generally&lt;/h1&gt;

&lt;p&gt;I was largely self-taught as a developer and (after vbscript 😱) I started with DotNet. I found JetBrains Resharper early on and never looked back. The assistance in the IDE to write, refactor, and improve code was game-changing. I don&apos;t begrudge anybody any tool they want to use to level-up. Wanna use a graphical git client, or emacs, or anything else… go for it, go make cool things&lt;/p&gt;

&lt;p&gt;Because of that entry to the industry I&apos;m also not super keen on VSCode (you love it? great, see above, you do you, go make cool things). I&apos;m too used to clever interventions helping me and VSCode is too barebones (and so much slower than SublimeText)&lt;/p&gt;

&lt;p&gt;So, I &lt;em&gt;like&lt;/em&gt; having tools directly involved in my workflow. I learned LINQ more quickly and more thoroughly because I had resharper prompting me inline, at write-time: &quot;hey, why not like this?&quot;&lt;/p&gt;

&lt;h1 id=&quot;the-agent-is-my-to-do-list&quot;&gt;the agent is my to-do list&lt;/h1&gt;

&lt;p&gt;why write something down in a to-do list when i can open a new conversation and write exactly the same text as a prompt?! i immediately switch away and carry on with my day, like with a to-do list.&lt;/p&gt;

&lt;p&gt;but my agent is connected to our code and to all of our analytics, so almost every time when I switch back it has context and challenge. or a PR&lt;/p&gt;

&lt;p&gt;to-do list on steroids&lt;/p&gt;

&lt;h1 id=&quot;no-longer-focused-on-the-code-5-focus-down-from-95&quot;&gt;no longer focused on the code, 5% focus down from 95%&lt;/h1&gt;

&lt;p&gt;Last time I said:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Recent improvements to agents and their UX has meant I only have to actively write code when I choose to. It would be possible to completely work via agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I can literally never write a line of code manually anymore and it is so ok.&lt;/p&gt;

&lt;p&gt;Because the cost of understanding the code is basically zero now. The importance of the code being understandable is dropping.&lt;/p&gt;

&lt;p&gt;It still has to be correct and fast but if I can&apos;t quickly grok it. I can just ask an LLM to explain it, or write some tests to exercise it. What might have taken hours in the past, I&apos;ve worked on code that took me days to understand, will now take seconds.&lt;/p&gt;

&lt;p&gt;Writing code is now far from the highest leverage thing I could do with my time&lt;/p&gt;

&lt;p&gt;&quot;Oh but Paul some code is very important!&quot;&lt;/p&gt;

&lt;p&gt;Yep, and cool, the literal code might still be the highest leverage thing &lt;em&gt;you&lt;/em&gt; can do. But it isn&apos;t the highest leverage thing I could do any more. And I&apos;d argue for many people that&apos;s true too.&lt;/p&gt;

&lt;p&gt;And that is truly magical because now I can care about and achieve a bunch of stuff all at the same time and that would have been impossible for 2025 Paul.&lt;/p&gt;

&lt;h1 id=&quot;i-dont-use-these-tools-i-hire-them-into-my-team&quot;&gt;i don&apos;t use these tools, i hire them into my team&lt;/h1&gt;

&lt;p&gt;If I am nailing two pieces of wood together it is up to me to figure out how to do it. To choose the hammer. To choose the nail. To pick the place and the angle that the nail goes in. To make sure I don&apos;t hit my thumb.&lt;/p&gt;

&lt;p&gt;If I hire a carpenter then I make them a brew and tell them I&apos;m here if they need me.&lt;/p&gt;

&lt;p&gt;So, the mindset shift I&apos;m suggesting is that I am hiring a junior engineer or product manager or whatever. And I am responsible for giving them context and guard rails. And then I let them do their work. I&apos;m still responsible for if the work is valuable, but I&apos;m not literally hitting the nail any more.&lt;/p&gt;

&lt;p&gt;It changes so much about how I interact with the thing. And it lets me completely change how I work. I&apos;ve moved into an executive role and I can still sling lots of code cos I don&apos;t hold the hammer, I hire the carpenter.&lt;/p&gt;

&lt;h1 id=&quot;genuine-frustration-when-they-lack-autonomy&quot;&gt;genuine frustration when they lack autonomy&lt;/h1&gt;

&lt;p&gt;We run a bunch of AI review tools on our PRs. And they have varying quality. They get better over time bit by bit. And they are earning their keep (just about - although they&apos;re pretty expensive tbh)&lt;/p&gt;

&lt;p&gt;But over the last months since part 4 I&apos;ve noticed a new expectation from me… they post their comment and I think &quot;ugh, now i have to read and act on that… such bullshit&quot;&lt;/p&gt;

&lt;p&gt;By comparison, I have a &quot;PR Shepherd&quot; skill. I&apos;ve had Claude do research about XP on the C2 wiki. I&apos;ve had it interview me about software engineering to see what I care about in how work is done. And I&apos;ve had it review the public history of my PR reviews to see what I care about in reviewing.&lt;/p&gt;

&lt;p&gt;And when I run that skill it does a bunch of reviews in parallel, and anything that has a single solution, it just does. You can see &lt;a href=&quot;https://github.com/PostHog/posthog/pull/61611&quot;&gt;an example here&lt;/a&gt; - I have it run and publicly comment on all of my PRs. It now feels rude to have a human review before I&apos;ve had the robot find things. In the same way that for the longest time it&apos;s been rude to make a human lint your code when a tool could do it.&lt;/p&gt;

&lt;p&gt;So, increasingly, the word machine can no longer earn its keep by only turning one set of words into another. It needs to turn that set of words into action. Just like if I hire a junior engineer and they asked me &quot;should i fix this obvious bug&quot; i would be frustrated.&lt;/p&gt;

&lt;h1 id=&quot;stop-making-me-tell-you-when-to-run&quot;&gt;stop making me tell you when to run&lt;/h1&gt;

&lt;p&gt;this has a side effect… i don&apos;t want to have to remember to ask an LLM for a whole bunch of stuff. same way i don&apos;t want to have to ask my colleagues about a bunch of stuff.&lt;/p&gt;

&lt;p&gt;i want to say &quot;hey, we should check the clink expander every two hours and route fanglers appropriately&quot; and that just happens&lt;/p&gt;

&lt;p&gt;i think the next great frontier is long-running and trigger-driven agents. and i am so excited for it&lt;/p&gt;

&lt;h1 id=&quot;skills-skills-skill-skills&quot;&gt;skills skills skill skills&lt;/h1&gt;

&lt;p&gt;I mention &quot;PR shepherd&quot; above. It does all the mechanical work of getting a PR through review. It checks if a PR is open, opens it if not. marks it ready for review, runs a swarm of parallel reviewers and responds to them, checks external reviews and responds to them. It defers to me when it has to, otherwise it checks CI until it&apos;s green. It took me about an hour in total so far prompting to create it. And has saved me multiples of that.&lt;/p&gt;

&lt;p&gt;Soooo much time back.&lt;/p&gt;

&lt;p&gt;I have &quot;Paul pair&quot;. Every time the robot finishes work or is about to ask me a question it has an instruction to run the &quot;Paul pair&quot; skill. Which reminds it what I care about and to only interrupt me with important things. It&apos;s mecha paul. Saving meat paul from repeating the thing i was obviously going to repeat.&lt;/p&gt;

&lt;p&gt;I have an executive coach (admittedly not a skill). It checks granola and slack and github and the org chart etc etc and once a week tells me if I&apos;m working on what I&apos;ve said is important. Tells me what I&apos;m missing, what patterns it sees, what the top 3 things I should do to get back on track. It&apos;s not always right, but it doesn&apos;t have to be - it&apos;s on me to manage my work and attention regardless of what advice i receive.&lt;/p&gt;

&lt;p&gt;If you have never done it then stop what you&apos;re doing. Open a new session with your favourite robot and type &quot;look at our conversations and tell me what repeated interactions we could automate&quot;&lt;/p&gt;

&lt;p&gt;Then sit back and prepare to have your mind blown.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/pauldambra/dotfiles/tree/main/ai/skills&quot;&gt;Here are all my public skills&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;paul-you-sound-irredeemably-ai-pilled&quot;&gt;paul, you sound irredeemably AI pilled&lt;/h1&gt;

&lt;p&gt;yep, I am. sorry, it&apos;s happened. there&apos;s no going back. i&apos;ve been sucked into the bubble. this is the future.&lt;/p&gt;

&lt;p&gt;&quot;but LLMs gets things wrong sometimes!&quot;&lt;/p&gt;

&lt;p&gt;yep, and this might shock you. so do human colleagues. even incredible colleagues can do silly things. yes, reader, even I have once or twice shipped a bug&lt;/p&gt;

&lt;p&gt;it&apos;s not about the LLM being perfect. it doesn&apos;t have to be perfect. it&apos;s about the LLM being useful. And it really f-in is.&lt;/p&gt;
</description>
				<pubDate>Thu, 04 Jun 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/06/how-i-use-llms-5.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/06/how-i-use-llms-5.html
				</guid>
			</item>
		
			<item>
				<title>Where have I been?</title>
				<description>&lt;p&gt;At a recent company offsite a bunch of people asked me how many of the off-sites I&apos;d been on. I didn&apos;t remember so I made this list since if I don&apos;t remember now I have no chance of remembering in 5 or 10 years.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;2021&quot;&gt;2021&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;London&lt;/td&gt;
      &lt;td&gt;&lt;em&gt;my&lt;/em&gt; onboarding&lt;/td&gt;
      &lt;td&gt;Jams said &quot;just do the right thing&quot; which was a good signal this company was cool&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Milan&lt;/td&gt;
      &lt;td&gt;working, not a company trip&lt;/td&gt;
      &lt;td&gt;i just had to go to Italy for my soul after covid&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;2022&quot;&gt;2022&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
      &lt;td&gt;all engineering offsite&lt;/td&gt;
      &lt;td&gt;got hard feedback, realised I had to up my game&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Iceland&lt;/td&gt;
      &lt;td&gt;all company offsite&lt;/td&gt;
      &lt;td&gt;my first posthog hackathon, realised just how talented everyone was&lt;/td&gt;
      &lt;td&gt;writing session replay ingestion to s3. it was a bad implementation.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cambridge&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;the one where i felt i could talk about posthog well&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Montesilvano&lt;/td&gt;
      &lt;td&gt;working, not a company trip&lt;/td&gt;
      &lt;td&gt;I just needed time alone&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rome&lt;/td&gt;
      &lt;td&gt;small team offsite&lt;/td&gt;
      &lt;td&gt;this was the turning point for me being successful and feeling at home at PostHog. I got amazing, direct, constructive feedback. life-changing, no cap&lt;/td&gt;
      &lt;td&gt;in-app notifications on top of the activity log&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cambridge&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;the one where we got locked in one of the Cambridge colleges after maybe breaking in&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Lisbon&lt;/td&gt;
      &lt;td&gt;work-blast&lt;/td&gt;
      &lt;td&gt;the one where Ben and I wanted to prove network logging was quick to build - it was. Kaarl told me my schema design was good, I was so in awe of his clickhouse brain i thought i&apos;d faint&lt;/td&gt;
      &lt;td&gt;network request logging in replay&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;2023&quot;&gt;2023&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Aruba&lt;/td&gt;
      &lt;td&gt;all company offsite&lt;/td&gt;
      &lt;td&gt;the one where we celebrated turning into a juggernaut&lt;/td&gt;
      &lt;td&gt;bug reporting tool in PostHog&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cambridge&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;the one where i made pizza with bread flour, no bueno&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Glossop, UK&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;the one where i couldn&apos;t travel and so the team braved Glossop, i made some pretty good pizza&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Bologna&lt;/td&gt;
      &lt;td&gt;small team offsite&lt;/td&gt;
      &lt;td&gt;the one where posthog 3000 was born, we presented each other&apos;s ideas. It was silly, laughed so much&lt;/td&gt;
      &lt;td&gt;Sampling for session replay&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;2024&quot;&gt;2024&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Trapani&lt;/td&gt;
      &lt;td&gt;work blast&lt;/td&gt;
      &lt;td&gt;Ben and I wanted to prove Heatmaps was quick to ship, it was&lt;/td&gt;
      &lt;td&gt;Heatmaps&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Vienna&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;the best beetroot i&apos;ve had to date, my favourite part of italy&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cambridge&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;manoel did amazing bbq steak&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Valencia&lt;/td&gt;
      &lt;td&gt;small team offsite&lt;/td&gt;
      &lt;td&gt;the one where i realised i could push people more&lt;/td&gt;
      &lt;td&gt;AI summarisation of survey responses&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;2025&quot;&gt;2025&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Cambridge&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;very cold, we saw a fox, Ben improv&apos;d the architecture diagram&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Budapest&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;great coffee, so many irish bars&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tulum, Mexico&lt;/td&gt;
      &lt;td&gt;all company offsite 2025&lt;/td&gt;
      &lt;td&gt;the one where i realised just how much we&apos;d grown&lt;/td&gt;
      &lt;td&gt;CSP violation reporting… that has started to make bank now&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Munich&lt;/td&gt;
      &lt;td&gt;onboarding&lt;/td&gt;
      &lt;td&gt;my first ever visit to germany, how?!&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Palermo&lt;/td&gt;
      &lt;td&gt;small team offsite&lt;/td&gt;
      &lt;td&gt;the one where we experimented with combining small team offsites (and it changed things a lot)&lt;/td&gt;
      &lt;td&gt;letting people add screenshots to action and event definitions&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;London&lt;/td&gt;
      &lt;td&gt;xmas hackathon and onboarding&lt;/td&gt;
      &lt;td&gt;the one where Tue got very excited about a smash burger&lt;/td&gt;
      &lt;td&gt;tooling to make session replay support easier&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;2026&quot;&gt;2026&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Place&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Note&lt;/th&gt;
      &lt;th&gt;Hackathon&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Lisbon&lt;/td&gt;
      &lt;td&gt;analytics platform small team offsite&lt;/td&gt;
      &lt;td&gt;the one where we figured out how to make a query performance team&lt;/td&gt;
      &lt;td&gt;adding AI summary to insight subscriptions&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Barbados&lt;/td&gt;
      &lt;td&gt;all company offsite&lt;/td&gt;
      &lt;td&gt;my first all team offsite as an exec. lots of great feedback and pina coladas&lt;/td&gt;
      &lt;td&gt;creating an AI user researcher&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;It turns out I&apos;ve been away from home for roughly 26 weeks in the time I&apos;ve been at PostHog. Or roughly 10% of the weeks I&apos;ve worked here. Wouldn&apos;t change it for the world.&lt;/p&gt;
</description>
				<pubDate>Fri, 22 May 2026 10:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/05/22/where-have-i-been.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/05/22/where-have-i-been.html
				</guid>
			</item>
		
			<item>
				<title>Let&apos;s plan that</title>
				<description>&lt;p&gt;My favourite quote is &quot;The plans are useless, the planning is essential&quot;&lt;/p&gt;

&lt;p&gt;Since the plans are useless, why do we run planning sessions at all?&lt;/p&gt;

&lt;p&gt;It&apos;s planning season at work. We are high trust, high agency, and minimise collaboration. It is pretty common for folk to change their plans and they do so without needing to seek approval.&lt;/p&gt;

&lt;p&gt;Without shared context and an understanding of the broader picture, people would change plans but be pulling in different directions. Having the big picture means you can rely more on instinct and curiosity rather than rigid plans.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;torture-a-metaphor-if-you-insist&quot;&gt;Torture a metaphor? If you insist…&lt;/h1&gt;

&lt;p&gt;The landscape you&apos;re building software in probably doesn&apos;t look like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/sunny-day.jpg&quot; alt=&quot;a picture of the peak district with great visibility&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We&apos;re generally operating under imperfect conditions. Trying to figure out where we are is more like being in the fog:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/foggy-day.jpg&quot; alt=&quot;a picture of the peak in foggy conditions&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A friend was for a while a member of mountain rescue (who are incidentally incredible - &lt;a href=&quot;https://edalemrt.co.uk/support-us/&quot;&gt;you should give them money&lt;/a&gt;). They once described to me how they navigate when they have very low visibility.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/lost.jpg&quot; alt=&quot;a lost Lego hiker&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In pairs:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;use the map to figure out where you are&lt;/li&gt;
  &lt;li&gt;use that information to figure out what direction to go&lt;/li&gt;
  &lt;li&gt;using a compass one of you slowly walks in that direction&lt;/li&gt;
  &lt;li&gt;the other stays still and calls out when the walker is about to disappear into the fog&lt;/li&gt;
  &lt;li&gt;then that person catches up with the walker&lt;/li&gt;
  &lt;li&gt;repeat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking at the context of where they are against what they know about the world. Working together to understand what that means, right then. Watching each other and relying on communication. Chopping the journey into many safer parts.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The short loop of frequent interactions with your colleagues, your users, your analytics are the small steps in the fog. But you have to plan to have the destination and route.
This navigation completely falls apart without the map. It &lt;em&gt;requires&lt;/em&gt; the wider context.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;but-surely-you-cant-keep-going-with-this-metaphor&quot;&gt;But surely you can&apos;t keep going with this metaphor?&lt;/h1&gt;

&lt;p&gt;Once we were hiking on Maiden moor and within a half an hour we went from clear skies to low visibility in fog. My wife who is a competent navigator asked me: &quot;why is your thumb there (on the map)?&quot;. I explained it&apos;s where we were. And she pointed out distant landmarks to triangulate how wrong I am.&lt;/p&gt;

&lt;p&gt;My error made it into a much longer and more challenging walk than we had planned.&lt;/p&gt;

&lt;p&gt;Her navigation is better because she is looking at the bigger picture. Whereas I&apos;m counting field boundaries.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Even once we have the map and the route, we still need to navigate by looking at the landscape and landmarks to stay on course.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Your customers and your competitors don&apos;t stand still so you have to keep looking up to see if the world changed under your plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;ok-were-done-now-with-the-hiking-metaphor-now-surely&quot;&gt;OK, we&apos;re done now with the hiking metaphor now, surely?&lt;/h1&gt;

&lt;p&gt;Well, why was I counting field boundaries? Once we have the map and the route we have our plan. But when you try to follow it, you discover all the things that make it difficult. A copse of trees was cleared. A farmer moved a stile. A path is impassable because of thorns or mud.&lt;/p&gt;

&lt;p&gt;The route very quickly becomes a series of small decisions and adjustments as you navigate around obstacles. You can&apos;t make those adjustments with a static plan. You &lt;em&gt;can&lt;/em&gt; make them because you have practised making the route. You know why it is the route and so you can adapt it to changing conditions.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The actual plan is the starting point. The thing we thought would meet our goal before reality hit us over the head.
What you learn on the way will often change your plan. Ignoring that is as silly as not having any goal to head towards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;please-no-more-metaphor&quot;&gt;Please no more metaphor&lt;/h1&gt;

&lt;p&gt;In all of these scenarios the planning doesn&apos;t get you anything without execution - no point planning a hike and not walking. But the planning has to happen to make the route any good.&lt;/p&gt;

&lt;p&gt;That&apos;s what good teams do. They have a series of nested loops and they check themselves at each point. Short term loops like daily standups that focus on the next few hours. And long term loops like quarterly planning that focus on the next few months.&lt;/p&gt;

&lt;p&gt;You have to plan but be receptive to changing plan. If you stuck to a plan despite what you learn you&apos;ll get stuck in  a bog, but if you never plan you wouldn&apos;t avoid any.&lt;/p&gt;
</description>
				<pubDate>Fri, 13 Mar 2026 10:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/03/13/why-plan.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/03/13/why-plan.html
				</guid>
			</item>
		
			<item>
				<title>How I use LLMs? - four</title>
				<description>&lt;p&gt;I remain very cynical about the current high-water mark for LLMs and augmented coding… but at the same time I use them every day and I don&apos;t think they&apos;re finished improving.&lt;/p&gt;

&lt;p&gt;Let&apos;s &lt;del&gt;growth hack blog visitor numbers&lt;/del&gt; record how I use them today as a little reflection on where I think they work and where they don&apos;t. Something I can revisit as the tech (and my skill with it) improves&lt;/p&gt;

&lt;p&gt;This is update number three, or entry number four, depending on how you want to count it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/07/how-i-use-llms.html&quot;&gt;the first entry is here&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2025/10/how-i-use-llms-2.html&quot;&gt;the second entry is here&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2026/01/how-i-use-llms-3.html&quot;&gt;the third entry is here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;in-todays-edition-of-ai-hot-takes&quot;&gt;in today&apos;s edition of AI hot takes&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;basically never braincode&lt;/li&gt;
  &lt;li&gt;it&apos;s still about your brain&lt;/li&gt;
  &lt;li&gt;hot take&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;first-a-necessary-but-brief-diversion-into-how-i-use-tools-generally&quot;&gt;First, a necessary but brief diversion into how I use tools generally&lt;/h1&gt;

&lt;p&gt;I was largely self-taught as a developer and (after vbscript 😱) I started with DotNet. I found JetBrains Resharper early on and never looked back. The assistance in the IDE to write, refactor, and improve code was game-changing. I don&apos;t begrudge anybody any tool they want to use to level-up. Wanna use a graphical git client, or emacs, or anything else… go for it, go make cool things&lt;/p&gt;

&lt;p&gt;Because of that entry to the industry I&apos;m also not super keen on VSCode (you love it? great, see above, you do you, go make cool things). I&apos;m too used to clever interventions helping me and VSCode is too barebones (and so much slower than SublimeText)&lt;/p&gt;

&lt;p&gt;So, I &lt;em&gt;like&lt;/em&gt; having tools directly involved in my workflow. I learned LINQ more quickly and more thoroughly because I had resharper prompting me inline, at write-time: &quot;hey, why not like this?&quot;&lt;/p&gt;

&lt;h1 id=&quot;basically-never-braincode&quot;&gt;basically never braincode&lt;/h1&gt;

&lt;p&gt;Recent improvements to agents and their UX has meant I only have to actively write code when I choose to. It would be possible to completely work via agents.&lt;/p&gt;

&lt;p&gt;It really is only necessary to &quot;braincode&quot; when it is easier for me to sketch a solution than to prompt an LLM to write it. Even then I would quickly fall back to &quot;hey agent, here&apos;s what i mean. finish this off&quot;&lt;/p&gt;

&lt;p&gt;Having the agent in slack is chef&apos;s-kiss-dot-reacji. Someone says &quot;hey, should the foo be wider&quot; and you reply &quot;@agent, make the foo wider&quot; Like having a super eager and precocious intern sat waiting for the next task.&lt;/p&gt;

&lt;h1 id=&quot;its-still-about-your-brain&quot;&gt;it&apos;s still about your brain&lt;/h1&gt;

&lt;p&gt;You&apos;ll see a lot of people saying variations on &quot;it was never about the code&quot; or &quot;it was always about what you chose to make not how you made it&quot;. And tbh I 90% agree with them. The code was &lt;em&gt;a&lt;/em&gt; hard part but it wasn&apos;t the only hard part.&lt;/p&gt;

&lt;p&gt;We&apos;ve automated a big chunk of code understanding and generation but we still need to choose the direction. Reaching through the system of systems you can affect to try and deliver value.&lt;/p&gt;

&lt;p&gt;Astronaut-with-pistol-dot-meme&lt;/p&gt;

&lt;h1 id=&quot;hot-take&quot;&gt;hot take&lt;/h1&gt;

&lt;p&gt;Code is no longer for humans.&lt;/p&gt;

&lt;p&gt;We are seeing the end of the era of code needing to be in a format that humans can directly parse. Languages are already abstractions on top of what is really being executed. The format being determined by the available technology to let humans create code. And by the needs of the humans at understanding the code.&lt;/p&gt;

&lt;p&gt;In a world where we can say &quot;hey robot, how does the Foo component manage the ClinkExpander interactions&quot;. It no longer matters what the underlying code looks like.&lt;/p&gt;

&lt;p&gt;My expectation is that there are already folk working on a storage format that is accessible to agents but loses the trade-offs it had to make for human readability. Maybe a binary DAG format since we don&apos;t  really need the translation from an abstract syntax tree in memory into text anymore.&lt;/p&gt;

&lt;p&gt;If the agents keep getting better, my expectation is that I need to be able to ask for representations of the code that help me and them interact with it way more than I need a flat text file.&lt;/p&gt;
</description>
				<pubDate>Tue, 10 Mar 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/03/how-i-use-llms-4.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/03/how-i-use-llms-4.html
				</guid>
			</item>
		
			<item>
				<title>I shipped 1000 PRs in a year, AMA</title>
				<description>&lt;p&gt;I shipped 1000 PRs in the last 12 months at &lt;a href=&quot;https://posthog.com&quot;&gt;PostHog&lt;/a&gt;. And someone asked me how I do it… let&apos;s see if i know.&lt;/p&gt;

&lt;h3 id=&quot;preamble&quot;&gt;preamble&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;yes, yes, I know you don&apos;t think I should count PRs&lt;/li&gt;
  &lt;li&gt;when a measure becomes a target it stops being a useful measure&lt;/li&gt;
  &lt;li&gt;embrace yourself&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;advice&quot;&gt;advice&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;it is running not cycling&lt;/li&gt;
  &lt;li&gt;small steps ftw&lt;/li&gt;
  &lt;li&gt;practice like a jazz musician&lt;/li&gt;
  &lt;li&gt;love making things&lt;/li&gt;
  &lt;li&gt;one more iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;yes-yes-i-know-you-dont-think-i-should-count-prs&quot;&gt;yes, yes, I know you don&apos;t think I should count PRs&lt;/h2&gt;

&lt;p&gt;So, first something important…&lt;/p&gt;

&lt;p&gt;Counting PRs is a very poor metric for measuring progress. Someone who ships 10 PRs has not provided a guaranteed ten times the value of someone who ships one PR.&lt;/p&gt;

&lt;p&gt;I&apos;m not telling you to count PRs. Or to worship the github tile graph.&lt;/p&gt;

&lt;p&gt;But….&lt;/p&gt;

&lt;p&gt;Yes, weighing yourself is a bad way of checking if your last meal was healthy. 
Yes, merging a PR is a bad way of checking if you just provided any value.&lt;/p&gt;

&lt;p&gt;But &lt;em&gt;not weighing yourself&lt;/em&gt; is a great way to put on weight without noticing.&lt;/p&gt;

&lt;p&gt;And &lt;em&gt;not measuring what you ship&lt;/em&gt; is a great way to accidentally ship less value.&lt;/p&gt;

&lt;p&gt;However………..&lt;/p&gt;

&lt;h1 id=&quot;when-a-measure-becomes-a-target-it-stops-being-a-useful-measure-charles-goodhart-in-preparation-for-my-birth&quot;&gt;&quot;when a measure becomes a target it stops being a useful measure&quot;: Charles Goodhart in preparation for my birth&lt;/h1&gt;

&lt;p&gt;Taking a look at how many PRs or lines of code people ship &lt;em&gt;is&lt;/em&gt; a measure of what people are doing. It&apos;s vague and lossy but it&apos;s a starting point.&lt;/p&gt;

&lt;p&gt;And, yes, of course, someone could ship lots of PRs but they&apos;re no good or only ship one thing a week but it&apos;s super impactful.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So even if you use it as a measure it should not be your only measure of progress&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But, importantly, if you tell people &quot;number of PRs is related to promotion review&quot; then they &lt;em&gt;will damn well make sure they ship more PRs&lt;/em&gt; without that being related to actual value to users.&lt;/p&gt;

&lt;p&gt;It is no longer a useful measure of progress &lt;em&gt;because&lt;/em&gt; it became a target.&lt;/p&gt;

&lt;h1 id=&quot;embrace-yourself&quot;&gt;embrace yourself&lt;/h1&gt;

&lt;p&gt;didn&apos;t that feel nice?&lt;/p&gt;

&lt;p&gt;no, not like that&lt;/p&gt;

&lt;p&gt;Throughout my career I&apos;ve been told I spin too many plates and to try and reduce my work in progress. I tried really hard to lower personal WIP and it was sooooo much effort.&lt;/p&gt;

&lt;p&gt;My colleague Marius at PostHog said (roughly): &quot;you always apologise for spinning plates, but you&apos;re good at it. why don&apos;t you try to get better?&quot;&lt;/p&gt;

&lt;p&gt;So, I&apos;ve done that. I&apos;ve accepted that I am easily distracted and that I will start many things. And I&apos;ve concentrated on getting better at making sure the plates I&apos;m spinning are moving forward. And throwing away the ones that are just distraction.&lt;/p&gt;

&lt;p&gt;I&apos;ve &lt;em&gt;started&lt;/em&gt; more than 1000 PRs but recognised the ones that aren&apos;t going anywhere.&lt;/p&gt;

&lt;p&gt;For &lt;em&gt;you this will look different&lt;/em&gt;. You might have to not listen to music with lyrics. You might need to make sure you go for a walk in the morning. Or plan blocks of the day with zero distractions.&lt;/p&gt;

&lt;p&gt;My advice would be - stop listening to advice that makes you fight your nature. Just because someone else wants to work on one thing at a time doesn&apos;t mean you should. And just because I can have 23 open PRs right now and be on top of my work doesn&apos;t mean you should.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ok, now that I&apos;ve told you to not listen to other people&apos;s advice.&lt;/p&gt;

&lt;p&gt;I will dress in a robe, walk down from the holy mountain of the github tile graph, and hand down my advice of  what I believe contributes to my productivity:&lt;/p&gt;

&lt;h1 id=&quot;it-is-running-not-cycling&quot;&gt;it is running not cycling&lt;/h1&gt;

&lt;p&gt;I used to cycle a lot and having struggled up a big hill it was super cool to stop pedalling and coast down the other side. Then I started running, and having struggled up the big hill I discovered I still had to put in effort to run downhill. Even if gravity was helping me if I stopped moving my legs I stopped moving.&lt;/p&gt;

&lt;p&gt;Delivering valuable software to users is running, not cycling. If you stop shipping your momentum is quickly lost.&lt;/p&gt;

&lt;p&gt;It is up to you to move your legs. To bring the appropriate intensity and effort.&lt;/p&gt;

&lt;p&gt;Want to ship a lot? Just do the work…&lt;/p&gt;

&lt;h1 id=&quot;small-steps-ftw&quot;&gt;small steps ftw&lt;/h1&gt;

&lt;p&gt;I have seen time and time again that small, concrete steps that you can explain, complete, and measure are the best way to make progress.&lt;/p&gt;

&lt;p&gt;See &quot;But why regularly measure&quot; in &lt;a href=&quot;https://pauldambra.dev/2018/01/direction.html&quot;&gt;one of my earlier weblogs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you feel stuck with the coding, break it into a smaller piece. Not sure how to do the work? Figure out what the simple pieces are and start with those. If the remaining pieces are &quot;too big&quot;  or &quot;too hard&quot; figure out how to change the system so the solution changes and is smaller or easier.&lt;/p&gt;

&lt;p&gt;Often, I will make one big PR that covers the whole change to prove it works. Then break that into smaller pieces that refer back to the whole. To make it easier to review or deploy.&lt;/p&gt;

&lt;h1 id=&quot;practice-like-a-jazz-musician&quot;&gt;practice like a jazz musician&lt;/h1&gt;

&lt;p&gt;When I was younger I was labouring under the misapprehension that I was going to change the world of music. And I was lucky to spend some time with some people who were amazing musicians.&lt;/p&gt;

&lt;p&gt;They would practice frequently and deliberately. They were purposefully aiming to get better at the little things that made them better at the whole.&lt;/p&gt;

&lt;p&gt;Later I spent time with folks talking about the craft of software engineering. Practising skills like TDD and refactoring.&lt;/p&gt;

&lt;p&gt;The little things that make you better at the whole.&lt;/p&gt;

&lt;p&gt;Ah, but Paul this new world of agentic software engineering makes skills like that outdated and unnecessary.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/andrej-karpathy-programming-is-changing-so-fast-v0-xs431byeeikd1.webp&quot; alt=&quot;Andrej Karpathy quote&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I love this quote from Andrej Karpathy&lt;/p&gt;

&lt;p&gt;And I&apos;ve found the same… If the prompt is important then knowing what to prompt is important.&lt;/p&gt;

&lt;p&gt;And when the prompt isn&apos;t enough to get the job done being able to sketch enough code to give a better start to the agent is important.&lt;/p&gt;

&lt;p&gt;In both cases you actually have to know what you want. And practicing what good software, or good architecture looks like is still a differentiator.&lt;/p&gt;

&lt;p&gt;I&apos;d add practicing writing good prompts and managing context well as new skills that it is worth practicing.&lt;/p&gt;

&lt;p&gt;Be purposeful about improving your ability as a person that provides value through creating and changing software. Watch what you do, see what makes it better, double down on those things.&lt;/p&gt;

&lt;p&gt;Avoid through practice and diligence ever doing the wrong thing harder.&lt;/p&gt;

&lt;h1 id=&quot;love-making-things&quot;&gt;love making things&lt;/h1&gt;

&lt;p&gt;I make things all the time. I am sad when I don&apos;t get to make things. This is a vocation for me.&lt;/p&gt;

&lt;p&gt;Nobody points at the musician that plays music for the sheer joy of it and says:  &quot;ha, look at that loser. playing music even though they&apos;re not getting paid for it&quot;&lt;/p&gt;

&lt;p&gt;So, in the evening when I&apos;ve finished getting the kids to bed. I sit and fiddle with software while I watch TV or listen to music.&lt;/p&gt;

&lt;p&gt;I am incredibly lucky to have found something that gives me joy and makes me money.&lt;/p&gt;

&lt;p&gt;Not a vocation for you - ok, cool. Live your life as you see fit. But one of the ways that &lt;em&gt;I&lt;/em&gt; am productive is that this is a joyful vocation. Also, if software is not your vocation, why the heck are you reading about how to ship 1000 PRs in twelve months?! Go, ride horses or fix gates or whatever the thing is that &lt;em&gt;does&lt;/em&gt; bring you joy 💖&lt;/p&gt;

&lt;h1 id=&quot;one-more-iteration&quot;&gt;one more iteration&lt;/h1&gt;

&lt;p&gt;It feels like it goes without saying that iteration is good… but…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Iteration is the process of repeating a set of steps or instructions multiple times, often to reach a specific goal, solve a problem, or improve a result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&quot;One more iteration&quot; is a phrase that Tim at work uses to push us to think about the quality of what we build…&lt;/p&gt;

&lt;p&gt;OK, you did something. Stop and ask: &quot;am I really finished?&quot;&lt;/p&gt;

&lt;p&gt;How do &lt;em&gt;I&lt;/em&gt; know if I&apos;m really finished?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;are people using it?&lt;/li&gt;
  &lt;li&gt;do they like it?&lt;/li&gt;
  &lt;li&gt;did it move the needle the way I expected?&lt;/li&gt;
  &lt;li&gt;would I know if it was broken?&lt;/li&gt;
  &lt;li&gt;now it is functional does it need to also be delightful?&lt;/li&gt;
  &lt;li&gt;does it help me see what should come next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think this sits really wonderfully with &quot;small steps ftw&quot;. Iteration of large blocks of work is inherently slower than iteration of small steps.&lt;/p&gt;

&lt;p&gt;The benefit of small steps is you can be nimble in response to what you learn.&lt;/p&gt;

&lt;p&gt;Worse… Something that takes a month to put together will build up a lot of weight in your subconscious. It&apos;s hard to throw it away or change it because of the time you have sunk into it. Not only are you less nimble, you&apos;re less likely to correct your course.&lt;/p&gt;

&lt;h3 id=&quot;a-concrete-example-of-how-i-do-small-steps-and-iteration&quot;&gt;A concrete example of how i do small steps and iteration…&lt;/h3&gt;

&lt;p&gt;A customer reported they were unhappy with filtering in our tool. It was multiple clicks to get to the point where they had type-ahead search. And that was frustrating for them.&lt;/p&gt;

&lt;p&gt;Frustration is no bueno, so I started spinning a new plate. I mocked up a solution for them very quickly and shared a video.&lt;/p&gt;

&lt;p&gt;They loved it.&lt;/p&gt;

&lt;p&gt;BUT I OPTIMISE FOR ITERATION AND SO I DID NOT SIMPLY SHIP IT&lt;/p&gt;

&lt;p&gt;I wrapped it in a flag and released it just for our team and that specific user that I was talking to&lt;/p&gt;

&lt;p&gt;I got fast feedback that they did not like it. They liked the description, and they liked the demo. But what people think they will like and use is not always what they will actually like and use.&lt;/p&gt;

&lt;p&gt;In practice by optimising for one journey through the filtering UX I had made other journeys harder. I wouldn&apos;t have known that if I didn&apos;t think about how to release this in a way that meant I could check if it was any good.&lt;/p&gt;

&lt;p&gt;In the end, this took four attempts to get right.&lt;/p&gt;

&lt;p&gt;And now I have rolled out the flag to all users. After an experiment over those multiple iterations showed folk came back and searched more using the new versions of this change.&lt;/p&gt;

&lt;p&gt;But rolling out the flag isn&apos;t the end of the work. I&apos;m now working on tidying up the code that was there so that I could dual run and measure the change. I&apos;ve got to finish updating the documentation. I need to check that users behaviour really does change over coming weeks and react to that. So there are still more PRs to come from this work.&lt;/p&gt;

&lt;h1 id=&quot;an-inspirational-sign-off&quot;&gt;An inspirational sign-off?&lt;/h1&gt;

&lt;p&gt;The value here isn&apos;t that I shipped lots of PRs. The value is that I work in small steps, and I check direction in between them. That I can loop between what I learn and what I can do next to learn more.&lt;/p&gt;

&lt;p&gt;How you do that might be different, perfect! But my advice: do that.&lt;/p&gt;
</description>
				<pubDate>Wed, 11 Feb 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/02/deca-hundy.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/02/deca-hundy.html
				</guid>
			</item>
		
			<item>
				<title>How I do user interviews</title>
				<description>&lt;p&gt;I&apos;ve been lucky to watch some excellent engineers, product managers, and user researchers carry out user interviews.&lt;/p&gt;

&lt;p&gt;And had the opportunity at PostHog to practice that skill. I&apos;ve explained all this a couple of times to different people, so thought I&apos;d write it down.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;set expectations&lt;/li&gt;
  &lt;li&gt;write down quotes&lt;/li&gt;
  &lt;li&gt;show &amp;gt; tell&lt;/li&gt;
  &lt;li&gt;compound interest&lt;/li&gt;
  &lt;li&gt;sometimes stop&lt;/li&gt;
  &lt;li&gt;be a Labrador&lt;/li&gt;
  &lt;li&gt;this is the redesign that will kill the the Facebook&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;set-expectations&quot;&gt;set expectations&lt;/h1&gt;

&lt;p&gt;Whenever I&apos;m starting a user interview I try to set very clear expectations for the person. I will say something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Thanks for your time today. And importantly it&apos;s your time. So, while I&apos;m mostly interested in $feature_X if you want to talk about other parts of the product, that&apos;s fine - we can cover the things you&apos;re interested in. I&apos;d really love you to share your screen so I can see what you&apos;re doing as well as hear you talk about it. To start out can you show me how you use $feature_X?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You might want to constrain what they talk about to a specific feature or topic. So your intro would be different. But I find it&apos;s generally better to hear what they&apos;re thinking and feeling even if it doesn&apos;t relate to what I&apos;m focused on.&lt;/p&gt;

&lt;h1 id=&quot;write-down-quotes&quot;&gt;write down quotes&lt;/h1&gt;

&lt;p&gt;I had the great privilege of working with user interviewers with a &lt;a href=&quot;https://www.gov.uk/government/organisations/government-digital-service/about&quot;&gt;GDS&lt;/a&gt; background and was always impressed by their skill.&lt;/p&gt;

&lt;p&gt;One thing I learned from the wonderful &lt;a href=&quot;https://www.linkedin.com/in/simon-hurst-a144b426/&quot;&gt;Simon Hurst&lt;/a&gt; was to write down quotes when you&apos;re taking notes. And to editorialise them later.&lt;/p&gt;

&lt;p&gt;You&apos;re aiming to capture the user&apos;s statement not what you thought about it at the time.&lt;/p&gt;

&lt;p&gt;The benefit of having the quote is that you don&apos;t have to remember what they said later when you&apos;re grouping.&lt;/p&gt;

&lt;p&gt;This is also a great way to introduce colleagues to the process. They can shadow your user interviews and capture quotes as they listen.&lt;/p&gt;

&lt;p&gt;Of course, if you&apos;re doing these remotely it&apos;s trivial to record or transcribe the interview. But I still think there&apos;s value in going through and pulling out the quotes to capture them. I love to talk to a team and find that they know their users by name and can refer back to specific quotes.&lt;/p&gt;

&lt;p&gt;You might worry about acting on anecdotal evidence, and you should test and measure your changes, but that kind of human understanding will guide you to better decisions.&lt;/p&gt;

&lt;h1 id=&quot;show--tell&quot;&gt;show &amp;gt; tell&lt;/h1&gt;

&lt;p&gt;It is super powerful to get users to show you what they mean.&lt;/p&gt;

&lt;p&gt;If you&apos;re interviewing someone and they say &quot;I wish your software let me do Y&quot; (sometimes the software already does do that). The amazing &lt;a href=&quot;http://neilkakkar.com/&quot;&gt;Neil Kakkar&lt;/a&gt; would ask &quot;can you show me where you&apos;d look in the UI to do that?&quot;&lt;/p&gt;

&lt;p&gt;Whether the feature exists or not already, you now know what the UI for discovering it might look like.&lt;/p&gt;

&lt;p&gt;Or a user will say something like &quot;competitor X does this better.&quot; the important response is to ask &quot;can you show me how to do it in competitor X?&quot;. Sometimes you&apos;ll see that it really is better, sometimes that it is just more familiar to them in the other UI.&lt;/p&gt;

&lt;p&gt;The insight isn&apos;t that you should copy what the competitor does. You should try to understand why they prefer it, across multiple users this will help you understand how to position that feature or introduce that user flow.&lt;/p&gt;

&lt;h1 id=&quot;compound-interest&quot;&gt;compound interest&lt;/h1&gt;

&lt;p&gt;Setting up and running user interviews can take a lot of time. And so people often skip them. But 1 interview is better than none. 2 is better than 1. And so on.&lt;/p&gt;

&lt;p&gt;And this compounds over time. Before you know it you&apos;ve met tens or hundreds of users.&lt;/p&gt;

&lt;p&gt;The knowledge you accumulate about your users (individually and organisationally) will give you instincts on what to build and how to build it.&lt;/p&gt;

&lt;p&gt;Decide how many interviews you want to run each month. And stick to it… there&apos;s always something more to learn.&lt;/p&gt;

&lt;h1 id=&quot;sometimes-stop&quot;&gt;sometimes stop&lt;/h1&gt;

&lt;p&gt;Sometimes you think it&apos;s going to be a user interview. But it turns out this is a user that&apos;s unhappy with the product. Or doesn&apos;t understand the platform and just needs help. I used to struggle through a bunch of open questions trying to &quot;stay in interview mode&quot;.&lt;/p&gt;

&lt;p&gt;Then I observed &lt;a href=&quot;https://x.com/annikaze_&quot;&gt;Annika Schmid&lt;/a&gt; on one call recognise it for what it was and shift into training/explaining mode. It already wasn&apos;t going to be a great user interview. So, may as well make it a good experience for the user.&lt;/p&gt;

&lt;h1 id=&quot;be-a-labrador&quot;&gt;be a Labrador&lt;/h1&gt;

&lt;p&gt;Importantly, you are there to learn. So, you need to be as interested in their opinions as a Labrador is in cheese.&lt;/p&gt;

&lt;p&gt;&quot;I&apos;d love to know more about…&quot;
&quot;Can you show me…&quot;
&quot;Oh wow, that&apos;s  not how we expected folk to use this! Can you dive into…&quot;&lt;/p&gt;

&lt;p&gt;One thing I&apos;ve picked up from the fabulous &lt;a href=&quot;https://github.com/EDsCODE&quot;&gt;Eric Duong&lt;/a&gt; is the phrase &quot;out of interest…&quot;&lt;/p&gt;

&lt;p&gt;Not just in user interviews but in every customer interaction. You can drop it in… &quot;Ah, it doesn&apos;t work like that… you can workaround by x, y, and z… out of interest what does it unlock for you if we support this?&quot;&lt;/p&gt;

&lt;p&gt;I love that framing. &quot;Out of interest what does it unlock for you if we support this?&quot;&lt;/p&gt;

&lt;p&gt;That user might not commit to 30 minutes for a user interview. But I bet they&apos;ll spend 30 seconds replying to a slack message. And since these things compound over time, you&apos;ll learn a lot from accruing all these tiny insights.&lt;/p&gt;

&lt;h1 id=&quot;this-is-the-redesign-that-will-kill-the-facebook&quot;&gt;this is the redesign that will kill the Facebook&lt;/h1&gt;

&lt;p&gt;Related to &quot;competitor X does it better&quot; i remember at least three occasions where Facebook changed their UI and everyone was wild in the comments talking about how it would kill Facebook.&lt;/p&gt;

&lt;p&gt;Twitter changing the star to a heart &lt;a href=&quot;https://www.bbc.co.uk/news/newsbeat-34713811&quot;&gt;made the national news&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With enough users you&apos;ll discover that you will get negative feedback no matter what you do. And if you chase every user, you&apos;ll end up with a product that no one wants.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/homers-car.webp&quot; alt=&quot;Homer&apos;s car&quot; loading=&quot;lazy&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Even though, if you don&apos;t listen to the users, you&apos;ll end up with a product that no one wants.&lt;/p&gt;

&lt;p&gt;Gathering all this feedback isn&apos;t so that you can just make all the changes people tell you they want. It&apos;s to get an instinct for how and why they use your product. You will be asked for conflicting things and without the gut-feeling for what users want, you&apos;ll end up with Homer&apos;s car.&lt;/p&gt;
</description>
				<pubDate>Wed, 11 Feb 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/02/how-i-do-user-interviews.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/02/how-i-do-user-interviews.html
				</guid>
			</item>
		
			<item>
				<title>How I use LLMs? - three</title>
				<description>&lt;p&gt;I remain very cynical about the current high-water mark for LLMs and augmented coding… but at the same time I use them every day and I don&apos;t think they&apos;re finished improving.&lt;/p&gt;

&lt;p&gt;Let&apos;s &lt;del&gt;growth hack blog visitor numbers&lt;/del&gt; record how I use them today as a little reflection on where I think they work and where they don&apos;t. Something I can revisit as the tech (and my skill with it) improves&lt;/p&gt;

&lt;p&gt;This is update number two, or entry number three, depending on how you want to count it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/2025/07/how-i-use-llms.html&quot;&gt;the first entry is here&lt;/a&gt;
&lt;a href=&quot;/2026/01/how-i-use-llms-2.html&quot;&gt;the second entry is here&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;XP pedant agent&lt;/li&gt;
  &lt;li&gt;primarily using LLMs&lt;/li&gt;
  &lt;li&gt;throw away way more work&lt;/li&gt;
  &lt;li&gt;be very strict with what i &lt;em&gt;do&lt;/em&gt; type&lt;/li&gt;
  &lt;li&gt;i approach understanding code differently&lt;/li&gt;
&lt;/ul&gt;

&lt;!--more--&gt;

&lt;h1 id=&quot;first-a-necessary-but-brief-diversion-into-how-i-use-tools-generally&quot;&gt;First, a necessary but brief diversion into how I use tools generally&lt;/h1&gt;

&lt;p&gt;I was largely self-taught as a developer and (after vbscript 😱) I started with DotNet. I found JetBrains Resharper early on and never looked back. The assistance in the IDE to write, refactor, and improve code was game-changing. I don&apos;t begrudge anybody any tool they want to use to level-up. Wanna use a graphical git client, or emacs, or anything else… go for it, go make cool things&lt;/p&gt;

&lt;p&gt;Because of that entry to the industry I&apos;m also not super keen on VSCode (you love it? great, see above, you do you, go make cool things). I&apos;m too used to clever interventions helping me and VSCode is too barebones (and so much slower than SublimeText)&lt;/p&gt;

&lt;p&gt;So, I &lt;em&gt;like&lt;/em&gt; having tools directly involved in my workflow. I learned LINQ more quickly and more thoroughly because I had resharper prompting me inline, at write-time: &quot;hey, why not like this?&quot;&lt;/p&gt;

&lt;h1 id=&quot;xp-pedant-agent&quot;&gt;XP pedant agent&lt;/h1&gt;

&lt;p&gt;I love the &lt;a href=&quot;https://wiki.c2.com/?XpSimplicityRules&quot;&gt;XP simplicity rules&lt;/a&gt; for guiding decision making…&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Passes all the tests.&lt;/li&gt;
  &lt;li&gt;Expresses every idea that we need to express.&lt;/li&gt;
  &lt;li&gt;Says everything OnceAndOnlyOnce.&lt;/li&gt;
  &lt;li&gt;Has no superfluous parts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I like that they&apos;re in tension with each other.&lt;/p&gt;

&lt;p&gt;I&apos;ve added them to my &lt;a href=&quot;https://github.com/pauldambra/dotfiles/blob/main/ai/CLAUDE.md&quot;&gt;AGENTS.md&lt;/a&gt; and if it forgets I can prompt it &quot;hey, apply the simplicity rules&quot;.&lt;/p&gt;

&lt;p&gt;Often the change it makes is the one I would have manually made.&lt;/p&gt;

&lt;h1 id=&quot;primarily-using-llms&quot;&gt;Primarily using LLMs&lt;/h1&gt;

&lt;p&gt;Over the last three months particularly the capability of LLMs has transformed. I can now go whole days mostly prompting an LLM and writing only a fraction of the code myself. This is… fine.&lt;/p&gt;

&lt;p&gt;I&apos;ve been working on super complex, tricky to find memory leak problems. I would not have had the patience to notice some of the things that the robot can when i provide it with context from my investigations.&lt;/p&gt;

&lt;p&gt;And while it&apos;s working on the next step I can be improving my investigation, or catching up on Slack, or taking my kids to school.&lt;/p&gt;

&lt;p&gt;I don&apos;t feel like I&apos;ve lost anything by not (always) typing out the code directly. And since &lt;a href=&quot;https://github.com/pauldambra/dotfiles/blob/main/ai/CLAUDE.md&quot;&gt;I taught the robot some extreme programming techniques&lt;/a&gt;, i find i don&apos;t need to re-work much at all.&lt;/p&gt;

&lt;p&gt;I genuinely didn&apos;t think I&apos;d switch this much… and like all sticky tools I didn&apos;t have to think about it. The tool hooked me.&lt;/p&gt;

&lt;p&gt;That said… i don&apos;t like vibe coding… I&apos;m not asleep at the wheel and do care about the diff that&apos;s being generated. So I feel slightly vindicated by this research from Anthropic https://www.anthropic.com/research/AI-assistance-coding-skills&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;In a randomized controlled trial, we examined 1) how quickly software developers picked up a new skill (in this case, a Python library) with and without AI assistance; and 2) whether using AI made them less likely to understand the code they’d just written. 
We found that using AI assistance led to a statistically significant decrease in mastery.
…
Importantly, using AI assistance didn’t guarantee a lower score. How someone used AI influenced how much information they retained.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;throw-away-way-more-work&quot;&gt;throw away way more work&lt;/h1&gt;

&lt;p&gt;Since I didn&apos;t type it, I don&apos;t feel invested. I dump a prompt in. Come back, see what came out. And sometimes I just throw it away. It doesn&apos;t help as much as I expected, or a UI change doesn&apos;t look as good as I hoped.&lt;/p&gt;

&lt;p&gt;Without feeling invested in the creation I am a little more rational about whether to throw it away.&lt;/p&gt;

&lt;p&gt;It&apos;s cheap to do many things at once and keep the useful things.&lt;/p&gt;

&lt;h1 id=&quot;be-very-strict-with-what-i-do-type&quot;&gt;be very strict with what I &lt;em&gt;do&lt;/em&gt; type&lt;/h1&gt;

&lt;p&gt;This is an addition to &quot;manage context&quot;.&lt;/p&gt;

&lt;p&gt;Sometimes I find myself writing a huge prompt. I have low tolerance for this. Or I find the task is spinning and churning and going nowhere. So, instead, when I recognise that I stop, I clear the prompt, and I spike the work. Then when I have a good enough sketch I point the robot at the changes and say &quot;hey, like this&quot;. I believe we do understand some problems better through trying to solve them.&lt;/p&gt;

&lt;p&gt;The robot is still more stupid than it is clever. So, giving it code is a good way to clever it up.&lt;/p&gt;

&lt;p&gt;It is still valuable to be a decent software engineer. But it might be more valuable to be a decent software engineer who dumps a sketch into an LLM. (if it isn&apos;t now, and they can keep improving, then it will be soon)&lt;/p&gt;

&lt;h1 id=&quot;i-approach-understanding-code-differently&quot;&gt;I approach understanding code differently&lt;/h1&gt;

&lt;p&gt;This one is difficult for me to accept, but it&apos;s snuck up on me and over the last few months changed how I work.&lt;/p&gt;

&lt;p&gt;The cost of writing code is falling &lt;em&gt;and&lt;/em&gt; the cost of understanding code is falling.&lt;/p&gt;

&lt;p&gt;When the cost of a thing fundamentally changes, you have to change your approach.&lt;/p&gt;

&lt;p&gt;&quot;Hey robot, write a script to validate the blah does thingy (or not) when the wotsit is twanged&quot;&lt;/p&gt;

&lt;p&gt;&quot;Hey robot, why does the clinkexpander accept a boolean?&quot;&lt;/p&gt;

&lt;p&gt;&quot;Hey robot, how does the clinkexpander work?&quot;&lt;/p&gt;

&lt;p&gt;&quot;Hey robot, what does the clinkexpander actually do?&quot;&lt;/p&gt;

&lt;p&gt;Tasks that would have taken me hours or days or weeks in the past are genuinely done in minutes now.&lt;/p&gt;

&lt;p&gt;I&apos;ve spent a big chunk of time recently feeding heap snapshots to the robot. I can only give huge thanks I&apos;ve not had to manually grok this myself.&lt;/p&gt;

&lt;p&gt;Is the robot perfect? No. not even.&lt;/p&gt;

&lt;p&gt;Is the robot a good software engineer? No. not even.&lt;/p&gt;

&lt;p&gt;Is it silly to ignore the fact that the robot does not need to be perfect or good for it to be a fantastic tool?&lt;/p&gt;

&lt;p&gt;yes, veryeven.&lt;/p&gt;

&lt;p&gt;the game has changed. pandora&apos;s box is open. the robot is here to stay.&lt;/p&gt;

&lt;p&gt;It reminds me of once… I used to work with someone who had worked mostly with signal processing baked into hardware. Very painful to discover a bug after release. We were sat together and I changed a field in a JSON response. He asked in a mid-panic: &quot;but how many bytes will that add to the payload?&quot;. Genuinely confused, I said: &quot;I&apos;ve barely ever had to care… I don&apos;t think it matters&quot;&lt;/p&gt;

&lt;p&gt;We&apos;re on the verge of that kind of change. We&apos;re not there ffs but some point down the road someone is going to ask &quot;but isn&apos;t that AI slop&quot; and their colleague will answer, genuinely confused: &quot;yes, why?&quot;&lt;/p&gt;

&lt;p&gt;Will some of that software be bad? yes
always-has-been-dot-meme&lt;/p&gt;
</description>
				<pubDate>Fri, 30 Jan 2026 08:00:00 +0000</pubDate>
				
				<link>
					https://pauldambra.dev/2026/01/how-i-use-llms-3.html
				</link>
				<guid isPermaLink="true">
					https://pauldambra.dev/2026/01/how-i-use-llms-3.html
				</guid>
			</item>
		
	</channel>
</rss>