<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[No Shortcuts]]></title><description><![CDATA[A publication about the foundations that make software teams thrive and the leadership principles that tie it all together. 

Written for engineers and tech leads who believe the unsexy stuff is what separates good teams from great ones.]]></description><link>https://www.noshortcuts.tech</link><image><url>https://www.noshortcuts.tech/img/substack.png</url><title>No Shortcuts</title><link>https://www.noshortcuts.tech</link></image><generator>Substack</generator><lastBuildDate>Sun, 04 Oct 2026 22:55:17 GMT</lastBuildDate><atom:link href="https://www.noshortcuts.tech/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ben Wong]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[bewong1@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[bewong1@substack.com]]></itunes:email><itunes:name><![CDATA[Ben Wong]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ben Wong]]></itunes:author><googleplay:owner><![CDATA[bewong1@substack.com]]></googleplay:owner><googleplay:email><![CDATA[bewong1@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ben Wong]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[AI Skill - Papercuts Coding Task]]></title><description><![CDATA[I&#8217;m starting a little mini series on this newsletter on AI skills I find useful in my day to day.]]></description><link>https://www.noshortcuts.tech/p/ai-skill-papercuts-coding-task</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/ai-skill-papercuts-coding-task</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sat, 26 Sep 2026 23:01:33 GMT</pubDate><content:encoded><![CDATA[<p>I&#8217;m starting a little mini series on this newsletter on AI skills I find useful in my day to day. I&#8217;ll be sure to include a copy-pasteable prompt you can use to get your harness to write its own version of these skills. </p><p>Today&#8217;s skill is the first one: my papercuts coding skill.</p><p>The skill is based on the scenario that I&#8217;ve just had a discussion about some small coding task that needs doing, either in chat or in real life. In the past, the result would likely have been &#8220;let&#8217;s raise a ticket in the backlog to address this later&#8221;, followed by a single line, non-descript ticket somewhere in the team&#8217;s backlog.</p><h2>The papercuts skill</h2><p>Now, I head to my harness of choice in the codebase of choice and tell it: &#8220;We discussed this problem, and we decided that the solution was to do X, read this link to a thread for context (if there is one available).&#8221;</p><p>Then the papercuts skill does this:</p><ol><li><p>Raises a new ticket in the backlog with the correct details in it</p></li><li><p>Performs my git workflow for new tasks (a new worktree prefixed with the backlog reference)</p></li><li><p>Fixes the issue in code</p></li><li><p>Raises a draft change for me to review</p></li></ol><p>Now there is no context or history lost, work is tracked and done at the same time for these small papercuts.</p><p>Note that this only works for tasks that are small enough to be contained in a manually written prompt (one or two sentences at most). Larger tasks that require some form of system design or architectural guard rails aren&#8217;t suitable for this skill.</p><p>It&#8217;s not ground breaking but the biggest value I get from this is that context is no longer lost, work is tracked properly without the extra admin overhead that a papercut sometimes does not deserve.</p><h2>The prompt</h2><p>Here&#8217;s a prompt you use to get my harness to write its own version of this skill. Make sure to adjust the bits of information to match your own workflow:</p><ul><li><p>where the backlog lives</p></li><li><p>git workflow</p></li><li><p>code review</p></li></ul><blockquote><p>Write me a skill called &#8220;papercuts&#8221; that takes a prompt about a task and does the following:</p><ol><li><p>Create a ticket in the backlog with the description, the solution, and the thread link &lt;ADJUST THIS&gt;</p></li></ol><ol start="2"><li><p>Create a fresh git worktree prefixed with the ticket reference (Point this at any existing skill or workflow you have for starting a new coding task) &lt;ADJUST THIS&gt;</p></li></ol><ol start="3"><li><p>Implement the fix in the worktree</p></li></ol><ol start="4"><li><p>Run a code review with four subagents in parallel, apply the good suggestions, and run the tests (Note this is also a seperate skill that I have) &lt;ADJUST THIS&gt;</p></li></ol><ol start="5"><li><p>Raise a draft pull request that references the ticket and thread</p></li></ol></blockquote>]]></content:encoded></item><item><title><![CDATA[Empathy in Engineering]]></title><description><![CDATA[A decade ago I wrote about empathy because I believed it was critical to engineers and that developing it was important.]]></description><link>https://www.noshortcuts.tech/p/empathy-in-engineering</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/empathy-in-engineering</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sat, 19 Sep 2026 23:00:32 GMT</pubDate><content:encoded><![CDATA[<p>A decade ago <a href="https://medium.com/@bewong/the-empathetic-developer-1fbdcafdec2a">I wrote about empathy</a> because I believed it was critical to engineers and that developing it was important. Today, I still lean heavily on that skill, a lot of the times even more so than I used to. There are a few facets of software engineering where the skill applies and where I&#8217;d encourage you all to have a go at practicing it.</p><h2>Leadership</h2><p>I have watched a leader&#8217;s empathy change a team&#8217;s trajectory. Everyone works from a different situation with a different set of motivators, people are different and that get energy from different things.</p><p>Some engineers thrive when given tough problems and the time to solve them. Others may want frequent check-ins and small wins. Treat them the same and you will get the average of both.</p><p><strong>Understanding your people is how you get the best outcome without burning anyone out.</strong></p><p>Practice opportunity: Next time you have to ask someone to do something, first find out what they spend their energy on, both inside and outside of work, then see if you can transform the ask into something similar. For example, if you know someone who jumps at the chance to join a customer interview or spends a lot of their time on understanding the customer, try to help link your ask to the customer need, help them connect the dots if they don&#8217;t ask you directly.</p><h2>Product engineering</h2><p>Product engineering is where I have watched that skill pay off. It requires understanding your customer: who they are, what they want, how they work, etc.</p><p>You can only build what a customer wants if you actually know what they want. Most importantly, someone with a strong empathy muscle is able to bypass a lot of their own biases to discover the real customer problems that need solving, our biases often hide things from us without us even realising it. Empathy helps you overcome that. For those platform engineers out there, the skill still applies. Your customers are other engineers, in fact empathy is more important and much harder to apply because you have a lot more biases as an engineer.</p><p>Practice Opportunity: Next time you&#8217;re building a feature of your platform, don&#8217;t assume what you know about development is what other developers want, go out and ask them. For example, if you are building a visualiser for git commits, your workflow tells you that you only really need to see the latest 5 that you have committed, reject this assumption, instead go out and ask one of your fellow engineers on another team and see what they say. They might say the last 10, they might say the most recent one or they might even tell you that they don&#8217;t need a visual, each of these is worth finding out before you even go and start building it.</p><h2>Just plain getting stuff done</h2><p>The best outcomes I have seen are created by teams.</p><p>I don&#8217;t mean teams on an org chart. I mean groups of people from across the organisation coming together to build something, often across teams and functions. You need empathy here as well.</p><p>You are negotiating a system design with a team you have never worked with. Understanding what they know, what they don&#8217;t, and what spurs them on gets you to a point where you start truly working on a solution together. You&#8217;ll start talking the same language, there&#8217;ll be less surprises and more trust. Only then can you zig and zag together.</p><h2>Working apart</h2><p>Empathy is harder for me to keep up when we work apart. My team is spread across time zones, and it&#8217;s much harder to gain empathy when you don&#8217;t have the opportunity to strike up a casual conversation. But in a digitally distributed and AI automated world, empathy is increasingly important. Understanding why someone else does something means you can more easily predict what they will do, less surprises in a world where course correction moments are increasingly rare and it&#8217;s the only way we can get things done together.</p><p>Establishing empathy in this world means being intentional. Writing things down, asking questions and triple checking assumptions before they harden.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.noshortcuts.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.noshortcuts.tech/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Can AI solve this?]]></title><description><![CDATA[Somebody describes a painful manual process.]]></description><link>https://www.noshortcuts.tech/p/can-ai-solve-this</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/can-ai-solve-this</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sat, 12 Sep 2026 23:00:41 GMT</pubDate><content:encoded><![CDATA[<p>Somebody describes a painful manual process. Somebody else answers, three words: can AI solve this?</p><p>It&#8217;s true that AI can solve problems that could not be solved before, or could only be solved at enormous cost. Some processes were too messy to script or had just enough variance to make to make deterministic automation expensive.</p><p>But I think there is a misconception that can AI can do this trivially.</p><h2>The setup</h2><p>Setting up an agent to actually solve a problem on its own takes deliberate design. Before any of this can run, I&#8217;ve had to answer questions like these:</p><ul><li><p>What knowledge does it need to handle your particular task?</p></li><li><p>Which skills does it require, and who writes and edits them?</p></li><li><p>Which parts need deterministic scripts instead of intelligence?</p></li><li><p>What does the detailed flow of the automation look like?</p></li><li><p>What can the agent not do, and where do the safeguards sit?</p></li><li><p>What systems does the runtime get access to? The ones it needs and importantly, none of the ones it doesn&#8217;t need?</p></li></ul><p>Each of these is a topic in itself. Get one wrong and the automation either stops working or causes damage.</p><blockquote><p>Say your team builds an agent that triages incoming support tickets. Getting it working on ten tickets probably takes an hour. Making it trustworthy on ten thousand tickets means feeding it your product docs, authoring skills for the edge cases, wrapping risky steps in deterministic scripts, and locking its access down to exactly one service.</p></blockquote><p>So the answer to &#8220;Can AI Solve this?&#8221; is probably yes but it comes loaded with the same questions that always come with automating a process: how much will it cost?</p><h2>Setup time comes first</h2><p>You have to put time into using AI before you can use AI.</p><p>A prompt alone will not get you a working system. The prompt plus knowledge, skills, deterministic scripts, boundaries, and scoped access: that&#8217;s what you need to think about and write down first.</p><p>That setup is the price. And for some problems, it&#8217;s absolutely worth paying, for others it still might not be.</p><h2>What to ask for</h2><p>Next time somebody asks you this, give them an estimate of how long it will take to set it up, the reaction to that will tell you if the problem is worth solving.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.noshortcuts.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.noshortcuts.tech/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[A Father's Change]]></title><description><![CDATA[Father&#8217;s Day has me reflecting on how I&#8217;ve changed as a person since I became a father, I&#8217;ve definitely picked up some traits that could help me at work.]]></description><link>https://www.noshortcuts.tech/p/a-fathers-change-b1d</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/a-fathers-change-b1d</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sat, 05 Sep 2026 23:01:31 GMT</pubDate><content:encoded><![CDATA[<p>Father&#8217;s Day has me reflecting on how I&#8217;ve changed as a person since I became a father, I&#8217;ve definitely picked up some traits that could help me at work.</p><p>But I quickly realised that writing about that would be missing a far more important point that I don&#8217;t hear about as much.</p><p><strong>The change is real.</strong> In the years since my children were born, I have changed. Most of the time I don&#8217;t even notice it until I stop and reflect.</p><p>I&#8217;ve personally become more energised by social interaction. More craving social connection, less wishing I could be by myself. More engaged in my local communities. I feel it at work, in how I show up. These are not small shifts and they are the kind of changes I would have sworn were impossible for me ten years ago.</p><p>For the fathers out there: the change is real. Our brains transform as we become parents. It&#8217;s a biological change.</p><h2>It can feel like failing</h2><p>Sometimes that change is jarring.</p><p>Things you used to do without thinking now come to you differently. Interests fade, what used to give you energy might drain you and what used to drain you might supercharge you. Your priorities reorder themselves. Maybe what was important to you before is no longer important to you now, and more importantly maybe you see that others don&#8217;t share your priorities and where you used to try and align, you can&#8217;t now.</p><p>When that happens, it can feel like failure, as if something is wrong with you.</p><p><strong>But you&#8217;re not failing. You&#8217;re simply changing.</strong></p><p>There&#8217;s a big difference. Failing means you&#8217;re falling behind where you should be. Changing means you&#8217;re moving somewhere new. Both can feel the same, because both can</p><h2>You&#8217;re actually doing remarkably well</h2><p>This is what I wish others could tell me more often: parenting is a second and a third full-time job on top of the one you already have and you are probably doing a remarkable job at balancing them.</p><p>Once children enter the picture, there&#8217;s more to carry: laundry, school runs, homework, sleep, keeping another human being (or two) alive. The endless scheduling of a small person&#8217;s existence. You are juggling all of that on top of the physiological change happening in your body and mind (and by the way, your career too)</p><p>So when you&#8217;re having a bad day, maybe a work deadline looming, kids refusing to cooperate, a dinner plan that still hasn&#8217;t been made, don&#8217;t forget what you actually did today. You read that book. You helped build that Lego castle. You got your kids to school on time. Maybe you managed one or two of the many other things that only you can do.</p><p>Bad days don&#8217;t count against you, nobody is keeping score but you. The best thing you can do for yourself and others is to give yourselves a little bit of latitude. You&#8217;re killing it.</p>]]></content:encoded></item><item><title><![CDATA[Technical Leadership - The Art of Decision Making]]></title><description><![CDATA[Most engineers believe technical leadership is about having the best answer.]]></description><link>https://www.noshortcuts.tech/p/technical-leadership-the-art-of-decision</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/technical-leadership-the-art-of-decision</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sun, 30 Aug 2026 01:00:59 GMT</pubDate><content:encoded><![CDATA[<p>Most engineers believe technical leadership is about having the best answer. It&#8217;s not. It&#8217;s about knowing which questions deserve an answer at all, deciding swiftly when they do, and having the humility to admit when you got it wrong.</p><p>After more than a decade observing some of the best software leaders in Australia and spending the last 4 years practicing as one myself, I&#8217;ve picked the top 3 skills I think all great leaders need and all aspiring leaders should cultivate.</p><h2>Filtering Noise</h2><p>The best leaders I have seen are the ones that somehow know the difference between the noise and signal within their domain and organisation. Both sides of the equation are critically important when it comes to focusing teams. Why? Because humans are inherently limited in the capacity they have for cognitive load and there is far more noise out there than there is signal. <strong>As a leader it&#8217;s critical to know what your people are not doing so that they can focus on what they are doing.</strong></p><blockquote><p>Let&#8217;s use a hypothetical situation. A senior engineer has come to you with an escalation, two team members disagree on the boundaries of a system they are building, one engineer believes 2 microservices are needed while the other believes there are 3. You know that the team is building the first version of this product feature to be launched to 100 customers and that there is a deadline that is looming in 2 months that is business critical. You also know that microservices are cheap to spin up in this organisation. That already makes this decision noise, it doesn&#8217;t make a material difference to the functionality how the microservices are structured and the proposed initial scale means that any architecture will be fine, it would be pointless to spin up days of discussion over this to go through technical specs and the pros and cons of each approach. So what can you do as the arbiter of this decision? Your options are:</p><ol><li><p>Look at each option, assess the pros and cons of each together with the engineers and pick one based on the best weighted components</p></li><li><p>Introduce a third option for a single microservice and explain why it&#8217;s the best option, convince both engineers that this is the way.</p></li><li><p>Pick one option, convince the opposing engineer.</p></li></ol><p>Hopefully at this point, The 3rd approach is the obvious answer; it&#8217;s the one that eliminates the noise the quickest and brings the team back to focus.</p></blockquote><p>While completely contrived. I hope this illustrates how a leader uses constraints and context to eliminate noise for the team. Imagine instead if you had decided this was a decision worth diving into and understanding in full depth. You could have possibly wasted weeks deciding something that is non-consequential for the intended scale. Noise often comes in the form of decisions or questions asked, if you&#8217;re an effective leader you will know that when they show up, you will either need to make the decision swiftly or if a question, put it to the side and answer it later (if at all).</p><h2><strong>Decisiveness</strong></h2><p>Decisiveness follows on from Signal vs Noise. The best leaders I know are able to make decisions quickly with incomplete information and <strong>stick to them when challenged by noise</strong>.</p><p>What does this look like concretely?</p><blockquote><p>Let&#8217;s say you&#8217;ve made that decision to build 2 microservices instead of 3. An engineer outside your team finds the decision record and brings up that this means the module that would have been the 3rd microservice can no longer be seperately scaled horizontally. The theoretical maximum scale for this service is only 100,000 customers due to this scaling limitation. While factually true, this should not change the decision as we already know that the feature will not need to scale passed 100 customers for the first launch. An indecisive leader would re-open the decision and re-consider the architecture, a decisive leader knows that a comment like that is likely lacking context and stands their ground, protecting the team from the noise; the likely action there is a nicely worded comment detailing the constraints that have already been considered. This of course is balanced by signal, if the comment instead raised an issue with scaling passed 50 customers, you know this is something you have to address properly because it impacts the launch.</p></blockquote><h2><strong>Humility</strong></h2><p>Leaders are people and they can be wrong too, when this happens the worst thing you can do is to pretend you are still right. <strong>Though counter intuitive, owning mistakes is one of the best ways to earn trust</strong>, trying to pull the wool over everyone&#8217;s eyes is the best way to lose it, being overly defensive is probably the worst thing you can do.</p><blockquote><p>It&#8217;s launch day in 1 week, you&#8217;ve done some performance testing and at simulation of the 99th customer, your services fall over. It is the 3rd module and having that module separated out would have allowed you to scale it out without making the other modules significantly more expensive. Your response options are:</p><ul><li><p>2 services is the golden architecture, keep this and scale out the second one so that it can take the load. We can pay the money.</p></li><li><p>3 services is the way to go, we made an assumption in the beginning that turned out not to be true after testing. Let&#8217;s scale out for launch and re-architect afterwards.</p></li><li><p>3 services is the way to go, we made an assumption in the beginning that turned out not to be true after testing. Delay the launch until we have the perfect architecture.</p></li><li><p>3 services is the way to go, we made an assumption in the beginning that turned out not to be true after testing. Let&#8217;s launch to 50 customers instead.</p></li></ul></blockquote><p>The way you own mistakes matter too. I hope it is obvious which of these example responses is best. The first is the obviously wrong one (which I have placed there almost as a plant). You are likely to be deciding between the last three options and each of them de-prioritises one of scope, cost and velocity. Which one you choose is contextual and depends on which one of the three is more acceptable, but each one of those three <strong>admits the mistake</strong> made and <strong>proposes an action plan</strong>. These two components are critical to owning a mistake, you need an action plan to be taken seriously.</p><p>These three skills, filtering noise, deciding decisively, and owning mistakes, don&#8217;t exist in isolation. They reinforce each other. Noise filtering gives you the clarity to decide quickly. Decisiveness gives your team the stability to execute. And humility gives them the trust to follow you when things go wrong, because they know you&#8217;ll course-correct rather than double down. If you cultivate nothing else, cultivate these.</p><p>While I&#8217;ve written about these skills in the context of software engineering teams, I believe they are broadly applicable to leadership in contexts outside of the technical. I hope they serve you well if you are in or are pursuing a leadership role at any level.</p>]]></content:encoded></item><item><title><![CDATA[Where AI Helps Me Most (It's Not the Code)]]></title><description><![CDATA[As a principal engineer, a lot of my time is spent outside and around the code.]]></description><link>https://www.noshortcuts.tech/p/where-ai-helps-me-most-its-not-the</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/where-ai-helps-me-most-its-not-the</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sun, 23 Aug 2026 01:00:54 GMT</pubDate><content:encoded><![CDATA[<p>As a principal engineer, a lot of my time is spent outside and around the code. Most conversations about AI in software focus on coding - implementation, generating tests, reviewing pull requests. And yes, I use it for all of that. But some of AI&#8217;s most valuable benefits for me are the ones that get less attention, because they&#8217;re in the parts of my job that are not about code at all.</p><p>Here are the four places AI has become indispensable in my workflow.</p><h2>Data analysis</h2><p>I write a lot of throwaway SQL. Not the kind that gets shipped and reviewed, but the kind that I use to answer a question I have at a point in time. AI writes this for me far faster than I can handcraft it. Give it the schema, describe the question, and it produces a query I&#8217;d otherwise spend twenty minutes getting right.</p><p>More importantly, it <em>understands</em> the data. It can read a table&#8217;s structure and a data set faster than I can, spot the shape of things, and point me at what matters. And when it comes to logs or large files of text - the stuff that would take me hours to scroll through - AI reads them in seconds, gives me the insights I need and if I need to dig deeper or see the data for myself, I can with relative easy. This has probably saved me hours every time I need to do some analysis.</p><h2>Project status data gathering</h2><p>Recalling what I actually did over the past week used to mean scrolling through chat messages, pages I&#8217;d written, and calendar events, trying to reconstruct what I did and what happened. AI can gather all of that in moments and collate it into something coherent. What took me an hour of mental archaeology now takes me a few minutes of verification and editing.</p><h2>First draft writing</h2><p>I regularly write technical strategies, high-level explainers, and other documents that require real writing. I often hit the blank canvas problem. Staring at an empty page hard and it can take me a while to get into the swing of things. Sometimes hours if I get pulled into other things in the interim. AI gets me past it instantly. I give it a prompt with the points I want to make, it writes, and I edit heavily. I often do heavy editing, sometimes re-writing entire sections in my own words or deleting large parts of a document that was just too hyperbolic or sycophantic. I still end up with a document that is mine but I get there much faster without having to start from scratch.</p><h2>Summarising chats and tracking work</h2><p>Ever had the retro item &#8220;we need to write better ticket descriptions&#8221;? AI solves that retro item once and for all. It can read a chat thread and summarise it, and it can read the code too and write a spec out of both. We are talking here about ad-hoc ticketing, help threads, queries or operational work needed for maintenance. These things used to get lost in history, a lot of the times if a ticket was raised it would have next to no context</p><p>Most importantly, none of these things replace our craft. They make us better as engineers because they allow us to focus on the important technical things instead.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.noshortcuts.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.noshortcuts.tech/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[You are not behind]]></title><description><![CDATA[The AI adoption discourse has gotten a bit out of hand.]]></description><link>https://www.noshortcuts.tech/p/you-are-not-behind</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/you-are-not-behind</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sun, 16 Aug 2026 06:15:37 GMT</pubDate><content:encoded><![CDATA[<p>The AI adoption discourse has gotten a bit out of hand.</p><p>My feeds are full of grand statements about the rate of AI adoption - how you&#8217;re already behind if you&#8217;re not managing a swarm of 10,000 agents.</p><p>This is hyperbole at best, and straight-up lying in most cases. Nobody knows where this is going, so how does anyone know if you are behind? What are you behind in?</p><p>Engineering fundamentals still matter. Proper coding still matters. As software engineers, our job isn&#8217;t just to build something that works - it&#8217;s to build something that lasts.</p><p>You are not behind. Wherever you are on your journey with AI in software engineering, that&#8217;s the right place to be. The entire world is still learning how to use this technology and how to use it effectively. Some have found improvements; others are still searching.</p><p>I&#8217;m currently on my third iteration of my own personal workflow.</p><p>My first vibe-coding setup built something that worked. But it quickly reached the point where not understanding the code myself, having to rely on the AI to read, debug, and maintain it, became untenable. I was spending the same amount of time, or sometimes more, going back and forth with prompts as I would doing my own bugfixes in a codebase I wrote and understood myself.</p><p>My second iteration took a more guarded, spec-driven approach: applying architectural guidelines before starting implementation, and setting up an automated system of spec writing and spec implementation with fully integrated context in a greenfields repo. The result was closer to what I&#8217;d consider a robust codebase. But after a while, I realised I&#8217;d spent about the same amount of time in setup as I usually would &#8212; and even after some weeks, with an acceptable codebase, I wasn&#8217;t significantly closer to shipping something. In that case, AI probably gave me about a 30% speed boost. Useful, but not astounding.</p><p>I&#8217;m now trying a different approach. Paying more attention to the context I give my agent about who or what I am, and the principles I use when writing code, storing that in context and trying out spec driven development with these principles as a foundation.</p><p>What matters is that I&#8217;m still trying. I don&#8217;t have the answer - and neither does anyone else. Because software engineering isn&#8217;t really a question that has <strong>an</strong> answer, it&#8217;s a field of many quirks with many <strong>different</strong> answers. Anyone who says it does doesn&#8217;t really understand what software engineering is, or how it works.</p><p>Do you need to learn how to use AI? Yes I think so.</p><p>Do you need to be scared of falling behind? I don&#8217;t think so, not if you are still trying and learning things. The fundamental principle of growth mindset still applies, if you are trying and failing, you&#8217;re progressing.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.noshortcuts.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading No Shortcuts! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Welcome to No Shortcuts]]></title><description><![CDATA[Software engineering is going through something.]]></description><link>https://www.noshortcuts.tech/p/welcome-to-no-shortcuts</link><guid isPermaLink="false">https://www.noshortcuts.tech/p/welcome-to-no-shortcuts</guid><dc:creator><![CDATA[Ben Wong]]></dc:creator><pubDate>Sat, 08 Aug 2026 02:13:37 GMT</pubDate><content:encoded><![CDATA[<p>Software engineering is going through something. New tools, and new ways of working are appearing almost every week and it&#8217;s harder than ever to seperate the noise from the signal. Amid all of that change, one thing has become increasingly clear to me: <strong>understanding the fundamentals of our craft has never been more important.</strong></p><p>That&#8217;s why I&#8217;m starting <strong>No Shortcuts</strong>.</p><h2>Who I am</h2><p>I&#8217;m a software engineer with over a decade of experience building software. I&#8217;ve watched Atlassian grow through several stages of its journey, and along the way I&#8217;ve operated in teams as small as two people up through departments as large as five hundred.</p><p>Being part of several stages of growth has taught me one thing: the fundamentals remain the same throughout. Whether you&#8217;re two engineers in a room or a department of five hundred, the core of the craft - clarity, trade-offs, ownership and judgement are all the same. The scale changes a lot of things but those fundamentals remain and actually become more important as you go.</p><p>I&#8217;m also a father of two, and balance is critical to me. Software is a marathon, not a sprint, and nothing has taught me that more clearly than trying to be a good engineer and a good dad at the same time. I&#8217;ll write about that side of the craft too - doing your best work and having a life worth living shouldn&#8217;t be mutually exclusive, we don&#8217;t talk about it enough, I hope to be able to do that.</p><h2>What this newsletter is</h2><p>No Shortcuts is my attempt to write down what I&#8217;ve learned about software engineering as a craft. You can expect three kinds of posts:</p><ul><li><p><strong>Leadership and the non-technical side of the craft</strong> - the skills that aren&#8217;t in the code, but essential to software engineering which is at it&#8217;s core a <strong>team</strong> game.</p></li><li><p><strong>AI and our craft</strong> - how AI is enhancing (and changing) the way we build software, and how to think clearly about it using what we already know about software engineering.</p></li><li><p><strong>Occasional technical posts</strong> - deep dives into the how and why, when a topic deserves the full treatment. Expect these to be centered around <strong>building.</strong></p></li></ul><h2>Why &#8220;No Shortcuts&#8221;?</h2><p>There are no shortcuts to mastery. There never have been and AI doesn&#8217;t change that. If anything, it makes the opposite true. The power of software automation is powerful, I truly believe that, but it can only be harnessed effectively through applying what we know about the craft. The ones who can reason about trade-offs, systems and people will be the ones that will be leveraging this technology to its fullest.</p><p>I want this newsletter to be for the people who are in it for the long game and building what the world looks like tomorrow. If that sounds like you, welcome!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.noshortcuts.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading No Shortcuts! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>