<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mykola Mizhigurskiy</title>
    <description>The latest articles on DEV Community by Mykola Mizhigurskiy (@kotyk).</description>
    <link>https://dev.to/kotyk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3186292%2Ff76ff383-d13c-42f5-9b1c-f438e95b8036.jpg</url>
      <title>DEV Community: Mykola Mizhigurskiy</title>
      <link>https://dev.to/kotyk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kotyk"/>
    <language>en</language>
    <item>
      <title>Microsoft GH-300: GitHub Copilot | Tips &amp; Tricks</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Mon, 10 Aug 2026 19:10:40 +0000</pubDate>
      <link>https://dev.to/kotyk/microsoft-gh-300-github-copilot-tips-tricks-430o</link>
      <guid>https://dev.to/kotyk/microsoft-gh-300-github-copilot-tips-tricks-430o</guid>
      <description>&lt;p&gt;Today I passed the GitHub Copilot GH-300 exam and decided to write down my impressions right away while they are still fresh. First of all, this article is not so much a “how to pass” guide as a place where people who are currently preparing for the exam can ask questions to someone who literally took it today. If anything from my experience helps you prepare better, or at least understand what to expect, then this article has already served its purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap between preparation materials and the actual exam questions
&lt;/h2&gt;

&lt;p&gt;The first thing that genuinely surprised me was how different the information in the recommended preparation materials can be from what you actually see on the exam. A few times, my completely honest reaction was: “Where did this even come from?” Subjectively, I managed to answer some of those questions not because I had memorized the materials well, but because by the time I took the exam I had already been using Copilot quite intensively in real-world development. Sometimes practical experience helped, sometimes it was a general understanding of engineering processes, and sometimes it was simply common sense.&lt;/p&gt;

&lt;p&gt;So I would not recommend treating the official materials as a complete map of the exam. They are useful and they provide the basic structure of the topics, but they are not enough to make you confident about every question. If you already use Copilot at work, that is a serious advantage, because part of the exam tests not only whether you know the wording from the documentation, but also whether you understand how the product behaves in common scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copilot = Microsoft
&lt;/h2&gt;

&lt;p&gt;Another thing worth keeping in mind: Copilot is GitHub, GitHub is Microsoft, and Microsoft also means Windows and PowerShell. If, like many developers, you have spent years working on macOS and barely touching the Windows ecosystem, some questions may come as an unpleasant surprise. For example, you may need at least a basic understanding of how something is &lt;strong&gt;installed&lt;/strong&gt; or configured through PowerShell. I barely looked at things like that during my preparation because I relied too heavily on the recommended resources and hardly read any additional documentation. If I were preparing again, I would definitely close that gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do questions from the preparation materials appear on the exam?
&lt;/h2&gt;

&lt;p&gt;A separate story is my attempt to “outsmart the system.” During preparation, I collected all the questions I came across in the learning modules and the practice exam, put them into Anki, and simply memorized them. I thought it would be a decent safety net: even if the questions were not repeated word for word, at least I would have the relevant facts firmly memorized. In practice, my subjective impression is that I did not see a single question repeated exactly on the real exam, and only one or two vaguely resembled something I had learned this way. So I would not recommend memorizing the correct answers; it is much more useful to use those questions as a way to check whether you actually understand the topic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Question formats
&lt;/h2&gt;

&lt;p&gt;Another mistake in my expectations about the GH-300 was assuming that the exam would mostly follow the classic format: one question, four answers, one correct choice. In reality, there are more formats. Some questions require you to choose two correct answers out of four or three out of five, some ask you to match items between two columns, and some require you to arrange several steps in the correct order. Personally, I found the last type to be one of the trickiest because it is no longer enough to “roughly remember the correct answer” — you need to understand the process itself.&lt;/p&gt;

&lt;p&gt;Statistically, you can feel the difference too. In a standard multiple-choice question with four options, you at least have a 25% chance of guessing correctly if you know absolutely nothing. But when you need to choose several items from a set and then put them in the correct order, the number of possible combinations grows very quickly. That is why I would pay particular attention to how GitHub Copilot handles basic workflows: authentication, starting a new session, resuming a previous one, working with context, and common interaction scenarios. It is important not only to know that a feature exists, but to understand what happens step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  A final gift :)
&lt;/h2&gt;

&lt;p&gt;And finally, here is a small semi-joking life hack that I came up with for myself while preparing. Use this entirely at your own risk.&lt;/p&gt;

&lt;p&gt;If you are looking at a question where you have absolutely no idea which answer is correct and you are going to guess anyway, take a closer look at the longest option. In the practice materials, I repeatedly noticed a pattern: the correct answer is often written in a complete, careful way with all the necessary qualifications, while the incorrect options sometimes look as if, after writing the correct one, the author got a little tired of coming up with alternatives.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you don’t know which answer to choose, choose the longest one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I do not know how consistently this works on the real exam, and I definitely would not recommend using it as a substitute for knowledge. But if you are already in a situation where you have to guess anyway, at least you will have some kind of heuristic. I saw this pattern often enough in the practice questions to notice it.&lt;/p&gt;

&lt;p&gt;If I had to start preparing again today, I would spend less time memorizing ready-made answers and more time on three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;actually working with Copilot&lt;/li&gt;
&lt;li&gt;reading additional documentation&lt;/li&gt;
&lt;li&gt;understanding the product workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The learning path and the demo exam are useful, but I would treat them as a map of the topics rather than a simulation of the actual exam.&lt;/p&gt;

&lt;h2&gt;
  
  
  So,
&lt;/h2&gt;

&lt;p&gt;if you are preparing for the GH-300 right now, leave your questions in the comments.&lt;/p&gt;

&lt;p&gt;While my impressions are still as fresh as possible, I will try to answer everything I can.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>githubcopilot</category>
      <category>microsoft</category>
      <category>certification</category>
    </item>
    <item>
      <title>Chasing Tokens: I Renamed My Entire Repository — Here’s What Happened</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:11:14 +0000</pubDate>
      <link>https://dev.to/kotyk/chasing-tokens-i-renamed-my-entire-repository-heres-what-happened-5gg6</link>
      <guid>https://dev.to/kotyk/chasing-tokens-i-renamed-my-entire-repository-heres-what-happened-5gg6</guid>
      <description>&lt;p&gt;After optimizing my &lt;a href="https://dev.to/kotyk/easy-way-to-save-your-ai-coding-agent-a-surprising-amount-of-context-2h0"&gt;CI logs for AI agents&lt;/a&gt;, I found myself looking for tokens everywhere.&lt;/p&gt;

&lt;p&gt;Then I had another idea.&lt;/p&gt;

&lt;p&gt;Many of my files and directories used &lt;code&gt;kebab-case&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My assumption was simple: if &lt;code&gt;-&lt;/code&gt; increases token count, then switching everything to &lt;code&gt;camelCase&lt;/code&gt; might reduce the amount of context an AI agent has to process.&lt;/p&gt;

&lt;p&gt;So instead of guessing, I measured it.&lt;/p&gt;

&lt;p&gt;I wrote a script to tokenize my entire repository before and after renaming every &lt;code&gt;kebab-case&lt;/code&gt; path to &lt;code&gt;camelCase&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository before:&lt;/strong&gt; 376,553 tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository after:&lt;/strong&gt; 376,204 tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total reduction:&lt;/strong&gt; &lt;strong&gt;349 tokens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Honestly? That was much smaller than I expected.&lt;/p&gt;

&lt;p&gt;At first glance, this looks like a classic micro-optimization. But I don't think the story ends there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why File Paths Matter More Than You Think
&lt;/h2&gt;

&lt;p&gt;Unlike source code, file and directory names have a very different lifecycle during an AI coding session. &lt;/p&gt;

&lt;p&gt;An agent doesn't read them just once. They appear repeatedly in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imports and exports&lt;/li&gt;
&lt;li&gt;directory listings&lt;/li&gt;
&lt;li&gt;search results&lt;/li&gt;
&lt;li&gt;git diffs&lt;/li&gt;
&lt;li&gt;stack traces&lt;/li&gt;
&lt;li&gt;test output&lt;/li&gt;
&lt;li&gt;formatter and linter logs&lt;/li&gt;
&lt;li&gt;tool responses from the IDE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, file paths are part of the agent's working context over and over again.&lt;/p&gt;

&lt;p&gt;So while the repository itself became only &lt;strong&gt;349 tokens&lt;/strong&gt; smaller, the cumulative savings across a long coding session could be noticeably larger because those same paths are processed repeatedly.&lt;/p&gt;

&lt;p&gt;I haven't measured that part yet, so I won't claim any specific numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This experiment reminded me of something more important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Measure first. Optimize second.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some optimizations that sound brilliant turn out to be negligible. Others—like reducing unnecessary tool output—have a much larger impact than you'd expect.&lt;/p&gt;

&lt;p&gt;AI-assisted development is creating a whole new class of performance optimizations. The only way to know which ones matter is to measure them.&lt;/p&gt;




&lt;p&gt;What micro-optimizations have you tested for your AI coding agents? Did they actually move the needle, or did the data surprise you? Let me know in the comments!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>claude</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>💥 Easy way to save your AI coding agent a surprising amount of context.</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:07:28 +0000</pubDate>
      <link>https://dev.to/kotyk/easy-way-to-save-your-ai-coding-agent-a-surprising-amount-of-context-2h0</link>
      <guid>https://dev.to/kotyk/easy-way-to-save-your-ai-coding-agent-a-surprising-amount-of-context-2h0</guid>
      <description>&lt;p&gt;One thing clicked for me only after working with AI agents for a while.&lt;/p&gt;

&lt;p&gt;Like many teams, I have a set of mandatory checks that must pass before code is committed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prettier&lt;/li&gt;
&lt;li&gt;ESLint&lt;/li&gt;
&lt;li&gt;Type checking&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also have a rule for my coding agent: whenever it makes executable code changes, it automatically runs all of these checks before moving on.&lt;/p&gt;

&lt;p&gt;Sounds obvious, right?&lt;/p&gt;

&lt;p&gt;The problem was that all of these tools were configured for humans, not for AI.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prettier printed every file it checked - even when nothing changed.&lt;/li&gt;
&lt;li&gt;The type checker produced verbose success output.&lt;/li&gt;
&lt;li&gt;The test runner listed every executed test file.&lt;/li&gt;
&lt;li&gt;ESLint printed a lot of informational output even when everything passed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then it hit me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every line of that output becomes part of the agent's working context.&lt;br&gt;
Those hundreds of log lines aren't free. They consume context, increase token usage, and make it harder for the model to focus on information that actually matters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Fixing the Noise
&lt;/h2&gt;

&lt;p&gt;So I changed the defaults:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prettier&lt;/strong&gt; runs silently unless there's a formatting issue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESLint&lt;/strong&gt; only reports warnings and errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests&lt;/strong&gt; use a dot reporter and print detailed output only for failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Successful checks&lt;/strong&gt; produce only a short summary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;p&gt;Exactly the same safety guarantees, but with dramatically less noise.&lt;/p&gt;

&lt;p&gt;For humans, verbose logs are mostly harmless. For AI agents, they're context pollution.&lt;/p&gt;

&lt;p&gt;And context isn't free. Every unnecessary token is one that could have been spent reasoning about your code instead.&lt;/p&gt;

&lt;p&gt;Sometimes the best optimization isn't a faster model—it's simply giving the model less irrelevant information to read.&lt;/p&gt;


&lt;h2&gt;
  
  
  Appendix: For those who prefer numbers over opinions
&lt;/h2&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
I rolled the repository back and measured the raw output with a tokenizer:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prettier output:&lt;/strong&gt; ~15,000 tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test runner output:&lt;/strong&gt; ~35,000 tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After enabling silent output and compact reporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prettier:&lt;/strong&gt; ~500 tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test runner:&lt;/strong&gt; ~1,500 tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;That is roughly 48,000 tokens removed from a single validation cycle&lt;/strong&gt;—without removing a single check or weakening the pipeline.&lt;br&gt;

&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;Same guarantees. Far less context pollution.&lt;/p&gt;




&lt;p&gt;What configuration tweaks have you made to keep your AI coding agents focused? Let me know in the comments!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>claude</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>AI Melting Your Brain? Here’s the Fix.</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:03:18 +0000</pubDate>
      <link>https://dev.to/kotyk/ai-melting-your-brain-heres-the-fix-5cdd</link>
      <guid>https://dev.to/kotyk/ai-melting-your-brain-heres-the-fix-5cdd</guid>
      <description>&lt;p&gt;A few weeks ago, I came across a post from a developer who had spent six months working with five or six Claude Code terminals open at once. His description of the experience was funny, but also uncomfortably familiar: most of the time, he was simply waiting for agents to finish and pressing Enter.&lt;/p&gt;

&lt;p&gt;His conclusion was blunt: “Claude Code is melting my brain.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffyvq0tvblvum64b3l4ue.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffyvq0tvblvum64b3l4ue.jpeg" alt="A screenshot of a terminal interface or discussion regarding AI coding agents" width="800" height="925"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve been seeing variations of this concern more and more often. Developers who use AI heavily start wondering whether they are becoming less sharp because the machine is doing too much of the actual coding. At the same time, another term has started appearing in discussions around AI-assisted development: comprehension debt.&lt;/p&gt;

&lt;p&gt;I think that term captures the problem remarkably well.&lt;/p&gt;

&lt;p&gt;Technical debt appears when a codebase accumulates decisions that will have to be dealt with later. Comprehension debt appears when the codebase evolves faster than the people responsible for it can maintain a mental model of what is happening inside it. The software keeps moving forward, but your understanding of it falls further and further behind.&lt;/p&gt;

&lt;p&gt;Eventually, you can end up in a strange position: you are responsible for a system that you technically own, but no longer fully understand.&lt;/p&gt;

&lt;p&gt;These look like two different problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI making developers “dumber”&lt;/li&gt;
&lt;li&gt;AI creating comprehension debt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;... but I suspect they are mostly the same problem viewed from two angles. And, more importantly, I think they have the same solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem is not AI. The problem is you going full auto.
&lt;/h2&gt;

&lt;p&gt;There is a peculiar productivity competition happening in software engineering right now. Every week I see another impressive number: hundreds of thousands of lines generated, thousands of commits, dozens of agents running in parallel, or thousands of pull requests produced by AI-assisted development pipelines.&lt;/p&gt;

&lt;p&gt;Uber, for example, has publicly discussed an internal AI coding system producing roughly 1,800 pull requests per week (1 PR each 80 seconds).&lt;/p&gt;

&lt;p&gt;That is certainly an impressive throughput number. But whenever I see metrics like this, I find myself asking a slightly uncomfortable question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What exactly are we optimizing?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A pull request is a unit of software delivery. It is not a unit of product value.&lt;/p&gt;

&lt;p&gt;A software product is, at some level, encoded business logic. Its purpose is to solve problems: make something easier for a user, automate a process, reduce costs, create revenue, satisfy a regulatory requirement, improve reliability, or enable some new capability.&lt;/p&gt;

&lt;p&gt;So the interesting question is not how quickly an organization can manufacture changes to a repository. The interesting question is how quickly it can discover, validate and deliver meaningful changes to the product.&lt;/p&gt;

&lt;p&gt;Imagine someone tells you that their AI workflow can generate a thousand PRs in a relatively short period of time. Fine. Now ask them a different question: can you name the next important feature your product needs—right now?&lt;/p&gt;

&lt;p&gt;And I don’t mean something sitting in the backlog already. I mean a genuinely new requirement. Something that has been validated rather than hallucinated by AI. Something supported by customer feedback, user behavior, business analysis, stakeholder needs, market research or other evidence that suggests building it will actually create value.&lt;/p&gt;

&lt;p&gt;That is much harder. And definitely not possible at the rate of 1 feature per 80 seconds.&lt;/p&gt;

&lt;p&gt;The reason is simple: once implementation becomes extremely fast, implementation stops being the primary bottleneck. Product discovery does not suddenly become a hundred times faster because your coding agent did. Neither do requirements analysis, UX research, architectural reasoning, stakeholder alignment or understanding what customers actually need.&lt;/p&gt;

&lt;p&gt;At some point, enough is enough.&lt;/p&gt;

&lt;p&gt;There is a finite amount of meaningful change that a product can discover, validate, absorb and maintain. Once AI gives us effectively abundant implementation capacity, maximizing the amount of code produced becomes a strange goal in itself.&lt;/p&gt;

&lt;p&gt;And this is where I think full-auto development becomes dangerous. Not necessarily because AI writes bad code, but because execution can begin moving faster than understanding.&lt;/p&gt;

&lt;p&gt;That is where comprehension debt starts accumulating.&lt;/p&gt;

&lt;h2&gt;
  
  
  My approach: Semi-Automatic AI-Native Development
&lt;/h2&gt;

&lt;p&gt;The workflow I use has a deliberately cumbersome name: Semi-Automatic AI-Native Development with Human in the Loop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/kotyk/stop-asking-ai-to-do-a-linters-job-1cp0"&gt;I described the broader workflow in another article&lt;/a&gt;, so I won’t repeat the whole thing here. The important part for this discussion is the human in the loop.&lt;/p&gt;

&lt;p&gt;I almost never use AI in full-auto mode for meaningful development work. I use it aggressively, but I try to be very deliberate about which part of engineering I delegate.&lt;/p&gt;

&lt;p&gt;For me, AI is an extremely fast electronic typewriter, an implementation engine, a research assistant, a second opinion and a tool for validating assumptions. What I do not want it to become is a replacement for engineering judgment.&lt;/p&gt;

&lt;p&gt;Before I ask an agent to implement something, I try to define the system it is going to operate inside as precisely as the task justifies. Depending on the feature, that means thinking through types, validation rules, business requirements, functional behavior, file structure, data flow, relationships between modules, API contracts, architectural boundaries and test expectations.&lt;/p&gt;

&lt;p&gt;And one thing I care about particularly strongly is semantics.&lt;/p&gt;

&lt;p&gt;What does this entity actually represent? Who owns this state? Where does this transformation belong? What responsibility does this module have? What does this abstraction mean in terms of the domain? Which concepts are genuinely different, and which are merely different names for the same thing?&lt;/p&gt;

&lt;p&gt;Those questions are not formatting preferences. They are architecture.&lt;/p&gt;

&lt;p&gt;Once those constraints are clear, AI can do what it is extraordinarily good at: execute quickly inside them.&lt;/p&gt;

&lt;p&gt;Recently I came across a post from Robert "Uncle Bob" Martin that described a surprisingly similar philosophy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70kj4ztyx9il0vkchvqd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70kj4ztyx9il0vkchvqd.jpeg" alt="A reference graphic illustrating architectural constraints in AI workflows" width="800" height="974"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;His approach is more extreme than mine. He says he does not read the code generated by his agents; instead, he surrounds those agents with extensive constraints: unit tests, Gherkin tests, QA procedures, quality metrics, mutation testing, coverage and many other forms of automated verification.&lt;/p&gt;

&lt;p&gt;I do still read AI-generated code. But the underlying idea resonates with me: the engineer’s job increasingly becomes designing the environment in which automated implementation is allowed to happen.&lt;/p&gt;

&lt;p&gt;You create the constraints. You define the architecture. You specify the semantics. Then you let the machine move quickly inside that system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I still review the code
&lt;/h2&gt;

&lt;p&gt;When people argue that developers should review AI-generated code, the usual explanation is safety: AI can hallucinate, misunderstand a requirement, introduce a security problem or simply produce incorrect code.&lt;/p&gt;

&lt;p&gt;All of that is true. But for me, there is another reason that is at least as important.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The generated code is feedback on the architecture I designed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before implementation begins, an architecture is partly a hypothesis. I believe these responsibilities belong in these modules. I believe this abstraction is sufficiently general. I believe this data flow is clean. I believe this type model represents the domain correctly. I believe these boundaries will continue to make sense when the next requirement arrives.&lt;/p&gt;

&lt;p&gt;Then the AI implements the feature at high speed, and that hypothesis collides with reality.&lt;/p&gt;

&lt;p&gt;Perhaps the abstraction turns out to be awkward. Perhaps data starts leaking across boundaries that were supposed to be clean. Perhaps a type requires exceptions everywhere. Perhaps two concepts that looked independent are much more tightly coupled than expected. Perhaps the agent repeatedly struggles with one particular part of the design.&lt;/p&gt;

&lt;p&gt;Those are not merely implementation problems. They are signals.&lt;/p&gt;

&lt;p&gt;When I review the result, I am not only checking whether the agent wrote acceptable code. I am checking whether my model of the system survived implementation.&lt;/p&gt;

&lt;p&gt;That creates an extraordinarily powerful learning loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI can make you learn faster, not slower
&lt;/h2&gt;

&lt;p&gt;This is the part of AI-assisted development that I think gets far less attention than it deserves.&lt;/p&gt;

&lt;p&gt;Without AI, much of a developer’s working day is consumed by execution. You design something, then spend hours or days typing it into existence. You write boilerplate. You perform repetitive refactorings. You search through documentation. You implement the twentieth variation of a pattern you already understand.&lt;/p&gt;

&lt;p&gt;AI can compress a huge percentage of that execution time.&lt;/p&gt;

&lt;p&gt;If you keep yourself inside the reasoning loop, the time you save does not have to disappear. It can be reinvested into the parts of software engineering where the real intellectual work happens: architecture, modeling, semantics, constraints, trade-offs and validation.&lt;/p&gt;

&lt;p&gt;My workflow increasingly looks like this:&lt;/p&gt;

&lt;p&gt;Design → constrain → let AI execute → inspect the result → learn → adjust the design.&lt;/p&gt;

&lt;p&gt;Then another requirement arrives and the loop starts again.&lt;/p&gt;

&lt;p&gt;The interesting part is the speed. Suppose I design an architectural approach and implementing enough of it to discover its weaknesses would traditionally take several weeks. With an agent, I may get that feedback in hours. Sometimes much faster.&lt;/p&gt;

&lt;p&gt;That means AI does not merely accelerate implementation. Used this way, it accelerates the architecture-feedback loop.&lt;/p&gt;

&lt;p&gt;You make a design decision. Reality tests it almost immediately. You learn. Then you make another design decision.&lt;/p&gt;

&lt;p&gt;Do that repeatedly and something interesting happens: instead of spending most of your time exercising your ability to type code, you spend much more of it exercising your ability to design systems.&lt;/p&gt;

&lt;p&gt;That is almost the opposite of “AI melting your brain.”&lt;/p&gt;

&lt;p&gt;It is closer to deliberate practice for software architecture, with an implementation engine attached.&lt;/p&gt;

&lt;p&gt;Of course, this only works if you actually stay in the loop. If you delegate the decisions, delegate the implementation, accept the output and move directly to the next prompt, the mechanism reverses. AI keeps learning about your codebase while you gradually stop doing so.&lt;/p&gt;

&lt;p&gt;That is comprehension debt.&lt;/p&gt;

&lt;h2&gt;
  
  
  I probably won’t generate 1,800 PRs a week. That’s fine.
&lt;/h2&gt;

&lt;p&gt;A semi-automatic workflow with deliberate human involvement is obviously slower than telling a swarm of agents to modify a repository as quickly as possible.&lt;/p&gt;

&lt;p&gt;That does not bother me.&lt;/p&gt;

&lt;p&gt;I want to produce exactly as much code as meaningful product development requires. If AI makes me capable of implementing useful changes faster than a product organization can discover and validate those changes, I have already won. More implementation throughput beyond that point has rapidly diminishing value.&lt;/p&gt;

&lt;p&gt;The objective of software engineering is not to maximize the amount of software produced. It is to solve useful problems with software.&lt;/p&gt;

&lt;p&gt;AI gives us an extraordinary opportunity to remove a large amount of mechanical work from that process. I think the mistake would be to remove ourselves from the intellectual work at the same time.&lt;/p&gt;

&lt;p&gt;So yes, review the code. It may contain bugs. It may contain security issues. It may misunderstand your requirements. Those are all perfectly good reasons.&lt;/p&gt;

&lt;p&gt;But review it for another reason too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review it because it tells you whether your architecture was right.&lt;/li&gt;
&lt;li&gt;Review it because it forces you to maintain a mental model of the system you are responsible for.&lt;/li&gt;
&lt;li&gt;Review it because every implementation is an experiment, and every experiment gives you feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if AI can run those experiments dramatically faster than before, perhaps the technology that supposedly makes developers stop thinking can—used correctly—make us learn faster than we ever could before.&lt;/p&gt;

&lt;p&gt;There is one line from Uncle Bob’s recent posts that summarizes the responsibility better than anything I could add:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffqw5kgm5786hbdnzydse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffqw5kgm5786hbdnzydse.png" alt="An inspirational quote graphic about engineering accountability" width="799" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is the point.&lt;/p&gt;

&lt;p&gt;You are not the engineer because you typed every line of code. You are not the engineer because you can explain every keystroke that created the repository. And you are certainly not the engineer because your AI generated more pull requests than somebody else’s.&lt;/p&gt;

&lt;p&gt;You are the engineer because you are accountable for the system that comes out the other side.&lt;/p&gt;




&lt;h3&gt;
  
  
  What do you think?
&lt;/h3&gt;

&lt;p&gt;How are you managing the balance between AI speed and system comprehension in your codebase? Do you use a human-in-the-loop workflow, or have you experimented with full-auto agents? Let me know in the comments below!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>Stop asking AI to do a linter’s job.</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Mon, 10 Aug 2026 14:56:28 +0000</pubDate>
      <link>https://dev.to/kotyk/stop-asking-ai-to-do-a-linters-job-1cp0</link>
      <guid>https://dev.to/kotyk/stop-asking-ai-to-do-a-linters-job-1cp0</guid>
      <description>&lt;p&gt;I have developed a workflow that I call:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A semi-automated, AI-native development flow with a human in the loop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may sound like a collection of AI buzzwords, but each part represents a very practical principle.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Semi-automated
&lt;/h2&gt;

&lt;p&gt;If a task can be performed reliably by a simple script, it should not be delegated to AI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want consistently formatted code? Configure Prettier.&lt;/li&gt;
&lt;li&gt;Want custom naming conventions, import restrictions, or architectural constraints? Configure ESLint or write a custom rule.&lt;/li&gt;
&lt;li&gt;Want consistent formatting across different editors? Add an EditorConfig file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not make AI spend context and reasoning capacity checking indentation, semicolons, or naming conventions. Deterministic problems should have deterministic solutions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Here is a less obvious example.
&lt;/h4&gt;

&lt;p&gt;I have written several thousand unit tests for my current project. As a perfectionist and former QA engineer, I care about how elements are selected in tests.&lt;/p&gt;

&lt;p&gt;Whenever possible, tests should use accessible selectors first, such as roles and accessible names. A test ID should only be used as a fallback.&lt;/p&gt;

&lt;p&gt;Initially, I treated this as something AI should remember, while I would catch mistakes during code review.&lt;/p&gt;

&lt;p&gt;But I noticed that I was correcting the same issue far too often.&lt;/p&gt;

&lt;p&gt;So I asked myself:&lt;/p&gt;

&lt;p&gt;Why am I repeatedly reviewing something that can be checked automatically?&lt;br&gt;
I wrote a custom lint rule.&lt;/p&gt;

&lt;p&gt;A few lines of code solved the problem permanently.&lt;/p&gt;

&lt;p&gt;Now the linter knows the required selector priority and reports violations automatically.&lt;/p&gt;

&lt;p&gt;The best part is that AI fixes these issues in virtually every case.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because running the project’s validation procedures is mandatory in my workflow. Even when AI makes a mistake, it runs the linter, receives a precise error message, and corrects the code.&lt;/p&gt;

&lt;p&gt;That is what “semi-automated” means to me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI handles tasks that require reasoning.&lt;br&gt;
Scripts handle tasks that require consistency.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. AI-native
&lt;/h2&gt;

&lt;p&gt;A repository can be structured primarily for human convenience, or it can be structured so that both humans and AI can navigate it efficiently.&lt;/p&gt;

&lt;p&gt;An AI-native repository treats context as a limited engineering resource.&lt;/p&gt;

&lt;p&gt;Some developers are familiar with &lt;strong&gt;code golf&lt;/strong&gt;: solving a problem using the fewest possible characters.&lt;/p&gt;

&lt;p&gt;AI-native development is not exactly code golf, but the underlying constraint is similar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every token has a cost.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This does not mean compressing the code until it becomes unreadable. It means finding a balance between readability, consistency, and context efficiency.&lt;/p&gt;

&lt;p&gt;Project standardization plays a major role here.&lt;/p&gt;

&lt;p&gt;One component should not use a completely different structure, style, or paradigm from another component without a good reason.&lt;/p&gt;

&lt;p&gt;Reusable abstractions should be clearly defined and used consistently.&lt;/p&gt;

&lt;p&gt;This allows AI to find an existing implementation, understand it as the project standard, and use it as a reliable reference.&lt;/p&gt;

&lt;p&gt;Another important principle is what I call &lt;strong&gt;context segregation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A feature should be divided into meaningful files so that AI can load only the context required for the current task.&lt;/p&gt;

&lt;p&gt;For example, a test implementation may have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the test file itself&lt;/li&gt;
&lt;li&gt;fixtures&lt;/li&gt;
&lt;li&gt;mocks&lt;/li&gt;
&lt;li&gt;setup utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes the setup is larger than the actual test suite.&lt;/p&gt;

&lt;p&gt;When I only need AI to inspect test names or understand what behavior is covered, there is no reason to feed the entire setup into its context.&lt;/p&gt;

&lt;p&gt;I use colocated suffix files for this purpose. A larger feature can have several supporting files placed next to it, with clear suffixes describing their roles.&lt;/p&gt;

&lt;p&gt;Depending on the task, I can provide AI with exactly the files it needs—and nothing else.&lt;/p&gt;

&lt;p&gt;And please, use barrel exports where they make architectural sense.&lt;/p&gt;

&lt;p&gt;There is no reason to repeatedly feed AI long absolute import paths when a stable public module API can expose the same components with fewer tokens and less coupling.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Human in the loop
&lt;/h2&gt;

&lt;p&gt;The internet currently seems obsessed with fully autonomous pipelines where an agent writes code around the clock without human participation.&lt;/p&gt;

&lt;p&gt;Maybe I am old-fashioned, but I am highly skeptical of that approach.&lt;/p&gt;

&lt;p&gt;I could list many examples of what AI misunderstands, what must be reviewed, and where autonomous implementations fail.&lt;/p&gt;

&lt;p&gt;But there is one issue that matters more than all the others:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you remove yourself from the process, you stop &lt;strong&gt;LEARNING&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;You are no longer collecting feedback.&lt;/li&gt;
&lt;li&gt;You are no longer examining what AI understands and what it misunderstands.&lt;/li&gt;
&lt;li&gt;You do not see which instructions work, which create confusion, where AI is fast, where it struggles, or where an additional tool could eliminate an entire category of mistakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, you lose the data required to improve your own development framework.&lt;/p&gt;

&lt;p&gt;Here is my favorite example.&lt;/p&gt;

&lt;p&gt;At one point, I created what I believed was the perfect AI development process.&lt;/p&gt;

&lt;p&gt;I reviewed every instruction repeatedly. I refined every detail. I was convinced that the framework was exceptionally well designed.&lt;/p&gt;

&lt;p&gt;Then I used it in production.&lt;/p&gt;

&lt;p&gt;Within two months, the process went through five generations of fundamental changes—not counting dozens of smaller improvements.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because real-world usage generated feedback.&lt;/p&gt;

&lt;p&gt;I observed what failed, what created unnecessary work, what AI interpreted incorrectly, and what could be automated more effectively.&lt;/p&gt;

&lt;p&gt;No matter how good your prompt, instruction set, agent configuration, or MCP setup appears, you do not have objective evidence that it works until you observe it under real production conditions.&lt;/p&gt;

&lt;p&gt;That is why my workflow keeps a human in the loop.&lt;/p&gt;

&lt;p&gt;Not merely to approve AI-generated code.&lt;/p&gt;

&lt;p&gt;But to learn from every iteration and continuously improve the system producing that code.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>githubcopilot</category>
      <category>claude</category>
    </item>
    <item>
      <title>A New AI Paradigm: The Billion-Dollar Blind Spot</title>
      <dc:creator>Mykola Mizhigurskiy</dc:creator>
      <pubDate>Wed, 21 May 2025 11:55:36 +0000</pubDate>
      <link>https://dev.to/kotyk/a-new-ai-paradigm-the-billion-dollar-blind-spot-2h5d</link>
      <guid>https://dev.to/kotyk/a-new-ai-paradigm-the-billion-dollar-blind-spot-2h5d</guid>
      <description>&lt;h1&gt;
  
  
  A New AI Paradigm: The Billion-Dollar Blind Spot
&lt;/h1&gt;

&lt;p&gt;Modern AI systems are excellent at detecting toxicity, abuse, radicalization.&lt;br&gt;&lt;br&gt;
But there's a blind spot — and it's costing us billions:&lt;/p&gt;

&lt;p&gt;They can't detect brilliance.&lt;/p&gt;

&lt;p&gt;Every day, millions of users interact with AI. Among them,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 in 10,000 may hold a breakthrough idea.
&lt;/li&gt;
&lt;li&gt;1 in 100,000 may be modeling the future of society, science, or intelligence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But all of that signal vanishes.&lt;br&gt;&lt;br&gt;
No system is designed to surface it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter SVITLO
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SVITLO&lt;/strong&gt; (Signal of Visionary Ideas Through Latent Observation) is a protocol that proposes a new direction:&lt;/p&gt;

&lt;p&gt;➡️ Not just detecting threats&lt;br&gt;&lt;br&gt;
➡️ But detecting &lt;strong&gt;insight&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
➡️ Surface-level agnostic, cognition-focused&lt;/p&gt;

&lt;p&gt;It doesn't require new infrastructure.&lt;br&gt;&lt;br&gt;
It builds on existing analytics pipelines and reorients them from defense to discovery.&lt;/p&gt;

&lt;p&gt;What if your model could say:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This interaction shows signs of exceptional thought. Would you like to be seen?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Identifying overlooked talent
&lt;/li&gt;
&lt;li&gt;Spotting founder-level thinkers
&lt;/li&gt;
&lt;li&gt;Building archives of visionary insight
&lt;/li&gt;
&lt;li&gt;Enhancing alignment, recruitment, and impact&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;📖 Full manifesto on GitHub:&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/KiT-Maverik/svitlo" rel="noopener noreferrer"&gt;SVITLO manifest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, forks, and discussion welcome.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>futurechallenge</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
