<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Working on Aguilera Engineering</title><link>https://aguilera.ee/blog/tags/working/</link><description>Recent content in Working on Aguilera Engineering</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><managingEditor>eduardo@aguilera.ee (Eduardo Aguilera)</managingEditor><webMaster>eduardo@aguilera.ee (Eduardo Aguilera)</webMaster><copyright>Eduardo Aguilera</copyright><lastBuildDate>Wed, 27 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://aguilera.ee/blog/tags/working/index.xml" rel="self" type="application/rss+xml"/><item><title>Why I quote fixed scope</title><link>https://aguilera.ee/blog/fixed-scope/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><author>eduardo@aguilera.ee (Eduardo Aguilera)</author><guid>https://aguilera.ee/blog/fixed-scope/</guid><description>&lt;p&gt;Engagement-based pricing protects the vendor, not the client. The incentive runs
the wrong way: the longer it takes, the more they earn.&lt;/p&gt;
&lt;p&gt;I quote the work, not the hours. Eight weeks, fixed scope, a number you can put
in a budget. If I&amp;rsquo;m wrong about the estimate, that&amp;rsquo;s my problem to solve, not a
line item on your invoice.&lt;/p&gt;
&lt;p&gt;This only works because I write the code myself. There&amp;rsquo;s no team to staff, no
margin to pad, no handoff where the estimate quietly doubles. You&amp;rsquo;re hiring the
person doing the work.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Engagement-based pricing protects the vendor, not the client. The incentive runs
the wrong way: the longer it takes, the more they earn.</p>
<p>I quote the work, not the hours. Eight weeks, fixed scope, a number you can put
in a budget. If I&rsquo;m wrong about the estimate, that&rsquo;s my problem to solve, not a
line item on your invoice.</p>
<p>This only works because I write the code myself. There&rsquo;s no team to staff, no
margin to pad, no handoff where the estimate quietly doubles. You&rsquo;re hiring the
person doing the work.</p>
<p>Concrete beats abstract. A fixed number you can plan around beats a rate card
and a hope.</p>
]]></content:encoded></item><item><title>A SPEC.md is the difference</title><link>https://aguilera.ee/blog/spec-file/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><author>eduardo@aguilera.ee (Eduardo Aguilera)</author><guid>https://aguilera.ee/blog/spec-file/</guid><description>&lt;p&gt;A SPEC.md file is the difference between vibe coding and software engineering.&lt;/p&gt;
&lt;p&gt;For a complex feature I write a spec and hand it to the agent to turn into an
implementation plan. What goes in it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Introduction.&lt;/strong&gt; &amp;ldquo;You are building a dashboard to change settings on a
security platform.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problem.&lt;/strong&gt; If it knows why, it finds solutions I didn&amp;rsquo;t think of.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope.&lt;/strong&gt; Keeps it focused on what I want.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Out of scope.&lt;/strong&gt; Paradoxically, this sharpens the scope.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functional requirements.&lt;/strong&gt; The list of tasks to complete.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-functional requirements.&lt;/strong&gt; Respects my architectural decisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;References and glossary.&lt;/strong&gt; Points it at the knowledge it should read.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The spec is where the thinking happens. The code is the easy part.&lt;/p&gt;</description><content:encoded><![CDATA[<p>A SPEC.md file is the difference between vibe coding and software engineering.</p>
<p>For a complex feature I write a spec and hand it to the agent to turn into an
implementation plan. What goes in it:</p>
<ul>
<li><strong>Introduction.</strong> &ldquo;You are building a dashboard to change settings on a
security platform.&rdquo;</li>
<li><strong>Problem.</strong> If it knows why, it finds solutions I didn&rsquo;t think of.</li>
<li><strong>Scope.</strong> Keeps it focused on what I want.</li>
<li><strong>Out of scope.</strong> Paradoxically, this sharpens the scope.</li>
<li><strong>Functional requirements.</strong> The list of tasks to complete.</li>
<li><strong>Non-functional requirements.</strong> Respects my architectural decisions.</li>
<li><strong>References and glossary.</strong> Points it at the knowledge it should read.</li>
</ul>
<p>The spec is where the thinking happens. The code is the easy part.</p>
]]></content:encoded></item><item><title>The cost of the best models</title><link>https://aguilera.ee/blog/cost-of-the-best-models/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><author>eduardo@aguilera.ee (Eduardo Aguilera)</author><guid>https://aguilera.ee/blog/cost-of-the-best-models/</guid><description>&lt;p&gt;The best models, per seat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT Business: 30 dollars&lt;/li&gt;
&lt;li&gt;Claude Pro: 20 dollars&lt;/li&gt;
&lt;li&gt;Gemini Enterprise: 21 dollars&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unless you&amp;rsquo;re on a Business plan, OpenAI and Gemini train on your data. More on
that &lt;a href="https://aguilera.ee/blog/openai-trains-on-your-data/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s 71 dollars per person on starter plans, and it climbs the moment you
exhaust the quotas. Expensive, and hard to control securely at scale.&lt;/p&gt;
&lt;p&gt;One subscription, all three, or something else entirely is a real decision.&lt;/p&gt;</description><content:encoded><![CDATA[<p>The best models, per seat:</p>
<ul>
<li>ChatGPT Business: 30 dollars</li>
<li>Claude Pro: 20 dollars</li>
<li>Gemini Enterprise: 21 dollars</li>
</ul>
<p>Unless you&rsquo;re on a Business plan, OpenAI and Gemini train on your data. More on
that <a href="/blog/openai-trains-on-your-data/">here</a>.</p>
<p>That&rsquo;s 71 dollars per person on starter plans, and it climbs the moment you
exhaust the quotas. Expensive, and hard to control securely at scale.</p>
<p>One subscription, all three, or something else entirely is a real decision.</p>
]]></content:encoded></item><item><title>Jevons paradox in the AI era</title><link>https://aguilera.ee/blog/jevons-paradox/</link><pubDate>Thu, 25 Dec 2025 00:00:00 +0000</pubDate><author>eduardo@aguilera.ee (Eduardo Aguilera)</author><guid>https://aguilera.ee/blog/jevons-paradox/</guid><description>&lt;p&gt;Smart CEOs are hiring more people in the AI era, not fewer.&lt;/p&gt;
&lt;p&gt;Jevons paradox: when a technology makes a resource more efficient to use, total
consumption of that resource often goes up. Lower cost raises demand and creates
more work overall.&lt;/p&gt;
&lt;p&gt;When steam engines got fuel efficient, coal consumption rose. It started the
industrial revolution, not its end.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve felt it firsthand, testing 43 files in an hour. GitHub&amp;rsquo;s data shows
developers using Copilot write more code, not less. Features that took weeks now
get prototyped in hours by one engineer.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Smart CEOs are hiring more people in the AI era, not fewer.</p>
<p>Jevons paradox: when a technology makes a resource more efficient to use, total
consumption of that resource often goes up. Lower cost raises demand and creates
more work overall.</p>
<p>When steam engines got fuel efficient, coal consumption rose. It started the
industrial revolution, not its end.</p>
<p>I&rsquo;ve felt it firsthand, testing 43 files in an hour. GitHub&rsquo;s data shows
developers using Copilot write more code, not less. Features that took weeks now
get prototyped in hours by one engineer.</p>
<p>The question is whether you cut headcount or raise throughput.</p>
<p><a href="https://github.blog/news-insights/research/research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/">GitHub&rsquo;s research on Copilot and developer productivity</a>.</p>
]]></content:encoded></item></channel></rss>