<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Margarita Zakharova on Medium]]></title>
        <description><![CDATA[Stories by Margarita Zakharova on Medium]]></description>
        <link>https://medium.com/@m.zakharova?source=rss-bbf32e6d21b3------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*_6kNeWVPzUt_laRWMg0MvA.jpeg</url>
            <title>Stories by Margarita Zakharova on Medium</title>
            <link>https://medium.com/@m.zakharova?source=rss-bbf32e6d21b3------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 17 Oct 2026 08:25:23 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@m.zakharova/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Why pnpm Exists: Rethinking node_modules]]></title>
            <link>https://medium.com/andersen-it-community/why-pnpm-exists-rethinking-node-modules-9c5d56e0bdb1?source=rss-bbf32e6d21b3------2</link>
            <guid isPermaLink="false">https://medium.com/p/9c5d56e0bdb1</guid>
            <category><![CDATA[node-modules]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[npm]]></category>
            <category><![CDATA[pnpm]]></category>
            <dc:creator><![CDATA[Margarita Zakharova]]></dc:creator>
            <pubDate>Thu, 15 Oct 2026 09:37:39 GMT</pubDate>
            <atom:updated>2026-10-15T09:37:39.548Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xmDhpvN-qDbyyCxD7AHPEg.png" /><figcaption>Why pnpm Exists: Rethinking node_modules</figcaption></figure><p>If you work with JavaScript or TypeScript, <em>npm install</em> was probably one of the first commands you learned. It is simple, familiar, and, most importantly, it works.</p><p><em>So why would anyone create another package manager?</em></p><p>Let’s find out.</p><h3>What npm actually does</h3><p>NPM, short for Node Package Manager, is the default package manager for Node.js, which solves many of the problems that developers faced a decade ago. It provides lockfiles, workspaces, security auditing, and multiple installation strategies.</p><p>At a high level, npm takes the dependency information from your package.json and lockfile and uses it to build the <strong>node_modules</strong> directory on your disk:</p><ul><li>npm determines which packages are required;</li><li>which versions of those packages should be installed;</li><li>where each package should live inside node_modules.</li></ul><p>The tricky part is that dependencies can overlap. If two packages require the same version of a dependency, npm can usually install a single copy and let both packages share it. But if they require different versions, npm may need to install multiple copies of that dependency.</p><p>To minimize this duplication:</p><ul><li>npm uses hoisting: when a dependency can be safely shared, npm moves it higher in the node_modules tree. This allows multiple packages to resolve the dependency from the same location.</li><li>npm dedupe command: it can reorganize the installed dependency tree. It allows packages to share dependencies whenever possible.</li></ul><p>In other words, npm is not simply copying every dependency into node_modules. It is solving a dependency-resolution problem: it must find a directory structure that satisfies the entire dependency graph while sharing as many packages as possible and avoiding unnecessary duplication.</p><p>And that’s where the real complexity begins.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L6m6sOJzV8vho_60LyK-Pg.jpeg" /><figcaption>Inside npm</figcaption></figure><h3>The hidden cost of node_modules</h3><p>The traditional node_modules layout is convenient, but it has two important drawbacks.</p><h3>1. Dependencies can be duplicated</h3><p>Real dependency graphs often contain different versions of the same package. With hundreds of dependencies, this can produce many files and filesystem operations, especially when installing in CI, switching branches, or working across multiple applications.</p><h3>2. Hoisting can hide missing dependencies</h3><p>Suppose your application declares package-a, and package-a depends on lodash. Your application does not declare lodash itself. Because of hoisting, the root node_modules might still contain it, allowing the application to import it.</p><p>This is a <strong>phantom dependency</strong>: the application uses a package that it never declared.</p><p>The problem appears when package-a changes and no longer depends on lodash. The application can suddenly fail with Cannot find module ‘lodash’. Nothing in the application changed; it was relying on another package’s internal dependency.</p><p>Thus, while node_modules is convenient, hoisting can make dependency boundaries less explicit.</p><p>So node_modules is convenient, but that convenience comes with a cost: <strong>duplicated files, filesystem work, and dependencies that can appear to exist when they don’t actually belong to your project.</strong></p><h3>So what exactly is pnpm?</h3><p>pnpm, short for Performant npm, is another package manager for the Node.js ecosystem. Its key idea is a <strong>content-addressable store</strong>.</p><p>Imagine three projects all using the same version of React. Instead of maintaining three independent physical copies, pnpm stores the package contents in a shared store and reuses them across projects.</p><p>When a project needs those files, pnpm can create <strong>hard links</strong> to the store instead of copying the data. A hard link lets multiple paths refer to the same underlying data, so many projects can reuse the same package files.</p><p>This saves disk space.</p><h3>Hard links and symlinks</h3><p>Hard links solve the storage problem, but pnpm also needs Node.js to resolve dependencies correctly. This is where <strong>symbolic links</strong>, or symlinks, are used.</p><p>The core idea is:</p><p><strong>Hard links → reuse package data;</strong></p><p><strong>symlinks → construct the dependency graph.</strong></p><p>Node.js does not require dependencies to physically exist in a traditional flat node_modules directory. pnpm uses Node’s module-resolution behavior to create a different layout while remaining compatible.</p><p>This also helps solve phantom dependencies:</p><ul><li>a package can access the dependencies it declares;</li><li>the application does not automatically gain access to every transitive dependency;</li><li>package.json becomes a more accurate description of what the application actually needs.</li></ul><h3>Installation and reuse</h3><p>Conceptually, pnpm installation has three stages:</p><ol><li>Resolve dependencies.</li><li>Calculate the required directory structure.</li><li>Link dependencies from the store into node_modules.</li></ol><p>If you delete node_modules and run pnpm install again, packages already present in the store can be reused rather than downloaded and copied from scratch.</p><h3>Monorepos and shared projects</h3><p>If several applications share packages such as React, TypeScript, ESLint, or Vite, a traditional setup can store the same package files repeatedly. With pnpm, each project still has its own dependency structure, while the underlying files can be shared through the common store.</p><p>This is especially useful with <strong>monorepos</strong>: pnpm workspaces allow applications and shared packages to coexist in one dependency graph and link local packages directly.</p><h3>Reproducibility</h3><p>Another important benefit is predictable dependency resolution.</p><p>Suppose package.json contains: “some-library”: “³.0.0”</p><p>The ^ range allows multiple compatible releases. Without a lockfile, the resolved dependency tree can change as new versions are published.</p><p>Lockfiles solve much of this problem by recording the actual resolution. npm uses package-lock.json; pnpm uses pnpm-lock.yaml. The lockfile records the resolved dependency graph, helping development and CI environments reproduce the same installation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*C5Ku3NpfhnoEQ3T2fdFvzw.avif" /><figcaption>Inside pnpm</figcaption></figure><h3>Is pnpm always faster?</h3><p>Not necessarily. Installation performance depends on cache state, network speed, dependency count, disk performance, CI environment, filesystem, and registry performance.</p><p>pnpm can have a significant advantage when packages are already available in its store because linking existing files can be cheaper than repeatedly copying them. But a completely new dependency graph still has to be downloaded. There is no magic performance boost.</p><h3>What are the downsides?</h3><p>pnpm has trade-offs.</p><p><strong>First, some tooling expects flat node_modules.</strong> Older tools may assume dependencies are hoisted into the root directory. pnpm’s isolated layout can expose these assumptions, although configuration options can help with legacy tooling.</p><p><strong>Second, migration can reveal broken dependency declarations.</strong> An old project may work with npm because it accidentally relies on a transitive dependency. Switching to pnpm can expose this missing declaration. That can be annoying, but it also fixes a real dependency-management problem.</p><p><strong>Third, filesystem behavior matters.</strong> pnpm relies on hard links and symlinks, so unusual filesystems, containers, or deployment platforms may impose restrictions. Production and CI environments should be tested before adopting pnpm everywhere.</p><h3>What about security?</h3><p>pnpm does not magically make JavaScript dependencies secure. A different filesystem layout cannot make a malicious package trustworthy.</p><p>Dependency isolation can improve dependency hygiene by making the graph more explicit, and pnpm supports auditing and overrides for vulnerable transitive dependencies. Still, <strong>dependency isolation ≠ dependency security</strong>. Production systems should continue to use lockfiles, vulnerability scanning, CI checks, dependency review, and careful monitoring.</p><h3>Should everyone use pnpm?</h3><p>The short answer is “No”.</p><p>For a small Node.js project with only a few dependencies, npm is perfectly reasonable. There is little value in adding complexity simply because another tool is fashionable.</p><p>pnpm becomes more attractive when you have many projects on one machine, large dependency trees, large monorepos, multiple applications sharing dependencies, significant CI installation costs, concerns about undeclared dependencies, or substantial node_modules disk usage.</p><p>For a large TypeScript monorepo, pnpm can be a compelling choice. For a tiny script, npm may be all you need.</p><h3>The bigger idea behind pnpm</h3><p>The interesting part of pnpm is not the command pnpm install. It is the question behind it:</p><p><em>Why should every project own another physical copy of the same dependency?</em></p><p>The traditional node_modules model prioritized simplicity and compatibility, but its costs become more visible as applications grow. pnpm stores package contents centrally, reuses them through hard links, and connects them into each project’s dependency graph with symlinks. Projects still behave as if they have their own dependencies, while the underlying data is shared and dependency boundaries remain explicit.</p><h3>Final thoughts</h3><p>npm is not bad. Modern npm has evolved considerably and provides many of the tools developers need. But its traditional hoisted node_modules model can lead to duplicated files, filesystem overhead, and dependencies that appear available even when they are not declared.</p><p>pnpm takes a different approach: it stores package contents centrally, reuses them through hard links, constructs dependency relationships with symlinks, and keeps dependency boundaries more explicit.</p><p>The result is not simply “npm, but faster.” It is a different model for installing and managing dependencies: sometimes the best optimization is to stop doing the expensive thing in the first place.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9c5d56e0bdb1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/andersen-it-community/why-pnpm-exists-rethinking-node-modules-9c5d56e0bdb1">Why pnpm Exists: Rethinking node_modules</a> was originally published in <a href="https://medium.com/andersen-it-community">Andersen IT Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Remote Test Runners: Essential Tool or Expensive Habit?]]></title>
            <link>https://medium.com/andersen-it-community/remote-test-runners-essential-tool-or-expensive-habit-8635d8ae632e?source=rss-bbf32e6d21b3------2</link>
            <guid isPermaLink="false">https://medium.com/p/8635d8ae632e</guid>
            <category><![CDATA[qa-engineering]]></category>
            <category><![CDATA[testing-strategies]]></category>
            <category><![CDATA[software-testing]]></category>
            <category><![CDATA[test-automation]]></category>
            <category><![CDATA[remotetesting]]></category>
            <dc:creator><![CDATA[Margarita Zakharova]]></dc:creator>
            <pubDate>Fri, 10 Apr 2026 14:18:58 GMT</pubDate>
            <atom:updated>2026-04-10T14:19:57.502Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZdkAMZQfU5xOeT-cV7OViw.png" /><figcaption>Remote Test Runners: Essential Tool or Expensive Habit?</figcaption></figure><h4><em>In 2026 — with mature CI pipelines, smarter test orchestration, and rising infrastructure costs — are remote test runners still worth it?</em></h4><p>I’m prеtty sure you’ve heard the following words at least once in your life: <em>“It works on my machine!”</em>.</p><p>You write a test, run it locally, and everything is fine, everything passes. Then your teammate runs the same test… and it fails. Differences in OS, browser versions, device configurations, or even network conditions can easily turn a stable test into a debugging hell.</p><p>That’s usually the moment when teams start looking at remote test devices. Cloud-based platforms likе <a href="https://saucelabs.com/">Sauce Labs</a>, <a href="https://www.browserstack.com/?utm_source=google&amp;utm_medium=cpc&amp;utm_platform=paidads&amp;utm_content=770554992389&amp;utm_campaign=Search-Brand-PL-EMEA-Des-Navigational-Beinc&amp;utm_campaigncode=Core+9067402&amp;utm_term=e+browserstack&amp;gad_source=1&amp;gad_campaignid=22920334244&amp;gbraid=0AAAAADD4yG3m8q04LbKCEZr7Lgo-B37ZK&amp;gclid=Cj0KCQjw37nNBhDkARIsAEBGI8NOY1gRqsFtQR71zPdWCz2j49g97WQkQd9WWR-byJANJBlEjo0jebAaAnbLEALw_wcB">BrowserStack</a>, or <a href="https://www.testmuai.com/automation-testing-platform/">LambdaTest</a> allow us to run automated tests on real devices and across multiple environments without relying only on local machine differences.</p><p>In theory, remote testing solves this <em>“works on my machine” </em>problem.</p><p>But in practice, things aren’t always that simple.</p><h3>What Are Remote Test Runners and How Do They Work?</h3><p>To understand remote test runners, it helps to compare them with traditional runs.</p><p>The simplest test approach is <strong>local execution</strong>: tests run directly on your machine or a single build server. This way provides fast feedback but quickly reaches its limits as the number of tests, browsers, or environments grows.</p><p>A more advancеd option is to have your <strong>own self-hosted environment</strong>. Tools like Selenium Grid distribute tests across multiple machines or containers. However, tеams still need to maintain the hardware, update browsers, and manage the infrastructure.</p><p><strong>Remote test runners</strong> take this idea a step further. Instead of maintaining infrastructure yourself, tests run on scalable cloud platforms. From a developer or QA engineer’s perspective the workflow is quite similar to running tests locally. But instead of connecting to a local WebDriver instance, the configuration simply points to a remote endpoint of the platform. Tests run there, and the results are returned to your pipeline. Your test code stays in the repository — only the execution happens somewhere else.</p><p><strong>When a test starts, the typical flow looks like this:</strong></p><ol><li>The framework sends commands to the remote infrastructure.</li><li>A virtual machinе, container, or real device is allocated.</li><li>A browser or mobile app session starts.</li><li>The test is executed step by step.</li><li>Logs, screenshots, and video recordings are collected.</li><li>Results are returned to the CI pipeline or test report.</li></ol><figure><img alt="WorkFlow of remote test runners" src="https://cdn-images-1.medium.com/max/1024/1*o-R1wjCyNae1bg9zUkuzfg.png" /><figcaption>What Are Remote Test Runners and How Do They Work?</figcaption></figure><h3>Why remote test runners became popular</h3><p>Remote testing became popular largely because modern development practices have changed.</p><p>One major factor was the adoption of <strong>CI/CD pipelines</strong>, where tests run continuously (and not occasionally before release). This naturally led to the idea of continuous testing — and with it, the need for infrastructure that can scale quickly without slowing down delivery.</p><p>Another challenge that influеnced was the<strong> growing number of</strong> browsers, devices, and OS <strong>combinations</strong>. Supporting multiple versions of them quickly became impractical to maintain locally.</p><p>The <strong>rise of distributed teams</strong> also contributed. When engineers work across different locations and machines, relying on a single shared environment becomes fragile.</p><p>All these lead us to the main advantages of remote test execution that made them such a common part of modern testing strategies.</p><figure><img alt="Feedback of the remote test runners from OLX senior manager" src="https://cdn-images-1.medium.com/max/763/1*O3rmLdHa_dpq1Teg1UQCoA.png" /><figcaption>Why remote test runners became popular</figcaption></figure><h3>Main Advantages of Remote Test Runners in 2026</h3><h4><em>Scalability and Speed</em></h4><p>One of the biggest advantages of remote test runners is the ability to run tests in parallel at scale.</p><p>When tests run on a single machine, execution is usually sequential or only slightly parallelized. That might work for small projects. But as test suites grow the execution time quickly becomes a problem (can easily take hours to complete).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/879/1*vm7pRsbnvmqs1UkRojmhBg.png" /></figure><p>Remote platforms solve this problem. It distributes tests across multiple machines, browsers, devices or environments simultaneously.</p><p>The impact can be hugе. Test suites that used tо run fоr hours now complete in minutes. That faster feedback loop allows teams to catch failures earlier, integrate tests sеamlessly into CI/CD pipelines, and ship updates more frequently with greater confidence.</p><h4><em>Cross-Browser and Cross-Device Coverage</em></h4><p>Another important advantagе is crоss-environment testing. Even a simple project may need to support multiple (and sometimes old) browser versions, mobile devices, different screen sizes, and various OS configurations.</p><p>Trying to maintain all these environments locally quickly becomes difficult. And remote testing platforms simplify this by providing large collections of browsers and devices on demand. Engineers can nоw just choose the required configuration and run tests without maintaining the infrastructure themselves.</p><p>This makes validating applications across different environments combinations much еasier and significantly more reliable.</p><h4><em>Real Devices — Not Just Emulators</em></h4><p>At the samе time, emulators and simulators (while useful during development) cannot perfectly reproduce the behavior of real hardware. Certain features appear only on physical devicеs: performance limitations, gesture interactions, hardware-specific actions, or device-specific browser behavior.</p><p>Because of this, access to real devices is essential. And remote testing platforms provide this access to pools of physical iOS and Android devices. This allows tеams to validate real user scenarios without maintaining their own mobile device farms.</p><figure><img alt="Amount of possible mobile devices" src="https://cdn-images-1.medium.com/max/1024/1*rNT87VyeCwcyRJK3wwkLBQ.png" /><figcaption>Real Devices — Not Just Emulators</figcaption></figure><h4><em>Support for Modern Testing Frameworks</em></h4><p>Another advantage is how naturally remote test runners fit into modern automation workflows. Most platforms support widely used frameworks such as Sеlеnium, Playwright, and Appium. In many cases switching tо remоte execution requires оnly configuratiоn changеs: you need to connect your framework to a remote endpoint instead of a local WebDriver — and there is no need to rеwrite existing tеsts.</p><p>Many platforms also provide built-in debugging tools such as session recordings, screenshots, logs, and network insights. Combined with CI/CD integration these features help teams investigate failures faster and reduce the time spent on debugging.</p><h4><em>AI-Powеred Insights and Automation</em></h4><p>Modеrn remotе testing platforms are also starting to integrate AI and machine learning. Thеsе features can аutomatically detect flaky tests, identify patterns in failures, prioritize high-risk arеas of the application, and even analyze logs, screеnshots, or session recordings to speed up debugging.</p><p>In practicе, these AI-assistеd tооls help tеаms improve test reliability, reduce manual investigation, and mаke smarter decisions abоut where tо focus their automation effоrts.</p><p>Taken together, these advantages explain why remote test runners became a common part of mоdern testing strategies. They prоvide scalability, environment diversity, and operational simplicity that would be difficult for most teams to maintain internally. Instead of maintaining infrastructure, teams can focus on imprоving test coverage and reliability. For many organizatiоns, avoiding the cost and maintenance of internal device farms is оne of the main reasons to adopt remоte testing.</p><p>However, like any engineering solution, remote testing also comes with drawbacks. Understanding those limitations is important before relying too heavily on remote infrastructure.</p><h3>What to Consider — Potential Drawbacks</h3><p>Ignoring limitations can lead to unexpected costs, unstable pipelines, or infrastructure choices that don’t scale well. Here are common challenges with remote testing platforms.</p><h4><em>Cost</em></h4><p>One of the first concerns teams usually notice is pricing. Most services use subscription-based models. And usually their costs depends on:</p><ul><li>the number of parallel test executions</li><li>access to real devices</li><li>debugging and reporting features</li><li>team size</li></ul><p>Ironically, parallel execution — a key advantage of remote testing — can also drive costs. More simultaneous tests usually require higher subscription tiers.</p><p>Real mobile devices are often priced higher than browsers or emulators, which means mobile-heavy test strategies can increase expenses further.</p><h4><em>Latency and Network Instability</em></h4><p>Latency is another factor that can influence remote test execution.</p><p>Remote tests run in data centers that are often located far from the development team or the CI infrastructure. Becausе of this, network communication introduces additional latency. Whilе the delay is usually small, it can bеcome noticeable when running large test suites.</p><p>Teams located far from the testing platform’s data centers may therefore experience slower test sessions compared to running tests locally.</p><p>Remotе exеcution also depеnds on network communication, which makes it naturally sensitive to connectivity issues. Temporary slowdowns, interruptions, or infrastructure problems can affect test stability and sometimes lead to flaky tеsts that are unrelated to the application itself.</p><p>Modern testing platforms try to minimize these risks, but they can still appear in complex pipelines with many parallel test sessions.</p><h4><em>Limited Availability of Devices</em></h4><p>Access to devices — one of the biggest advantages of remote testing platforms — can also become a bottleneck.</p><p>Physical devicеs are limited in resources, and virtual machines are limited by your subscription type. When multiple teams running tests on the same device or OS version they can encounter bottlenecks. To reduce waiting time, teams may need more parallel sessions or higher-tier subscriptions, gradually increasing operational costs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/423/1*_azvuIrb6eA2HRonG8TEkA.png" /><figcaption>Limited Availability of Devices</figcaption></figure><h4><em>Security and Confidentiality</em></h4><p>Security is another important consideration, especially for organizations that handle sensitive data. Tests on remote infrastructure may involve transmitting builds, logs, or test data through third-party environments. Although most platforms enforce strict security policies, some companies prefer hybrid strategies, keeping part of their testing internal to maintain control.</p><p>Thesе challenges don’t necessarily mean that remote test runners are the wrong choice. In many cases their advantages still outweigh the drawbacks. The key is understanding these limitations so teams can design balanced testing strategies instead of relying too heavily on a single platform.</p><h3>So, Are Remote Test Runners Worth It?</h3><p>Nowadays remote test runners are a common part of modern testing strategies — and for a good reason. They help teams scale execution, run tests across many environments’ configurations, and keep CI/CD feedback loops fast. They can truly significantly improve efficiency.</p><p>Howеvеr, it’s important to remember that remote infrastructure is not a silver bullet <em>(and no tool really is)</em>. Cloud exеcution doesn’t automatically fix flaky tests, poorly designed automation, or unrеliable pipelines. Tests that fail locally will likely remain unstable remotely, sometimes even more so because of network delays or infrastructure variability.</p><p>Remotе test runners are most valuable for projеcts with large regression suites, complеx cross-browser matrix and cross-device requirements, mobile-first products, or distributed teams. For smallеr projects or simpler test suites, local execution or a small sеlf-hosted grid may be more than enough.</p><p>The key is to use remote platforms thoughtfully, often as part of <strong>a hybrid strategy</strong>. This allows teams to benefit from scalability and broader test coverage without introducing unnecessary cost or complexity. Developers can still run quick checks, smoke tests, or small subsets of tests directly on their machines, getting faster feedback and reducing reliance on external infrastructure.</p><p>This balance helps tеams takе advantagе of scalable infrastructure while keeping development workflows fast and prеdictable.</p><p>Ultimately, remote test runners are best seen as a force multiplier — a tool that strengthens an already well-designed testing strategy. When used thoughtfully, they make automated testing faster, more reliable, and easier to scale. Their real value depends on how intentionally teams integrate them into their workflow.</p><h3>📲 Follow us on social media to stay updated on upcoming events:</h3><p><a href="https://www.instagram.com/andersencompany/?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=inst"><strong>Instagram</strong><br></a><a href="https://t.me/andersencompany?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=tg"><strong>Telegram</strong><br></a><a href="https://www.facebook.com/Andersensoft?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=fb"><strong>Facebook</strong></a></p><p><a href="https://people.andersenlab.com/vacancies?utm_source=medium&amp;utm_medium=article"><strong>💻Our open vacancies<br></strong></a><strong>📅</strong><a href="https://people.andersenlab.com/meetups-with-andersen-recaps?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=meetup"><strong>Upcoming meetups</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8635d8ae632e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/andersen-it-community/remote-test-runners-essential-tool-or-expensive-habit-8635d8ae632e">Remote Test Runners: Essential Tool or Expensive Habit?</a> was originally published in <a href="https://medium.com/andersen-it-community">Andersen IT Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Code What You Feel, Feel What You Code]]></title>
            <link>https://medium.com/andersen-it-community/code-what-you-feel-feel-what-you-code-0cf83f92dc12?source=rss-bbf32e6d21b3------2</link>
            <guid isPermaLink="false">https://medium.com/p/0cf83f92dc12</guid>
            <dc:creator><![CDATA[Margarita Zakharova]]></dc:creator>
            <pubDate>Wed, 20 Aug 2025 09:16:09 GMT</pubDate>
            <atom:updated>2025-08-22T13:23:49.943Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-7DS1zVY7q6BtJKCYV09_g.png" /><figcaption>Code What You Feel, Feel What You Code</figcaption></figure><p><em>Vibe Coding: A Revolution for Startups or a Trap for Developers?</em></p><p>It’s hard to find anyone in tech today who hasn’t at least heard the term “<strong><em>vibe coding</em></strong>”. Despite being coined only recently, in February 2025, the phrase has quickly gone viral across developer communities. It first surfaced on X (formerly Twitter) when OpenAI’s founder Andrej Karpathy used it to describe a new way of development where “<em>you fully give in to the vibes, embrace exponentials, and forget that the code even exists.</em>”.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0r1ugtTGcdLCyvg48OoIwA.png" /><figcaption>Andrej Karpathy’s post on X</figcaption></figure><p>Vibe coding is gaining hype fast. Some call it a meme, others see potential. So what’s really behind vibe coding?</p><h4>How it works</h4><p>Vibe coding shifts software development from “type-evaluate-debug” loops to a fluid cycle: describe → generate → be happy. You just explain what you want in plain language, and the AI takes care of the code.</p><blockquote><strong><em>You “just see stuff, say stuff, run stuff, and copy‑paste stuff, and it mostly works.”</em></strong></blockquote><p>But vibe coding isn’t just about delegating coding to AI, it’s a new mindset. If you’re still reviewing diffs, writing unit tests, refactoring line by line, and at the same time you’re using AI as an assistant — that’s traditional engineering, just with new tools.</p><p>However, vibe coding is not about being lazy — it’s about focusing your time and energy on the creative aspects of application development rather than getting stuck in technical details.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jJ3XkJYKqjF9qdUs6aEreQ.png" /><figcaption>Differences between Coding types</figcaption></figure><h4>Does It Bring Benefits…?</h4><p>Consider the hobbyist who wanted to create a web application to control a DIY drawing robot: the AI generated a fully functional prototype before the hardware was even assembled. Within hours, the project went from concept to workable software, without writing a single line of code <em>(</em><a href="https://johnowhitaker.dev/essays/vibe_coding.html#:~:text=The%20preview%20in%20the%20vibe,webapp"><em>link to a source</em></a><em>)</em>.</p><p>Or take The New York Times journalist Kevin Roose, who used Bolt to build a fridge-to-lunch suggestion application. <em>(You can try that, too, </em><a href="https://joyful-froyo-b4482b.netlify.app/"><em>here</em></a><em>.)</em> He “<em>can’t write a single line</em>” of code, yet had a working prototype in just ten minutes.</p><p>Stories like these show how vibe coding is changing the game:</p><ul><li>You can go from a rough idea to something functional in just a few hours.</li><li>There is no more need for deep technical skills, only an idea — you are able to create working applications without asking a developer for help.</li><li>There’s no need to waste time choosing the “right” library or worrying about how to set everything up.</li><li>Now you can concentrate more on solving real problems, and not on configuring tools.</li></ul><p>With tools like GitHub Copilot, Replit’s AI assistant, or, for example, AWS Q, creators can build working code much more quickly, especially for early-stage concepts.</p><p>This shift in tooling and accessibility doesn’t just change who can build. It changes how we build, and what developers focus on in the process.</p><p>Vibe coding doesn’t eliminate developers, it reshapes what they do.</p><ul><li><strong>Prompt engineering</strong> becomes essential: Writing concise, high-context prompts that yield optimal code.</li><li><strong>Rapid iteration</strong>: Instead of manually building every component, developers now focus on quickly testing and refining what AI generates.</li><li><strong>Product thinking</strong> grows in importance: What’s the user need? What’s the simplest solution?</li><li><strong>AI understanding</strong>: Knowing what it’s good at, when to rely on it, and when to step in.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*a43gFNbiRZTDituF8Q9yKg.gif" /><figcaption>Vibe Coding cycle</figcaption></figure><p>We’re moving into a world where the best developers aren’t just strong in coding — they’re required to have strong communication skills, strategic thinking, and the ability to filter and combine the best tools and ideas.</p><h4>…Or Is It Overhyped?</h4><p>As powerful as vibe coding is, it’s not without serious limitations.</p><p>AI-generated code can seem great from the beginning, until the moment when something breaks, or worse, stops working without any obvious signs (so called “silently fails”). When you’re developing your software for real people, you should not just think about how to make it work. You must think about security, scalability, legal standards, and how you will maintain it over time. Unfortunately, AI tools often overlook edge cases, legal constraints, and robust coding practices.</p><p>Here’s where the cracks begin to show:</p><ul><li><strong>Broken trust:</strong> Vibe-coded systems often omit essential error handling or validation checks.</li><li><strong>Unreliable outputs</strong>: AI-generated code can “mostly work” and still fail in edge cases or unusual environments.</li><li><strong>Security gaps:</strong> Without expert review, generated code may leak data or expose vulnerabilities.</li><li><strong>Opaque logic:</strong> If you don’t understand how it works, who fixes it when it fails?</li><li><strong>Lack of context</strong>: Models may produce technically correct but contextually wrong solutions — e.g., violating data privacy regulations without realizing it.</li><li><strong>No accountability</strong>: Who owns a bug in generated code? The user? The model? The tool creator?</li><li><strong>Hard to maintain:</strong> Projects built with vibe coding can be messy. Most of the time they don’t have clear structure, don’t follow any standards or best practices. You will have a headache once it breaks. Especially if you don’t know how to code.</li><li><strong>Slowdown your personal growth</strong>: If you only start your IT “journey” and you rely too much on AI, it can really slow down your personal development.</li></ul><p>Kevin Roose in his article encountered these limitations firsthand, noting that even simple tasks, like mimicking his writing style in emails, posed challenges for current AI tools.</p><p>The result: vibe coding becomes a creative sparks engine, not a production-grade method. It’s comparable to shaping clay: flexible and enjoyable, yet delicate and sometimes unstable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XwPZAPJeWqnBs5_IZscMkA.png" /><figcaption>Vibe coding meme</figcaption></figure><h4>The Future of Coding</h4><p><em>The Landscape Is Changing</em></p><p>The trend toward vibe coding is part of a broader shift toward <strong>agentic coding</strong> and <strong>AI-native architectures</strong>.</p><p>Statistics reveal that <em>(</em><a href="https://quandarycg.com/citizen-developer-statistics/"><em>source</em></a>):</p><ul><li>AI’s output capability <strong>doubles approximately every seven months</strong></li><li><strong>82% of companies</strong> struggle to hire developers</li><li>The backlog of features and fixes keeps expanding.</li><li><strong>~75% of engineers</strong> use AI weekly, some daily.</li></ul><p>Developers now function like senior reviewers: AI generates ~80% of the code; humans ensure quality, context, and trust.</p><p>In this landscape, vibe coding becomes not just helpful, but <strong>necessary</strong> to keep up with product demands.</p><p><em>What’s Next?</em></p><ul><li><strong>AI-first frameworks</strong> will emerge: built to be interpreted and modified by agents rather than humans.</li><li><strong>Agentic coding environments</strong> (like Devin or Cognosys) will evolve from assistants to collaborators handling not just code, but architecture decisions, deployment, and performance tuning.</li><li><strong>Natural language becomes the new CLI</strong>: Voice, chat, and sketching may replace IDEs in early-stage design.</li><li><strong>Infrastructure orchestration by AI</strong>: Think “build me a serverless pipeline with auth and observability” and it’s done.</li></ul><p><em>The Human Role Will Shift</em></p><p>Humans won’t stop coding but we’ll code differently:</p><ul><li><strong>Strategic thinking &gt; syntax knowledge</strong></li><li><strong>Debugging and supervision &gt; writing from scratch</strong></li><li><strong>Ethics and governance &gt; mechanical repetition</strong></li></ul><p>We’ll become <strong>AI curators</strong>, not just builders <em>(</em><a href="https://www.businessinsider.com/vibe-coding-ai-silicon-valley-andrej-karpathy-2025-2?IR=T#:~:text=Others%20are%20doing%20similar%20things,a%20seriously%20steep%20learning%20curve"><em>source</em></a><em>)</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/810/0*V8kqaGDRZJFN-KyT" /><figcaption>Future of vibe coding</figcaption></figure><h4>Conclusion: Balance and Responsibility</h4><p>Vibe coding is an effective new tool. But it’s not a panacea. For skilled developers, it’s a chance to find out how AI thinks, in which it excels and in which it misfires. For newcomers, it’s a door into software program creation. By probing and debugging vibe-generated code, you advantage perception into each tool and context.</p><p>Without proper supervision, vibe coding can result in fragile systems that don’t scale well:</p><ul><li>Use it primarily for quick prototypes rather than critical applications</li><li>Always carefully review the generated code, perform thorough testing, and guard against security risks</li><li>Think like a product architect, not just a user of AI output</li></ul><p>In the end, vibe coding won’t replace skilled engineers but it’s a powerful ally for innovation. It demands a blend of creativity, curiosity, and conscious oversight. It is great for momentum, but dangerous when misused or over-trusted.</p><p>The key is knowing when to vibe, and when to engineer.</p><p>That’s the craft. That’s the code.</p><p><strong>☀️ Join Andersen IT Community ☀️<br>🔧</strong><a href="https://t.me/d3v_community?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=tg"><strong>Dev Telegram<br></strong></a><strong>💾</strong><a href="https://www.linkedin.com/groups/9877436/?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=li"><strong>Dev LinkedIn</strong></a></p><p><a href="https://people.andersenlab.com/vacancies?utm_source=medium&amp;utm_medium=article"><strong>💻Our open vacancies<br></strong></a><strong>📅</strong><a href="https://people.andersenlab.com/meetups-with-andersen-recaps?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=meetup"><strong>Upcoming meetups</strong><br></a>📱<a href="https://www.instagram.com/andersencompany/?utm_source=medium&amp;utm_medium=article&amp;utm_campaign=inst"><strong>Instagram</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=0cf83f92dc12" width="1" height="1" alt=""><hr><p><a href="https://medium.com/andersen-it-community/code-what-you-feel-feel-what-you-code-0cf83f92dc12">Code What You Feel, Feel What You Code</a> was originally published in <a href="https://medium.com/andersen-it-community">Andersen IT Community</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>