<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel><title>dwisniewski.com</title><link>https://dwisniewski.com/</link>
<atom:link href="https://dwisniewski.com/feed.xml" rel="self" type="application/rss+xml"/>
<description>Simply about Programming And Data</description><language>en</language>
<lastBuildDate>Thu, 12 Feb 2026 11:33:56 +0100</lastBuildDate>
<item><title>Vibe Coding - Are we all programmers today?</title><link>https://dwisniewski.com/vibe-coding-are-we-all-programmers-today/</link><guid isPermaLink="true">https://dwisniewski.com/vibe-coding-are-we-all-programmers-today/</guid><pubDate>Thu, 12 Feb 2026 11:33:56 +0100</pubDate><category>Programming</category><description>Today I&#x27;m sharing a short, yet highly trending article about vibe coding. Let&#x27;s consider whether software development has been fully democratized? Can anyone produce a piece of software, sell it, and make their life…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz-2.png" alt=""></p><p><strong>Today I'm sharing a short, yet highly trending article about vibe coding. Let's consider whether software development has been fully democratized? Can anyone produce a piece of software, sell it, and make their life easier without significant expense? Or perhaps lay off employees and do it all themselves as a founder? We'll observe interesting trends and try to more loosely assess the impact of vibe coding on the market and on us as programmers.</strong></p>

<p>My previous article on the overall impact of AI on the IT market will provide a good backdrop for this post. Vibe Coding is a small part of this, with quite a significant impact. Be warned, the <a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/" data-type="link" data-id="../impact-of-ai-on-the-it-market-in-2026/">article</a> is quite long, as the issue isn't simple or easy to discuss.</p>

<h2 class="wp-block-heading">Definition of Vibe Coding</h2>

<p>The concept was introduced about a year ago, when people stopped writing code by hand. It appears to have been conceived by<a href="https://karpathy.ai/" data-type="link" data-id="https://karpathy.ai/"> Andrej Karpathy</a>, a neural networks specialist and owner of network-related companies and content creators. He was, among other positions, the Director of AI at Tesla. He is undoubtedly an authority in the industry.</p>

<p>The meaning of this concept actually focuses on 4 aspects:</p>

<ul class="wp-block-list"><li><strong>Natural-Language-Driven Development </strong>- instead of writing code by hand, the coder just gives commands to tools like Claude Code or Cursor.ai</li>

<li><strong>Changed workflow </strong>- from now on, vibe-coder is no longer a coder but more of a project manager</li>

<li><strong>Fast iterations</strong> - during one session we are able to close many tasks and quickly check the effects of our (and the agent's) work in production</li>

<li><strong>High complexity beyond our sight </strong>- we no longer need to understand every class or method, we focus on the overall view, we do not need to know the implementation details of a given component or even the entire service</li>
</ul>

<p>The main challenges of coding this way are debugging issues, production risks, security risks, and managing agent context and skills.</p>

<h2 class="wp-block-heading">Levels (environments) for Vibe Coding</h2>

<p>We see several sectors/levels of software development in the market, as described above. The first, most popular among non-technical users, involves using natural language software development applications such as <a href="https://lovable.dev" data-type="link" data-id="https://lovable.dev">Lovable</a>, <a href="https://replit.com/">Replit</a> , <a href="https://base44.com/" data-type="link" data-id="https://base44.com/">Base44</a> , and <a href="https://bolt.new" data-type="link" data-id="https://bolt.new">Bolt</a>. All of these tools are typically used by people without coding skills. They market themselves as tools for "everyone." There are some differences between them, but they essentially do the same thing: create applications, deploy, and debug based on prompts.</p>

<p>Another type of tool is an IDE, or console tool, which allows us to view and interact with code in an editor on our computer. These tools communicate with LLM providers (OpenAI, Anthropic, Google, etc.) via APIs to exchange information and receive responses to commands entered in the chat window. These tools offer slightly more control over the code, allowing for agent organization, technical specifications, and so on. This tool is currently used by developers. According to a 2025 GitHub survey, only a quarter of <a href="https://survey.stackoverflow.co/2025/ai#developer-tools-ai-explain" data-type="link" data-id="https://survey.stackoverflow.co/2025/ai#developer-tools-ai-explain">developers use AI for vibe coding</a>. Examples of such tools include Cursor.ai, Kiro, Windsurf, Kiro, Antigravity from Google, and a slightly different, more technical Claude Code console-based interface.</p>

<p>Today, we'll focus primarily on the first type of vibe-coding mentioned, as it primarily expands the developer pool to include existing non-programmers. This is where hundreds of thousands of applications are created every day. I'm not mistaken – hundreds of thousands of users create and implement their software ideas there. Lovable is valued at $6.6 billion (Series B). I think $200 million in ARR fully reflects the number of paying users, considering that the Swedish company was founded just over two years ago.</p>

<h2 class="wp-block-heading">Trends</h2>

<p>Let's look at Google search trends:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz-2-1024x438.png" alt="" class="wp-image-997"/></figure>

<p><br>We're seeing skyrocketing searches for local coding tools, along with a steady, gradual increase in interest in pure vibe-coding tools. This shows that society is gradually moving from casual programmers who don't write code to full-blown programmers. In my opinion (which is impossible to measure), these may be different target groups. Vibe-coding is more for founders, managers, and individuals with ambitions to publish their ideas, while AI IDE and Claude Code are for those closer to the technology than the end product - software that works.</p>

<p>Now let's take a look at the number of published (analyzed on X.com) and, most importantly, downloaded mobile applications in the last year based on the great website <a href="https://www.itransition.com/services/application/development/mobile/statistics]" data-type="link" data-id="https://www.itransition.com/services/application/development/mobile/statistics]">ittransition.com</a>.</p>

<figure class="wp-block-image size-full"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz-3.png" alt="" class="wp-image-1000"/><figcaption class="wp-element-caption">Source: <a href="https://x.com/buccocapital/status/2014328257173242348/photo/1]">https://x.com/buccocapital/status/2014328257173242348/photo/1</a></figcaption></figure>

<p>We're limiting ourselves to the US here, but there's a clear correlation between the boom in coding apps in general (early 2025) and the number of apps published. Now let's take a look at the number of app downloads during that same period:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz-4-1024x576.png" alt="" class="wp-image-1002"/><figcaption class="wp-element-caption">Source: <a href="https://www.itransition.com/services/application/development/mobile/statistics">https://www.itransition.com/services/application/development/mobile/statistics</a></figcaption></figure>

<p>Consider the United States in the table above. We have 12.6 billion downloads in 2025. This represents a 2.3% decline from 2024. Consider that the US has a population of approximately 350 million, eliminating the 10-15% who don't use mobile apps at all, and in a negative scenario, the 15% figure, leaving approximately 300 million active users. This translates to approximately 30-35 app downloads per user. Consider the following:</p>

<ul class="wp-block-list"><li>people often have a new phone every year</li>

<li>some people have 2 or more devices for work/life use</li>
</ul>

<p>This amounts to between 20 and 30 apps per device downloaded from marketplaces. I have about 50 apps on my phone, most of which I don't use; they're installed as needed for infrequent purposes, like booking a hair appointment or shipping a package.</p>

<p>This raises one question: if I have 30 apps on my phone, why would I download another one? I think this is a question that customers of today's vibe coders are asking themselves as well. There's a clear disconnect between the number of apps published and the number of app downloads.</p>

<p>So maybe the problem isn’t the cost of building software anymore. Maybe the problem is…<br><strong>why anyone would want another piece of software at all.</strong></p>

<p>It's worth noting that we've moved almost all our daily activities to our phones: from alarm clocks, payments, communication, childcare, cooking/catering, and even apps for monitoring and improving sleep quality. We wake up and fall asleep with our phones next to our heads or in our hands. So, I ask: what else can we cram into them?</p>

<p>This means that most of the money spent on app development (tokens aren't free) goes towards producing a flop that doesn't deliver value to the end user. Mobile apps have become incredibly easy to publish, and the publishing itself isn't free, and developer subscriptions also cost money. This means that almost all of the capital "invested" in vibe-coding goes to model providers, with some remaining in the hands of apps like Lovable (assuming a 40-60% margin), and some flowing to corporations (Google and Apple for developer fees – vibe coder fees), and then further from model providers to:</p>

<ul class="wp-block-list"><li>silicon and graphics card manufacturers</li>

<li>server room owners</li>

<li>energy producers</li>
</ul>

<p>Assuming that desktop applications, video games, and web applications replicate this trend in the mobile world, capital flows are directed towards NASDAQ companies - technology companies and energy producers. Let's see how this plays out in terms of valuations and market sentiment:<br></p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/nasdaqVSSoft.jpeg" alt="" class="wp-image-1006" style="width:595px;height:auto"/></figure>

<p>We're seeing a divergence of -40% between the SaaS index and the top 100 companies listed on Nasdaq. It's astonishing how successful giants like Alphabet, NVIDIA, Apple, and Microsoft are in this scenario (well, maybe less so after recent declines), and consequently, their investors. Who would have expected this? :D Apparently, SaaS companies are on the defensive, or the investor market simply underestimates their chances of AI production by existing SaaS customers.</p>

<h2 class="wp-block-heading">Technical possibilities of Vibe Coding</h2>

<p>Okay, we've discussed the definition and trends, but what about the actual capabilities of these tools? I've tested them a bit, and my personal feeling is that as a programmer, I would have written them better locally with tools from the second group. However, it's undeniable that they can create quite an efficient application in terms of functionality. I'll leave the design to your judgment; one thing is certain: you can easily spot the somewhat standard UX and color scheme of each tool, which is quite repetitive. However, this is probably a matter of additional styling prompts.</p>

<h3 class="wp-block-heading">Scaling</h3>

<p>What about scaling applications in the cloud? This is also possible; most applications offer not only coding but also testing, deployment, reporting, monitoring, and so on. It's essentially a mini software house that writes and delivers software to a given website. Of course, scaling requires a fee, and here, once again, Cloud operators benefit twice: at the code development stage and at the software or application publishing stage. The market clearly directs money toward the big players.</p>

<h3 class="wp-block-heading">Security</h3>

<p>Since cybersecurity isn't my area of ​​expertise, I'll be relying on other people's opinions. I encourage you to watch the video below or similar ones:</p>

<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><figure class="embed"><a href="https://www.youtube.com/watch?v=5kWLPYAL8f0" target="_blank" rel="noopener">▶ Video: https://www.youtube.com/watch?v=5kWLPYAL8f0</a></figure></figure>

<p>The author highlights common security issues with Vibe Coding. This is worth noting. What I wanted to emphasize is that threats exist, and many vibe coders could harm themselves by publishing blindly. Although the author's material demonstrates coding in an IDE, it's important to remember that underneath lies the same model used by the typical online tools mentioned earlier.</p>

<h3 class="wp-block-heading">Code quality</h3>

<p>Note that I've listed quality as the last technical aspect because, from a non-technical vibe coder's perspective, it's of relatively minor importance. What matters is that the product is ready for publication and sale. The quality itself isn't impressive, although it's difficult to assess. In my experience, the code produced by comprehensive application builders is redundant, complex, difficult to read, and riddled with runtime errors. I'm waiting for a study on this, but I personally rate the level as Junior+. I'll stop there.</p>

<h2 class="wp-block-heading">Application development costs</h2>

<p>You might ask, "How much does it cost, Mr. Manager?" It's quite difficult to answer. Pricing for Vibe Coding tools is similar across the board, with a limited number of tokens available at $20/$30/$100 per month. Once you reach the limit, you have to wait or pay extra for overuse.</p>

<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>App Type</th><th>Iterations</th><th>Lovable Cost (approx)</th><th>Freelancer Cost (approx)</th><th>Software House Cost (approx)</th></tr></thead></table></figure>

<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Landing + simple CRUD</td><td>50–150 prompts</td><td><strong>0–50</strong> USD</td><td>500-2000 USD</td><td>3000-10,000 USD</td></tr></tbody></table></figure>

<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>SaaS MVP </td><td>200–600 prompts</td><td><strong>50–200</strong> USD</td><td>3000-12,000 USD</td><td>20,000-70,000 USD</td></tr></tbody></table></figure>

<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Production App</td><td>800–2000 prompts</td><td><strong>200–700</strong> USD</td><td>12,000-40,000 USD</td><td>70,000-20,0000 USD</td></tr></tbody></table></figure>

<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Scaling, Complex Software</td><td>3000+ prompts</td><td><strong>700–2000</strong> USD</td><td>40,000-150,000 USD</td><td>200,000+ USD</td></tr></tbody></table></figure>

<p>That's just a simple estimate of the cost of software development. We should add maintenance costs to this. This includes hosting, scaling, monitoring, bug fixes (they always appear), domain, and communication with external APIs (e.g., LLMs). However, this will differ slightly from traditional software development. I developed the table based on my own experience, LLMs' help, and various sources. It's safe to say that this is an approximate cost in each case, highly dependent on the domain, specifications, the accuracy of the requirements, and so on.</p>

<p>We can clearly see that Vibe Coding is not only a lot of fun for developers, but also cheaper and less time-consuming – which is very important than traditional outsourcing of programming to companies or freelancers. In this process, we bypass the human element that had to spend time on concept, design, implementation, testing, and so on. Is this a good thing? I don't know, but I suspect it's very good news for founders. And so we move smoothly on to the next aspect, the psychological aspect.</p>

<h2 class="wp-block-heading">Psychological aspect</h2>

<p>Let us remember that for the last 50 years the manufacturing process has been similar:</p>

<ul class="wp-block-list"><li>we employ a team or delegate it to an external company</li>

<li>we get a quote</li>

<li>negotiation/acceptance</li>

<li>then we wait for the people in the basement to produce the code</li>

<li>testing phase</li>

<li>payment</li>

<li>publish and/or sell</li>
</ul>

<p>Previously, this process could take several years! Today, we see the same thing happen in a week or two, or even a single day!</p>

<p>This creates the illusion of being fast, cheap, bypassing human problems (laziness, dragging, illness, communication) and I do it all myself, exactly.</p>

<h3 class="wp-block-heading">Iterative marketing, rapid dopamine shots in the head</h3>

<p>I'm not a neuroscientist; I'm describing this from the perspective of a programmer with 10 years of experience. In programming, dopamine hits clearly play a significant role in productivity. You know that feeling when something starts working after hours spent working on a problem? Or when a sprint ends and you've completed a large chunk of code? Many people (including me) find these hits motivating and energizing. They make us want to finish a given stage of work, even despite exhaustion. The brain loves that feeling: Wow! It's finally working. I can confidently say it's addictive, just like social media or video games. Substance addictions are also based on similar mechanisms, but I would classify what I'm describing in a different category. The sources I've found call them behavioral addictions (<a href="https://vitalibera.pl/uzaleznienia-behawioralne/" data-type="link" data-id="https://vitalibera.pl/uzaleznienia-behawioralne/">source</a>).</p>

<p>I have the impression that the speed of the tools only fuels this. You can go very far. While attending a meeting for Vibe Coders recently, I noticed that the speakers seemed to be in a trance, excited, like, "Oh, look how quickly this started working for me, how cool!" It was funny from the perspective of someone who understands how this mechanism works for programmers.</p>

<p>This is definitely fueling the hype surrounding Vibe Coding. I'll touch on this further in my summary. For now, I'd also like to address the issue of the rampant drive and drive for training, webinars, courses, etc. by Vibe Coding gurus. Everyone, of course, has the right to sell whatever they want. However, this cannot be ignored in the context of FOMO, aggressive advertising, and their impact on our psyche.</p>

<p>Any non-technical person who sees this might feel like they're missing out. If they don't try and learn to code, they could miss out on a huge opportunity to get rich or launch a product. It's a huge temptation, one that, as herd animals, we can't easily avoid and shut out all communication.</p>

<p>Taking the above into account, I can confidently predict further increases in usage, greater market adoption, and a growing no-code or low-code market in the Vibe Coding format. One might ask, "Are we all programming junkies these days?" Ad voce the title question. However, I'm far from that conclusion at this point. It's still a niche market, but it's worth monitoring.</p>

<h2 class="wp-block-heading">Summary and conclusions</h2>

<p><strong><em>Are we all programmers today?</em></strong></p>

<p><strong>Technically, perhaps. Practically, not yet. Business-wise, definitely not.</strong></p>

<p>Vibe Coding is a real change. It's not a passing fad like the successive JS frameworks that come and go. It's a transformation in the way software is developed. Code is no longer the goal; it becomes a side effect of a conversation with a machine. That's a huge difference.</p>

<p>On the one hand, we have complete democratization. A person without a technical background can now create a working app, publish it, and test it in the market in a week. This was previously nearly impossible without capital or a team. This is a huge opportunity.</p>

<p>On the other hand, the app market is saturated. Phones aren't made of rubber. Users don't have infinite attention spans. Most new products don't solve a real problem; they simply replicate existing solutions. Production is growing faster than demand.</p>

<p>Capital also flows in a very specific direction. Tokens → models → cloud → silicon → energy. The winners are infrastructure providers. Not every vibe-coder.</p>

<p><strong>Technically</strong><br>You can build a lot. Sometimes a surprising amount. But debugging, security, scaling, and maintenance still require understanding the system. And here, a developer's experience is still incredibly valuable.</p>

<p><strong>Psychologically</strong><br>This is the most fascinating aspect. Vibe Coding gives you quick dopamine hits. You create. You act. You publish. You iterate. It's addictive. Hype breeds hype. And FOMO sells courses. Is that bad? No. Does it need to be understood? Absolutely.</p>

<p>In my opinion, the future belongs neither to "pure" vibe coders nor to programmers who ignore AI. The winners will be those who:</p>

<ul class="wp-block-list"><li>understand the fundamentals of engineering,</li>

<li>are able to think systematically,</li>

<li>they use AI as an amplifier, not as a prosthesis,</li>

<li>they understand business, not just code.</li>
</ul>

<p>Programming isn't going away. Its operational layer is changing. Less and less class writing, more and more decision-making. So perhaps the question isn't, "Are we all programmers today?" But rather, "Are we all product builders today?" Because code has become cheaper. User attention hasn't. And attention, as always, will be the ultimate currency.</p>

<p>Additionally, we need a strategy. Today, the question isn't how many applications we'll create, but whether it's worth delving into a given problem and choosing from a long list of ideas those that actually solve market problems. Creating for the sake of creating isn't likely to lead to a bright future.</p>

<p>I'm waiting for your comments! Thanks!</p>


]]></content:encoded></item><item><title>Impact of AI on the IT market in 2026</title><link>https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/</link><guid isPermaLink="true">https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/</guid><pubDate>Tue, 10 Feb 2026 22:21:56 +0100</pubDate><category>Job Market</category><description>I&#x27;ve been listening to the opinions of various players in the IT market: large companies, tech giants, small businesses employing 1-5 people, recruiters, employees, subcontractors, freelancers, AI influencers, and…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/02/ChatGPT-Image-10-lut-2026-22_22_11.png" alt=""></p><p><strong>I've been listening to the opinions of various players in the IT market: large companies, tech giants, small businesses employing 1-5 people, recruiters, employees, subcontractors, freelancers, AI influencers, and trainers on AI and its impact on the job market. In my opinion, each of them is twisting reality to suit their own interests.</strong></p>

<h2 class="wp-block-heading">Input data</h2>

<p>My opinion on this topic is unfortunately harsh on some parts of the market. To delve deeper into this topic, we need several perspectives and input data. Based on the following components, we will attempt to realistically assess the state of the market environment in which we find ourselves.</p>

<p><a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/#employee" data-type="internal" data-id="#employee">1. Employee Perspective (Freelancers, Specialists, Beginners)</a></p>

<p><a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/#employer" data-type="internal" data-id="#employer">2. Employer perspective (owners, shareholders, managers)</a></p>

<p><a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/#saas" data-type="internal" data-id="#saas">3. Software vendor perspective</a></p>

<p><a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/#research" data-type="internal" data-id="#research">4. Employment Research</a></p>

<p><a href="https://dwisniewski.com/impact-of-ai-on-the-it-market-in-2026/#my" data-type="internal" data-id="#my">5. My perspective and conclusions</a><br></p>

<p>Let's go through the individual points, and at the end we will make a summary, which will also include my personal opinion about the market.</p>

<h2 class="wp-block-heading" id="employee">Employee Perspective</h2>

<p>In 2025, StackOverflow conducted a survey. Approximately 20,000-60,000 IT professionals participated. The numbers vary depending on the question. The most interesting one in the context of our discussion is: https://survey.stackoverflow.co/2025/ai/. AI tools in the development process are used daily by 47%. Only 16% of all developers declare they do not plan to use AI in software development.</p>

<h3 class="wp-block-heading">Tools in the development process</h3>

<p>This is very interesting, but it paints a clear picture: approximately 84% of respondents have a positive attitude toward AI tools. However, "tools" is a very general term, encompassing chatting, vibe-coding, syntax suggestion, content generation, and so on. This isn't strictly a software-related activity, but rather everyday use for various purposes.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-sentiment-and-usage-ai-select-social-1024x474.png" alt="" class="wp-image-865"/></figure>

<h3 class="wp-block-heading">Sentiment</h3>

<p>Another interesting trend is sentiment, which has fallen from 70% and above in 2023 and 2024 to around 60% today (late 2025). You can see the details <a href="https://survey.stackoverflow.co/2025/ai#sentiment-and-usage-ai-sent" data-type="link" data-id="https://survey.stackoverflow.co/2025/ai#sentiment-and-usage-ai-sent">below</a>.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-sentiment-and-usage-ai-sent-social-1024x512.png" alt="" class="wp-image-868"/></figure>

<p>As we use tools more than in previous years, some of us are noticing imperfections or failures to meet our needs. The hype pervasive in the media, particularly on LinkedIn, builds high expectations for these tools. In practice, if we can't "talk" to AI, we won't be able to solve many problems.</p>

<h3 class="wp-block-heading">Intended use</h3>

<p>We see further interesting answers in the question: "Which parts of your development workflow are you currently integrating into AI or using AI tools to accomplish or plan to use AI to accomplish over the next 3 - 5 years? Please select one for each scenario."</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-developer-tools-ai-tool-social-1024x781.png" alt="" class="wp-image-872"/></figure>

<p>Writing code is definitely not the dominant reason for using AI. We mostly use models for content generation, research, and education. I personally ask a lot of questions in GPT chat; I'm able to learn specific topics in a short period of time. You no longer need to read an entire book or complete a 50-hour course to gain information. It's a matter of asking the right questions and directing the conversation toward the goal of obtaining and visualizing the information you're looking for.</p>

<h3 class="wp-block-heading">Accuracy</h3>

<p>We'll move on to the next section of the survey, LLM ACCURACY. The chart below shows that confidence in the accuracy of AI results leaves much to be desired. People are rather skeptical about this benchmark.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-developer-tools-ai-acc-social-1024x435.png" alt="" class="wp-image-870"/></figure>

<p>Moreover, almost half of the respondents expressed distrust. Frankly, I didn't expect such negative responses. I myself notice distortions and hallucinations, but I wouldn't say with a high degree of certainty that I distrust the answers the models generate. As the saying goes: trust, but verify!</p>

<h3 class="wp-block-heading">Frustrations</h3>

<p>Following this negative trend discussed in the "Accuracy" chapter, let's take a look at where AI causes frustration for users:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/image-1024x239.png" alt="" class="wp-image-877"/></figure>

<p>The biggest sources of frustration are:</p>

<ul class="wp-block-list"><li>"AI solutions that are almost right, but not quite"</li>

<li>"Debugging AI-generated code is more time-consuming"</li>
</ul>

<p>Both reasons are understandable. We want our productivity to increase, which is why we reach for various tools. If we have to learn how to use agents, chats, or generators, we expect a return on this investment in the form of time saved later on performing our tasks. As we can see, people dissatisfied with working with AI don't see a real impact on ROI. On a personal level, this leads to greater frustration, but for companies, it will have a real impact on finances and business efficiency.</p>

<h3 class="wp-block-heading">Vibe coding</h3>

<p>Let's start by explaining what <a href="https://en.wikipedia.org/wiki/Vibe_coding" data-type="link" data-id="https://en.wikipedia.org/wiki/Vibe_coding">vibe-coding </a>actually is. In 2025, Karpathy coined the term "vibe-coding" to describe this method of collaboration with coding agents. This practice involves developing software without actually writing the code yourself, but simply communicating with an agent based on various LLM models. A survey shows that only 25% of respondents, out of over 20,000, use agents in this way.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-developer-tools-ai-explain-social-1024x589.png" alt="" class="wp-image-880"/></figure>

<p>This is also surprising. It suggests that the vibe-coding trend hasn't yet developed enough to dominate programmers' work methodology.</p>

<h3 class="wp-block-heading">AI Agents Usage</h3>

<p>The next question concerns the purpose for which AI agents are used. The vast majority (83.5%) use them for software engineering. This question may be somewhat biased given the characteristics of the respondents, as most of them work in this area. Nevertheless, we see a significant correlation between software development and the use of AI agents.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-ai-agents-ai-agent-uses-social-1024x666.png" alt="" class="wp-image-882"/></figure>

<p>LLMs are very good at coding. This is because, as the name suggests, learning language, semantics, and syntax is, one might say, a narrow specialization of language models.</p>

<h3 class="wp-block-heading">Perception of model intelligence</h3>

<p>We often confuse the perception of a person and their intelligence with their language skills. In programming, writing code itself seems to be a problem solved by LLMs. However, this doesn't mean that a programmer's work ceases to be meaningful. On the contrary, we can now focus on things that LLMs aren't best at, such as design, modeling, architecture, UX, and so on. The actual writing of code—the final phase of code production—can be safely delegated to agents, subject to certain rigors and constraints.</p>

<p>On the other hand, we see frustration and dissatisfaction with AI's performance in other areas. Where we need high precision, freedom from hallucinations, and precise planning, AI still falls short, as expressed by a significant number of respondents.</p>

<h3 class="wp-block-heading">My Subcontractor Perspective</h3>

<p>From the perspective of a contractor or employee, I see the downsides of using AI. At the same time, I believe that in the coming years we will develop several frameworks for working with agents (Claude Code is already doing this, and so are competitors). The goal will be to minimize hallucinations and, in a sense, force agents to replicate our work or even produce higher-quality code.</p>

<p>I'm also trying to develop my own methodology and describe it in my repos, for example <a href="https://github.com/dwisniewski1804/saas-spine/blob/main/clap/clap_manifest.md]" data-type="link" data-id="https://github.com/dwisniewski1804/saas-spine/blob/main/clap/clap_manifest.md]">here</a>. I don't know if I'll develop this idea intensively, but several such methodologies or frameworks have already been created, and I think it's something we can't avoid.</p>

<p>It's impossible to manage LLMs without a specific methodology and documentation. By throwing in ad-hoc prompts, we expose ourselves to significant difficulties in understanding the code, debugging it, developing it, and performing code reviews. The market is already recognizing this, which is why there's been a lot of talk lately about <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html]" data-type="link" data-id="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html]">SDD</a> (Spec Driven Development), where we provide relevant artifacts before assigning code writing. This is very similar to my CLAP methodology – I develop mine so that validation and bootstrapping of ideas are inexpensive and can be reduced to a few sessions with agents. However, that's a topic for a separate post. I'll try to describe it in the near future.</p>

<h3 class="wp-block-heading">Key issue: real impact on efficiency</h3>

<p>The final survey question will address the use of agents in work and their impact on efficiency. It's easy to see that only in the areas of team communication/collaboration does the use of AI agents have a neutral-negative impact from a developer's perspective.<br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/stackoverflow-dev-survey-2025-ai-ai-agents-ai-agent-impact-social-1024x800.png" alt="" class="wp-image-889"/></figure>

<p>The most important chart: "AI agents have increased my productivity" confirms that over 65% of respondents confirm that their productivity has increased. Despite mistakes and hallucinations, the process of writing code (tapping on the keyboard) itself takes a lot of time, and LLMs are excellent at it.</p>

<p>Previously, we used tools like the InteliSense IDE, and later language models to suggest syntax, complete lines of code, or autocomplete entire files. Today, we know that an LLM (specifically trained for coding) can write decent code faster than we, trained specialists, can produce it. However, writing itself is only a fraction of the entire process, and we must remember this. A good coder! = a good software engineer.</p>

<p>OpenAI and similar companies are indeed making statements (e.g., from Dario Amodei of Anthropic and Sam Altman of OpenAI) suggesting that AI will write more and more code and that the role of programmers will change. But this is more of a prediction than a declaration that "we don't code anymore." Internally, these companies employ thousands of engineers who write intensive code—but increasingly with the help of AI.</p>

<h2 class="wp-block-heading" id="employer">Employer's perspective</h2>

<p>I'll briefly outline this chapter. It's important to remember that hiring programmers over the past 20 years has been costly. It's a simple matter of supply and demand. The infrastructure built during the dot-comm bubble in the 2000s has enabled us to digitize most of our lives, from health-related matters to financial management to childcare. As a result, the growing demand for people who "can talk to machines" has steadily increased, and the population hasn't kept pace with labor production. I discussed this topic in the context of the Polish market <a href="https://dwisniewski.com/why-janek-does-not-program-ep-1-2022/" data-type="link" data-id="../why-janek-does-not-program-ep-1-2022/">here</a>.</p>

<p>The difficulty of programming lies primarily in abstract thinking and recognizing patterns that should be applied. Software archetypes, design patterns, methodologies, and abstraction are also present. Added to this is the difficulty of finding a local development environment. AI is now solving all these problems, as it can understand code at a human-like level. But what impact does this have on employers?</p>

<p>It's important to realize and understand that for most companies, programmers represent a significant expense. In companies where software is a significant part of the process, developers are the most expensive. Therefore, any savings without a reduction in quality seem tempting. Here's some data from the largest technology companies:<br><br><a href="https://businessinsider.com.pl/gospodarka/setki-inzynierow-google-stracily-prace-przez-sztuczna-inteligencje/j7jf6g0" data-type="link" data-id="https://businessinsider.com.pl/gospodarka/setki-inzynierow-google-stracily-prace-przez-sztuczna-inteligencje/j7jf6g0">Layoffs at Google </a> and <a href="https://intellizence.com/insights/layoff-downsizing/major-companies-that-announced-mass-layoffs/" data-type="link" data-id="https://intellizence.com/insights/layoff-downsizing/major-companies-that-announced-mass-layoffs/">layoff plans </a>at other technology companies indicate a trend: downsizing in software development. However, we can't definitively determine whether AI contributed to this. Perhaps companies have overinvested in AI and LLM development, and their creation also requires engineers. Perhaps AI is facilitating downsizing due to increased productivity. We'll have to wait a while for specific data.</p>

<p>Employers, however, often boast that they've reduced their workforce due to automation and AI. However, this isn't happening in engineering departments. Customer service and departments with more repetitive work are most often the first to be cut. Consider Salesforce and Klarna, for example. In Klarna's case, this move proved to be a mistake. We see that replacing an employee with an LLM is no easy feat.</p>

<p>A recent article from December 22, 2025, shows the impact of AI on the <a href="https://itreseller.pl/zbadano-wplyw-ai-na-rynek-pracy-z-usa-wyniki-nie-zaskakuja-ale-przecza-popularnej-narracji/" data-type="link" data-id="https://itreseller.pl/zbadano-wplyw-ai-na-rynek-pracy-z-usa-wyniki-nie-zaskakuja-ale-przecza-popularnej-narracji/">US labor market</a>. It also reports layoffs, primarily at Microsoft, where a significant portion of the workforce are programmers. However, this isn't due to the automation of the software development process itself, but rather to a shift in the profile of the business from software development to creating AI-based tools (Machine Learning, Data Scientists, Mathematicians).</p>

<p>I haven't seen a case study anywhere of software workers being replaced purely by AI, or more specifically, coding agents. LLMs remain merely tools in the hands of employees, not independent workers.</p>

<h3 class="wp-block-heading">Summary of the employers perspective</h3>

<p>From the employers' perspective, it would be best to lay off all employees, paying only for electricity and tokens. However, no one has yet been able to prove that such an investment (yes, it's massive change management, which is expensive and risky – that's why I called it an investment) can pay off in a reasonable time. Laying off employees also means losing know-how and SOPs, which aren't always documented. In fact, in most companies, this isn't documented, and knowledge is dispersed among employees. Then there's the interpersonal politics in corporations, where who you know matters more than what you know. All of this significantly complicates work parameterization, structuring, and, consequently, replacing building blocks (people) with other, less expensive ones.</p>

<p>Well, it's unclear whether these new building blocks are cheaper, and secondly, whether they even meet the requirements currently placed on employees. Klarna learned this the hard way, laying off and then rehiring people. It's not as simple as it might seem, despite employers playing a bit of a trickster, thus undermining programmers' negotiating power (the shrinking market is a fact, but more on that shortly) during job interviews.</p>

<p>Demand will certainly change, but I wouldn't say it has already happened. We're also inundated with signals, and it's very difficult to determine whether a company has actually reduced its workforce because it has AI or because it's cash-strapped and needs to demonstrate to shareholders that it will maintain profitability. This is a very difficult issue. Furthermore, the labor market isn't uniform. The workload is different in startups and small organizations, where testing AI as an employee has a greater impact on financial results and is also easier to implement. The situation is different in corporations, where laying off and replacing employees can be a process that's not worth the gamble. I still see a lot of uncertainty and ambiguity in the market. We'll have to wait another year or two before the bubble bursts and we'll see what AI can actually offer and whether it's suitable for implementation in place of programmers. The situation is similar in other professions. Only time will tell whether these are pipe dreams or a real substitute for humans.</p>

<h2 class="wp-block-heading" id="saas">Software vendor perspective</h2>

<p>This topic is very broad; I'll start by highlighting the sentiment in the SaaS market. Let's take a look at the stock market and the shares of software companies today. I recommend reading the <a href="https://dnarynkow.pl/czy-ai-zabije-saas-salesforce-poszenia-ze-to-bardziej-skomplikowane/" data-type="link" data-id="https://dnarynkow.pl/czy-ai-zabije-saas-salesforce-poszenia-ze-to-bardziej-skomplikowane/">article</a> discussing software vendors (especially SaaS) from the perspective of an investor looking at companies as a potential source of profit.</p>

<p>The tone is rather negative, but not unequivocal. This is a very interesting analysis. Let's take a look at the charts:<br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/image-1-1024x448.png" alt="" class="wp-image-903"/><figcaption class="wp-element-caption">Valuation chart of <a href="https://www.sumgrowth.com/etf-profile/invest-in-IGV-etf.html" data-type="link" data-id="https://www.sumgrowth.com/etf-profile/invest-in-IGV-etf.html">IGV</a> ETFs and <a href="https://www.sumgrowth.com/etf-profile/invest-in-XSW-etf.html" data-type="link" data-id="https://www.sumgrowth.com/etf-profile/invest-in-XSW-etf.html">XSW</a>.</figcaption></figure>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/image-2-1024x302.png" alt="" class="wp-image-907"/><figcaption class="wp-element-caption">ETF chart: ARKW, CLOU, SKYY – other top players in the software and cloud world. More details <a href="https://www.etf.com/tools/etf-comparison/ARKW-vs-CLOU-vs-SKYY" data-type="link" data-id="https://www.etf.com/tools/etf-comparison/ARKW-vs-CLOU-vs-SKYY">here</a>.</figcaption></figure>

<p>The above ETFs focus on technology companies from the software sector. Most of them are SaaS or other software providers. The significant decline and return to pre-summer 2025 levels demonstrates decidedly negative investor sentiment. Investor opinions are important because they determine where the money will flow. Both individual and institutional investors are betting and hoping for profit. It seems they're saying "I'm checking" today, expecting proof that SaaS still has a legitimacy in the markets. However, this doesn't mean their concerns are justified. Software producers have a full range of opportunities to demonstrate the superiority of their solutions over homegrown, ad-hoc vibe-coded applications developed by in-house teams.</p>

<p>Perhaps the scenario will turn out badly for SaaS companies. It is hard to say. One thing is certain: AI will affect both the companies themselves and their employees. If it turns out that SaaS is no longer needed, many developers and specialists working around software development will simply lose their jobs. The money will flow to vibe-coding tools and model providers.</p>

<p>Personally, I don't pay much attention to what's happening with individual company shares. I try to look at market trends. Here, we can clearly see a downward trend or correction. It's not clear yet. However, it's clear how the narrative surrounding software development is influencing investors. This doesn't necessarily mean imminent company failure or mass layoffs. However, it is a powerful indicator. Investors are voting with their wallets, selling shares in companies whose revenue will be drained—or at least, those they say it is. In this case, it will be drained to energy suppliers, graphics cards, servers, and, to a lesser extent, companies like OpenAI, Anthropic, or ElevenLabs.</p>

<p>I'll also touch on the profitability of the companies mentioned above. OpenAI predicts a $14 billion loss in 2026 in its own <a href="https://finance.yahoo.com/news/openais-own-forecast-predicts-14-150445813.html">forecast</a>.</p>

<p>Anthropic is still not profitable and won't be until at least 2028. The <a href="https://pl.investing.com/news/stock-market-news/anthropic-podnosi-prognoze-przychodow-na-2026-r-opoznia-cel-rentownosci-1254392" data-type="link" data-id="https://pl.investing.com/news/stock-market-news/anthropic-podnosi-prognoze-przychodow-na-2026-r-opoznia-cel-rentownosci-1254392">article</a> doesn't provide specific numbers, but it's clear that it's still a long way from being profitable.</p>

<p>ElevenLabs, a company with Polish roots (founded by Poles), seems to be in a slightly better position. The press materials don't disclose profitability figures, but the <a href="https://www.bankier.pl/wiadomosc/ElevenLabs-warta-11-mld-dolarow-Spolka-potroila-wycene-i-celuje-w-gielde-9079325.html" data-type="link" data-id="https://www.bankier.pl/wiadomosc/ElevenLabs-warta-11-mld-dolarow-Spolka-potroila-wycene-i-celuje-w-gielde-9079325.html">article</a> clearly indicates an $11 billion valuation in the next financing round. However, I expect that after the IPO, we'll learn that of these three players, they are the ones performing the best.</p>

<p>However, these are providers of models and services directly related to them. They own the IP, have people, control the infrastructure, and have investor money. At this level, however, the prices these providers offer may be too low to further develop their products without external financing.</p>

<p>Andrew Ng recently said that the problems LLMs solve have been solved only through scaling for several years. Since the <a href="https://arxiv.org/abs/1706.03762" data-type="link" data-id="https://arxiv.org/abs/1706.03762">publication</a>, we have been relying on the same family of solutions (architecture). The technology itself doesn't make leaps; it's just the result of the increasing number of hardware and nodes processing massive amounts of data. Thanks to the transformer architecture, we can scale and increase the accuracy of models at a rate resembling a logarithmic function, without a clear asymptote (they look like an increasing arc) but also without any significant leaps.</p>

<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><figure class="embed"><a href="https://www.youtube.com/watch?v=_NLHFoVNlbg&amp;list=PLoROMvodv4rNRRGdS0rBbXOUGA0wjdh1X" target="_blank" rel="noopener">▶ Video: https://www.youtube.com/watch?v=_NLHFoVNlbg&amp;list=PLoROMvodv4rNRRGdS0rBbXOUGA0wjdh1X</a></figure><figcaption class="wp-element-caption">Andrew Ng - lecture "Stanford CS230 | Autumn 2025 | Lecture 1: Introduction to Deep Learning". In the first chapter, he discusses the topic of scale.</figcaption></figure>

<p>BTW, I recommend his lectures, they are great if we want to introduce ourselves to the world of ML.</p>

<p>Returning to the topic, at some point, if the business model doesn't change, the largest vendors will have to raise prices, and therefore their solutions will still be cheaper than human labor, but the difference won't be that significant (x20, x30, etc.). At that point, it may no longer be profitable for the company to develop software in-house.</p>

<p>The risk incurred by developing solutions in-house can overwhelm existing SaaS customers. Furthermore, if a company is agile, it will require a significant amount of change. If it doesn't find a methodology that truly allows for software development without external companies, it will be forced to use SaaS. The diversity of these companies must also be considered. Small SaaS solutions for simple calculations, analysis, and so on can be easily replaced, while large ERP, SAP, and generally enterprise software solutions may be inconvenient for SaaS customers.</p>

<p>The golden rule seems to be hiring a one-man army, who with extensive knowledge and AI agents can work wonders. Unfortunately, this isn't great news for people with narrow specializations. More and more small organizations are talking about looking for so-called generalists or AI-driven developers. For now, these are just market rumors. Offers for traditional developers are still circulating on job boards. The processes are still ongoing. I myself recently participated in them. It seems something is brewing, but for now, the market is operating as usual.</p>

<p>I need to address the issue of social media here. YouTube, LinkedIn, Instagram, Facebook. All these portals are flooded with posts about AI and automation. There are even more training courses on AI programming, automation, and the use of LLMs for various purposes, both in life and in the workplace. Now I'm wondering: how can you train on something that was only created two years ago, and some tools change overnight? What value does such training bring? Who buys these courses? I've noticed a trend where well-known people are using their five minutes of free time by tapping into the keyword "AI." It's like: everyone's talking about it, so let's do a training course about it. I'll stop here because I don't want this post to get any longer.</p>

<h2 class="wp-block-heading" id="research">Employment Research</h2>

<p>Research indicates that AI is impacting the labor market in the US, Europe, and the UK by automating routine tasks while creating new opportunities in technology sectors. In the US, there has been a decline in office job offers by approximately 17-27% in non-technology industries, but a 68% increase in AI jobs. In Europe and the UK, employees express mixed sentiment—around 34% see improved working conditions thanks to AI, although many fear the loss of junior positions. I'll now break this down into three regions, as they differ in both labor law and market conditions.</p>

<h3 class="wp-block-heading" id="usa">USA</h3>

<p>Employee productivity has increased by 7.2% since ChatGPT's 2022 debut, fueled by AI, as confirmed by a February 2026 report. Davos 2026 research highlights the lack of mass unemployment, despite forecasts of half of junior positions being eliminated. MIT estimates potential savings of $1.2 trillion, with 11.7-27% of the workforce exposed, according to <a href="https://businessinsider.com.pl/technologie/nowe-technologie/mit-ostrzega-sztuczna-inteligencja-juz-zmienia-amerykanski-rynek-pracy/vzb2n0f" data-type="link" data-id="https://businessinsider.com.pl/technologie/nowe-technologie/mit-ostrzega-sztuczna-inteligencja-juz-zmienia-amerykanski-rynek-pracy/vzb2n0f">sources</a>.</p>

<h3 class="wp-block-heading" id="europa">Europe and UK</h3>

<p>Trends similar to the US: job offers with "AI agents" have increased by 1587% according to <a href="https://itwiz.pl/ai-zmienia-rynek-pracy-pokolenie-z-najbardziej-zaspokojone/" data-type="link" data-id="https://itwiz.pl/ai-zmienia-rynek-pracy-pokolenie-z-najbardziej-zaspokojone/">Randstad</a> (January 2026), with Generation Z the most concerned. In Poland and Europe, AI is transforming white-collar roles, with concerns about 20% of office workers needing retraining. The UK, as part of the data, is seeing growth in tech and finance, but a reduction in routine positions.</p>

<p>For comparison, let's make a table that <a href="https://www.perplexity.ai]" data-type="link" data-id="https://www.perplexity.ai]">Perplexity</a> prepared for me:<br></p>

<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">Aspect</th><th class="has-text-align-left" data-align="left">USA</th><th class="has-text-align-left" data-align="left">Europe/UK</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Increased productivity</strong></td><td class="has-text-align-left" data-align="left">+7,2% since 2022 <a href="https://www.pb.pl/sztuczna-inteligencja-juz-podnosi-produktywnosc-w-usa-1255804" target="_blank" rel="noreferrer noopener">pb</a>​</td><td class="has-text-align-left" data-align="left">Dependent on AI adoption <a href="https://itwiz.pl/ai-zmienia-rynek-pracy-pokolenie-z-najbardziej-zaniepokojone/" target="_blank" rel="noreferrer noopener">itwiz</a>​</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>New AI roles</strong></td><td class="has-text-align-left" data-align="left">High demand for specialists <a href="https://xpert.digital/pl/skutki-sztucznej-inteligencji-w-usa/" target="_blank" rel="noreferrer noopener">xpert</a>​</td><td class="has-text-align-left" data-align="left">+1587% "AI Specialist" offers <a href="https://itwiz.pl/ai-zmienia-rynek-pracy-pokolenie-z-najbardziej-zaniepokojone/" target="_blank" rel="noreferrer noopener">itwiz</a>​</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>Risk of layoffs</strong></td><td class="has-text-align-left" data-align="left">Junior roles (up to 50%) <a href="https://pl.euronews.com/2026/01/20/ai-na-davos-2026-od-rynku-pracy-po-uzyteczna-i-bezpieczna-ai-co-powiedzieli-liderzy-techno" target="_blank" rel="noreferrer noopener">euronews</a>​</td><td class="has-text-align-left" data-align="left">Office (approx. 20%) <a href="https://tvn24.pl/biznes/tech/rewolucja-sztucznej-inteligencji-a-rynek-pracy-w-2026-roku-pora-sprzatac-biurko-st8827935" target="_blank" rel="noreferrer noopener">tvn24</a>​</td></tr></tbody></table></figure>

<p>As we can see, productivity growth is a fact. The role of junior and repetitive office work, known as "paper shuffling," is also being minimized. There's a huge hype surrounding agent systems in Europe. In the general labor market, fluctuations are evident, but this hasn't yet been reflected in unemployment rates.</p>

<p>There are slight increases in the US, but I wouldn't attribute this solely to the use of AI. The <a href="https://pl.tradingeconomics.com/united-states/unemployment-rate]" data-type="link" data-id="https://pl.tradingeconomics.com/united-states/unemployment-rate]">chart</a> shows normal, gradual increases of around 1 percentage point. This isn't happening yet. It's more about psychology and sentiment than actual job cuts. In Europe, on the other hand, we've seen a steady decline in the unemployment rate for years, to levels around 10% and around 6% in December 2025.</p>

<figure class="wp-block-image size-full"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz.png" alt="" class="wp-image-925"/><figcaption class="wp-element-caption">Unemployment rates, EU and EA, seasonally adjusted, January 2011 - December 2025<br><em>Source:</em>  <a href="https://ec.europa.eu/eurostat/databrowser/bookmark/1736719d-b77a-42a5-8160-02534d171dca?lang=en&amp;createdAt=2026-01-07T16:14:47Z" target="_blank" rel="noreferrer noopener">Eurostat</a></figcaption></figure>

<p>This is global data, but we'll focus on the IT market. Let's first take a look at the list of layoffs in IT-related companies. Reuters recently published a very informative <a href="https://www.reuters.com/business/world-at-work/corporate-america-continues-job-cuts-2026-efficiency-push-2026-02-06/#:~:text=Table_title:%20Corporate%20America%20continues%20job%20cuts%20in,%7C%20January%20%7C%20Up%20to%20%E2%80%8B30%2C000%20%7C" data-type="link" data-id="https://www.reuters.com/business/world-at-work/corporate-america-continues-job-cuts-2026-efficiency-push-2026-02-06/#:~:text=Table_title:%20Corporate%20America%20continues%20job%20cuts%20in,%7C%20January%20%7C%20Up%20to%20%E2%80%8B30%2C000%20%7C">article</a>. It describes the number of jobs lost. The most disturbing thing is the <a href="https://www.reuters.com/legal/litigation/amazon-cuts-16000-jobs-globally-broader-restructuring-2026-01-28/]" data-type="link" data-id="https://www.reuters.com/legal/litigation/amazon-cuts-16000-jobs-globally-broader-restructuring-2026-01-28/]">layoff</a> of 16,000 people around the world.</p>

<p>Only two companies clearly declared that the layoffs were caused to some extent by the use of AI:<br></p>

<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Month</strong></td><td><strong>Company</strong></td><td><strong>Amount</strong></td><td><strong>% of Total Workforce</strong></td><td><strong>Notes</strong></td></tr><tr><td>January</td><td>Angi <a href="https://www.reuters.com/markets/companies/ANGI.O" target="_blank" rel="noreferrer noopener">(ANGI.O)</a></td><td>Roughly 350</td><td>Unknown</td><td>AI-driven efficiency improvements</td></tr><tr><td><br>January<br><br><br></td><td>Pinterest <a href="https://www.reuters.com/markets/companies/PINS.N" target="_blank" rel="noreferrer noopener">(PINS.N)</a></td><td>Less than 780<br></td><td><a href="https://www.reuters.com/business/world-at-work/pinterest-cuts-nearly-15-jobs-redirect-resources-ai-2026-01-27/">Less than 15%</a></td><td>Reallocating resources to artificial intelligence-focused roles and strategy</td></tr></tbody></table></figure>

<p>When it comes to IT offers, an excellent website for monitoring the IT market (especially in Poland) is: <a href="https://czyjesteldorado.pl/raport-rynku-pracy-it">https://czyjesteldorado.pl/raport-rynku-pracy-it</a>, where you will find a report from February 9, 2026.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/02/obraz-1-1024x732.png" alt="" class="wp-image-929"/></figure>

<p>We've seen steady increases since the beginning of 2025. The steady increase continues, with rates remaining stable. There doesn't seem to be much cause for concern.</p>

<p>In the US, job offers are clearly shifting towards ML/AI. <a href="https://www.techtarget.com/whatis/feature/Tech-job-market-statistics-and-outlook" data-type="link" data-id="https://www.techtarget.com/whatis/feature/Tech-job-market-statistics-and-outlook">Publication</a> clearly indicates that the IT job market is no longer the "automatically hot" it once was, but it still offers solid growth and significant opportunities for those with the right specialized skills, particularly in AI, data science, and cybersecurity. Continuous acquisition of new skills is key, as companies struggle to find qualified employees. The number of job offers has significantly decreased (around -36%) compared to previous years.</p>

<p>Similar to the Polish market (5% of offers are for juniors), beginners struggle to find work after or during their graduation from universities or private courses. On the other hand, 2025 was a year full of mass layoffs, which slightly slowed down the job market.</p>

<p>Comparing the data, the US tech market is still looking for talent, but technical skills are key to getting through the slowdown. In Poland, on the other hand, the market is active and stable, with a large number of job offers and good salary ranges, but the pace of salary growth and the recruitment boom no longer resemble the "Eldorado" of years past.</p>

<p>But is this a result of the AI ​​revolution? All indications are that demand for specific specializations fluctuates between them, but the market, both locally and globally, is not entirely inaccessible to a skilled specialist. Beginners are in a worse position, and AI may have some impact here.</p>

<h2 class="wp-block-heading" id="my">Summary and my conclusions</h2>

<p>Since this post turned out to be much longer than I expected, I will try to summarize it efficiently and draw the right conclusions. AI is truly changing the way software is developed, but it hasn't killed the IT market. At least not in 2026. Instead of a "here and now" revolution, we have a<strong> slow, uneven transformation</strong> in which winners and losers are clearly distinguished.</p>

<p>Below are the 8 most important conclusions from the above considerations and data.</p>

<h3 class="wp-block-heading">Productivity is growing, but not linearly</h3>

<ul class="wp-block-list"><li>Over 60–65% of programmers declare increased productivity thanks to AI.</li>

<li>The profit is mainly related to writing code, research, and learning – not the entire engineering process.</li>

<li>Design, architecture, domain modeling, and business decisions still require humans.</li>
</ul>

<h3 class="wp-block-heading">AI is a tool, not an employee</h3>

<ul class="wp-block-list"><li>There are no credible case studies of mass replacement of engineering teams by AI.</li>

<li>Most often, repetitive and supporting roles (support, back-office) are reduced, not core engineering.</li>

<li>Companies that tried to "cut corners" (e.g. Klarna) ended up getting hurt.</li>
</ul>

<h3 class="wp-block-heading">AI's biggest problem isn't a lack of power, but a lack of methodology.</h3>

<ul class="wp-block-list"><li>Hallucinations, “almost good” solutions, and difficult debugging are major sources of frustration.</li>

<li>Ad-hoc prompting does not scale in real projects.</li>

<li>The market is naturally moving towards Spec / Structure / Methodology Driven Development</li>
</ul>

<h3 class="wp-block-heading">Vibe-coding is a niche, not a standard</h3>

<ul class="wp-block-list"><li>Only about 25% of respondents use agents fully "without writing code".</li>

<li>Hybrid work models dominate: human + AI, not AI instead of humans.</li>
</ul>

<h3 class="wp-block-heading">Juniors and narrow specializations are most at risk</h3>

<ul class="wp-block-list"><li>Entering the industry is more difficult today than it was 5-10 years ago.</li>

<li>AI raises the “minimum threshold of competence.”</li>

<li>There is a growing demand for generalists, systems engineers and people who connect technology with the business context.</li>
</ul>

<h3 class="wp-block-heading">The IT job market hasn't collapsed – its shape has changed</h3>

<ul class="wp-block-list"><li>In Poland: stable number of offers, reasonable ranges, no panic.</li>

<li>In the US: shifting the focus towards AI/ML/Data, less "classic CRUD" dev.</li>

<li>Decrease in offers ≠ mass unemployment – ​​this is more of a correction after years of overheating.</li>
</ul>

<h3 class="wp-block-heading">SaaSs are not dying, but they have to defend themselves</h3>

<ul class="wp-block-list"><li>Investors are skeptical, sentiment is weak.</li>

<li>Small, simple SaaS are potentially replaceable by in-house + AI.</li>

<li>Large systems (ERP, enterprise, compliance, mission-critical) still have a huge advantage.</li>
</ul>

<h3 class="wp-block-heading">The narrative on social media is much more radical than reality</h3>

<ul class="wp-block-list"><li>AI-hype is used to sell courses, training and outreach.</li>

<li>The real market moves slower, more cautiously and much more pragmatically.</li>
</ul>

<h3 class="wp-block-heading">My point of view</h3>

<p>I hope the above summary adequately summarizes the content of the article. However, I'd like to add a few of my own thoughts. The game is multidimensional - its image is neither two-dimensional nor even five-dimensional. There are many players in the market: different company segments, diverse goals of market actors, investors, and the speculative bubble. So much is happening at once, and it's difficult to draw simple, clear-cut conclusions.</p>

<p>From my perspective - as someone who actively participates in the market, who has recently been intensively looking for new challenges and taking part in many recruitment processes in parallel - two things caught my eye the most.</p>

<p>First, <strong>very strict technical requirements</strong> are set during technical interviews. The market no longer rewards narrow competencies or the "safe middle class." What's expected is genuine independence, a comprehensive understanding of systems, and responsibility for technical decisions.</p>

<p><br>Secondly, there's <strong>considerable uncertainty in the approach to AI</strong>. Some companies proudly speak of their active use of tools like Claude Code or coding agents. Others, however, limit themselves to statements like, "We're using AI, but we don't yet have clear boundaries or methodologies." This is a clear signal that the market is in a transitional phase – tool adoption has outpaced process maturity.</p>

<p>Additionally, there's significant uncertainty surrounding the approach to AI. It's becoming increasingly clear that the market is becoming more challenging and requires versatility. In my opinion, this will lead to a model in which companies prefer to employ a few very strong, <strong>cross-functional units rather than maintaining extensive teams</strong> that struggle to coordinate their work.</p>

<p>This is how I see the job market in a few years:</p>

<ul class="wp-block-list"><li>strong focus on AI/ML,</li>

<li>a natural connection with the areas of Big Data and Cloud,</li>

<li>high value of people <strong>combining several specializations</strong> at the same time.</li>
</ul>



<p>My vision is that companies will <strong>gradually reduce their reliance on external software development </strong>services. Instead, they will acquire top talent from the market - people capable of independently designing, implementing, and developing systems, often acting as "managers unto themselves," working directly with the product manager or owner.</p>

<p>This isn't good news for everyone. However, it is very good news for those who can combine technology, business context, and the conscious use of AI as a tool, not a prosthesis.</p>

<p>I wish all readers a lot of enthusiasm for learning, because it will certainly come in handy, and the only recipe for career success is: creating your own products or quickly adapting to the surrounding IT employment market. I'd love to read your thoughts and opinions on this topic.<br><br>Thanks and see you next time!</p>


]]></content:encoded></item><item><title>Context Mapping - Another element in the DDD toolbox</title><link>https://dwisniewski.com/context-mapping-another-element-in-the-ddd-toolbox/</link><guid isPermaLink="true">https://dwisniewski.com/context-mapping-another-element-in-the-ddd-toolbox/</guid><pubDate>Sat, 31 Jan 2026 15:53:54 +0100</pubDate><category>Architecture</category><category>DDD</category><description>In strategic Domain-Driven Design (DDD), we distinguish several key elements. One of them is Context Mapping. Bounded Contexts can and even must communicate with each other. This is an integral part of software system…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-18.png" alt=""></p><p><strong>In strategic Domain-Driven Design (DDD), we distinguish several key elements. One of them is Context Mapping. Bounded Contexts can and even must communicate with each other. This is an integral part of software system design. Today, we will explore the types of mappings and describe them with real-world examples.</strong></p>

<h2 class="wp-block-heading">Embedding in DDD</h2>

<p>When it comes to DDD, we divide it into two components. Strategic DDD deals with high-level decisions, defining contexts, ubiquitous language, and communication between components (bounded contexts). Tactical DDD, on the other hand, breaks down the elements located within the bounded contexts into their constituent parts. This is a significant simplification, but for the purposes of this blog post, we can assume that this is sufficient information to understand the context of Context Mapping within this overall framework.</p>

<h2 class="wp-block-heading">Sources</h2>

<p>The literature that is helpful on this topic includes primarily the so-called <a href="https://www.amazon.pl/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=asc_df_0321125215?mcid=01da4817ec473e7c86b33c70ddbb6f4c&amp;tag=plshogostdde-21&amp;linkCode=df0&amp;hvadid=719657155183&amp;hvpos=&amp;hvnetw=g&amp;hvrand=15577930874052776757&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=1011577&amp;hvtargid=pla-449269547899&amp;psc=1&amp;language=pl_PL&amp;gad_source=1" data-type="link" data-id="https://www.amazon.pl/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=asc_df_0321125215?mcid=01da4817ec473e7c86b33c70ddbb6f4c&amp;tag=plshogostdde-21&amp;linkCode=df0&amp;hvadid=719657155183&amp;hvpos=&amp;hvnetw=g&amp;hvrand=15577930874052776757&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=1011577&amp;hvtargid=pla-449269547899&amp;psc=1&amp;language=pl_PL&amp;gad_source=1">"blue book"</a> by Eric Evans and "<a href="https://www.amazon.pl/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/ref=asc_df_0134434420?mcid=eaa3f100dcaa3237a37e93bd41dc646b&amp;tag=plshogostdde-21&amp;linkCode=df0&amp;hvadid=719657155321&amp;hvpos=&amp;hvnetw=g&amp;hvrand=13399360831320320471&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=1011577&amp;hvtargid=pla-451410218303&amp;psc=1&amp;language=pl_PL&amp;gad_source=1" data-type="link" data-id="https://www.amazon.pl/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/ref=asc_df_0134434420?mcid=eaa3f100dcaa3237a37e93bd41dc646b&amp;tag=plshogostdde-21&amp;linkCode=df0&amp;hvadid=719657155321&amp;hvpos=&amp;hvnetw=g&amp;hvrand=13399360831320320471&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=1011577&amp;hvtargid=pla-451410218303&amp;psc=1&amp;language=pl_PL&amp;gad_source=1">DDD Distilled</a>" written by Vaughn Vernon. As a supplement, we can use the <a href="https://github.com/ddd-crew/context-mapping" data-type="link" data-id="https://github.com/ddd-crew/context-mapping">DDD Crew repository</a>.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-14-779x1024.png" alt="" class="wp-image-752"/><figcaption class="wp-element-caption">Source: <a href="https://github.com/ddd-crew/context-mapping">https://github.com/ddd-crew/context-mapping</a></figcaption></figure>

<p>I could end the article by simply linking to these sources. However, I want to expand on the definitions with examples from real-world business. This is precisely the most difficult part of educating oneself and others about DDD. Few companies share their practices, and we mostly rely on theoretical examples proposed by educators. Today, we will try to break this pattern and discuss Context Mapping in a more practical way.</p>

<h2 class="wp-block-heading">Open / Host Service</h2>

<p>This situation involves one Bounded Context opening its API and allowing dependent services/modules to use it based on the API documentation (usually), exposing the language of its context externally but not reacting to the specific requirements of its clients. This is the most common model, especially in microservice applications, where Bounded Contexts communicate with each other via REST API.</p>

<p>A real-world example could be the Spotify application or another streaming platform. Let's assume that one Bounded Context is the Catalog, and the other is the Player. In this situation, the Catalog exposes its API or Facade (if it's a monolith). This is a typical scenario where the Player can use the data provided by the Catalog in any way it sees fit on its side, but only through the public API contract. This is particularly useful when we want a part of our system to be publicly accessible.</p>

<h2 class="wp-block-heading">Conformist</h2>

<p>In this type of mapping, we are dealing with an upstream-&gt;downstream relationship. It closely links the conformist part of the system (BC) with the upstream. It can be said that decisions made by the upstream can disrupt everything in the downstream BC that is based on the contract with the upstream. The downstream does not have its own domain model in this area and directly adopts the upstream model, accepting the risk of its changes.</p>

<p>A real-world example could be any application that uses Amazon's API. Amazon makes changes to its API? It breaks backward compatibility? You have to adapt. In this case, clear and predictable behavior from the API provider is essential to keep up with changes in the upstream system.</p>

<p>However, this involves communication with an external module. To better illustrate this with an example of a provider within our organization, let's consider any product company. Let the upstream be BC User Management, owned by the central platform team. The model should contain basic entities: User, Role, Permission, and the Value Object Status. Let's also assume that the team responsible for this BC has a strong position in the company, or its Tech Lead is a close collaborator of the management.</p>

<p>In this example, let's use a Bounded Context called Billing as the downstream service. Billing needs information about users as a client; it doesn't own the user identity and doesn't have the budget or mandate to create its own model (for example, due to staffing shortages).</p>

<p>In practice, this will mean that the Billing module will import DTOs from User Management and use them directly. In this case, fields such as user_id, role, or status (or many others) will be stored in exactly the same form. There is no mapping or translation involved.</p>

<p>If, one day, BC User Management changes statuses by name, alters the semantics of roles, or removes a field from the model, the Billing model will, in common parlance, "break down." Importantly, this is acceptable in this type of mapping. This is usually because the cost of isolation would be greater than the cost of adaptation. It also indicates that the Billing team has less influence on the company's overall strategy.</p>

<h2 class="wp-block-heading">ACL (Anti-Corruption Layer)</h2>

<p>An ACL (Anti-Corruption Layer) acts as an intermediary layer between two Bounded Contexts. Its purpose is to protect the downstream model from being contaminated by the language used in the upstream context and to provide resilience against changes, although this resilience is still limited.</p>

<p>Compared to the Conformist model described above, the main differences, besides the larger investment required during downstream BC implementation, are:</p>

<ul class="wp-block-list"><li>Downstream does not accept the upstream model</li>

<li>Downstream has its own domain-specific language</li>

<li>Integration is achieved through translation, not direct use of the models</li>
</ul>

<p>A real-world example is a system that handles subscription billing and uses a payment gateway or payment systems such as <a href="https://stripe.com/en-pl">Stripe</a>. The typical data structure in such systems includes: Customer, Invoice, PaymentIntent, and Subscription. The API changes relatively frequently, and the terminology is also subject to significant variations.</p>

<p>Our Bounded Context, which we'll call <em>Billing</em>, might use completely different terminology, for example: <em>Payer</em>, <em>Charge</em>, <em>BillingPeriod</em>, <em>Settlement</em>. In this case, the Billing team doesn't want the semantics and naming conventions to leak into their model (because if we change payment providers, we might have a problem, and the change would leak into our model).</p>

<p>We then create an ACL, which is a layer that maps data from the payment system. The class using the API could then be called, for example, <em>BillingPaymentAdapter</em>, and we add a PaymentMapper to it, which acts as our ACL. For clarity, I'll include a diagram:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-8-1024x128.png" alt="" class="wp-image-783"/></figure>

<p>As we can see above, our downstream model is completely independent of Stripe or any other provider. Here's a good example of the implementation: the ACL (Anti Corruption Layer) should reside in the infrastructure layer if we are using a Hexagonal architecture or its equivalent in other approaches. According to good practices (SOLID principles), dependencies should only flow in one direction (the domain should not be aware that the ACL translates from an external system). For example, creating a dependency like domain -&gt; infrastructure or domain -&gt; Stripe SDK is not allowed. The domain in our code should only contain information about the ACL class interface (for example, PaymentProviderPort).</p>

<h2 class="wp-block-heading"><br>Shared Kernel</h2>

<p>In some situations, we want the common parts of Bounded Contexts and their model to be deliberately separated, limited, and shared by both modules. The key characteristics are that the code in the shared kernel should be kept to a minimum, and it requires coordination on both sides of the relationship (there is no upstream-downstream relationship, but rather a more balanced one).</p>

<p>This mapping makes sense when both Bounded Contexts truly share the same concept and definitions, the cost of duplication and synchronization is greater than the cost of sharing, and the teams on both sides are aware that changes must be coordinated collaboratively.</p>

<p>As an example, consider a business application containing the following modules: <strong>Identity</strong> and <strong>Audit</strong>. The <strong>Identity</strong> module is responsible for users, roles, permissions, and access policies – typical functionality in many B2B platforms. The <strong>Audit</strong> module will maintain a log of events, recording who performed a given action and when, as well as fulfilling any legal requirements such as ISO or SOC2.</p>

<p>In both contexts, <em>UserId</em> and <em>TenantId</em> will be common concepts. This means that validation rules, semantics, and Value Objects will be shared – for example, a Value Object named <em>Permission</em>. In the shared-kernel (if it's a modular monolith), we can place the following classes:</p>

<pre class="wp-block-code"><code>shared-kernel/
    identity/
        TenantId
        UserId
    security/
        Permission
    time/
        Clock </code></pre>

<p>In the code above, we see that the common parts of both models will be controlled by both teams. Any change to TenantId must undergo review from both sides, and contract tests must be written to ensure compatibility from both sides of the relationship.</p>

<p>Shared Kernel is recommended in cases where the organization has a high level of organizational maturity, including shared code reviews, shared testing, and a clear division of responsibilities. Furthermore, the teams must collaborate closely, share common business goals, and be able to agree on changes to the Shared Kernel. Imagine a Money class. If changes are made to it, they will likely affect the entire organization globally, thus the sensitivity to change is balanced across all teams.</p>

<p>However, care must be taken not to overload the Shared Kernel with too many things. It should have limited responsibility, reduced to a minimum, and the issues it covers should be marginal to the Bounded Contexts that use it. Ideally, the Shared Kernel should be small, slow-changing, and contain Value Objects rather than complex processes or entities. It's also good if it doesn't have dependencies on infrastructure – this significantly simplifies design and coding. When a divergence in definitions is more dangerous than coupling, we use a Shared Kernel. In other cases, other types of mappings should be considered.</p>

<h2 class="wp-block-heading">Published Language</h2>

<p>It must be admitted that this form of mapping has sometimes much in common with <strong>Open/Host Service</strong>. I'm referring primarily to the form of collaboration between teams. One team opens up a space with documentation, which other Bounded Contexts access to obtain information about naming conventions, interaction documentation, and some details about the processes the API provides. Let's look at great example of the difference.</p>

<p><strong>OHS without PL</strong>: The bank provides an API for transfers. The /transfers endpoint accepts JSON with the fields sender_account_id, recipient_account_id, amount_in_cents, and currency_code. This is OHS - the API is open and documented. But if, in 6 months, the bank changes amount_in_cents to amount_minor_units, all clients will have to adapt. Each downstream system translates this data into its own domain language.<br><br><strong>OHS + PL</strong>: The same bank, but it implements the <em>ISO 20022</em> standard for payments. It uses precisely defined types such as CreditorAccount, InstructedAmount, and PaymentIdentification from the XML/JSON schema defined by an international committee. Now the semantics are common and stable. When Visa, Mastercard, and SWIFT use the same ISO 20022, everyone speaks the same language. A change would require ratification of a new version of the standard by the committee.</p>

<p>To summarize the diffs:<br><strong>Open Host Service </strong>operates at the <strong>integration architecture level </strong>(<strong>HOW</strong> we expose services: REST, gRPC, access policy), while Published Language operates at the <strong>domain semantics</strong> level (<strong>WHAT</strong> the data means: vocabulary standardisation, contract governance). These are not "patterns used in combination," but orthogonal dimensions - you can have an open API with your own dialect (OHS without PL) or a closed ISO 20022 standard only for partners (PL without OHS).</p>

<p>Let's look at the visualisation:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-20-1024x419.png" alt="" class="wp-image-829"/></figure>

<p>The concept is therefore very simple. Let's take, for example, applications that use OAuth2 for authenticating/authorizing their users. When you log in to an application using your Google account, the OAuth Published Language is at work:</p>

<ul class="wp-block-list"><li><code><em>access_token</em></code> - access token</li>

<li><code><em>refresh_token</em></code> - refresh token</li>

<li><code><em>scope</em></code> - scope of permissions</li>
</ul>

<p>This language is published as a standard, and everyone understands it the same way – whether it's Facebook, Google, or GitHub. Therefore, with an open API, we can connect directly to the services mentioned above thanks to this language, which is published as a universally known standard.</p>

<h2 class="wp-block-heading">Separate Ways</h2>

<p>This mapping format assumes that integration between components (BC) is not needed or, in some cases, will even be impossible. In this scenario, for the purposes of a given context, we can freely duplicate the ubiquitous language, write our own solutions, processes, and algorithms because another team has no insight into or interest in seeing the changes and assumptions that our project implements.</p>

<p>Sometimes it's easier to write your own package/module than to integrate with an internal or external business component. An example of this would be an ERP system for a manufacturing company.</p>

<h4 class="wp-block-heading">Context 1: Production Planning</h4>

<ul class="wp-block-list"><li>Manages the production schedule</li>

<li>Assigns machines and operators</li>

<li>It tracks the progress of production orders</li>

<li>It has its own definition of "<em>Order</em>" = a production order with dates and machines.</li>
</ul>

<h4 class="wp-block-heading">Context 2: Quality Control</h4>

<ul class="wp-block-list"><li>It has its own definition of "Order" = a batch of products to be inspected</li>

<li>It conducts product inspections</li>

<li>It records defects and non-conformities.</li>

<li>It generates quality reports.</li>
</ul>

<p>In this case, the order is something completely different, and production planning is not closely linked to Quality Control. The reasons for this separation can vary: for example, the current solution "works, so we don't touch it,"<strong> different teams</strong>, <strong>different legacy systems:</strong> Production Planning uses an old SAP module from 2005, while Quality Control has its own system purchased from a different vendor in 2018, <strong>different data models</strong>, or different work rhythms of the Bounded Contexts.</p>

<p><br>Let's assume the cost of writing the integration is 200,000 PLN. Let's say this represents 7 months of work for one programmer working on a B2B contract - based on average senior developer salaries – I encourage you to read my <a href="https://dwisniewski.com/is-it-the-end-of-eldorado-in-polish-it/" data-type="link" data-id="../is-it-the-end-of-eldorado-in-polish-it/">previous article</a> discussing the situation in the Polish IT market.</p>

<p>The question to ask in these types of problems is: is it worth integrating two services if the only benefit is some nice diagrams from the architects at the end of the day? Of course, this is an oversimplification, but in this particular case, there's no point in integrating something that naturally operates completely independently in the business. I hope this illustrates the use cases somewhat.</p>

<h2 class="wp-block-heading">Big ball of mud (rather antipattern)</h2>

<p>Oh, I could write for hours about this. In my 10-year career, this is the type of mapping I've encountered most often. The results of modeling Bounded Contexts in this way are usually mediocre, if not downright terrible. It leads to mixed aggregates, excessive coupling, a large amount of knowledge hidden in the developers' heads, and difficulties in obtaining testable code.</p>

<p>This is actually just a simplified overview. It's important to remember that most business or B2B applications will have subsystems built in this way. Very often, the code within these subsystems will be crucial to the application's functionality. To solve the problem encountered with this mapping, it's necessary to break down the large "ball of mud" into smaller, more understandable Bounded Contexts whenever possible. Sometimes, the only way is to create new Bounded Contexts for new features and separate them from the "Big Ball of Mud" using the ACL (Anti-Corruption Layer) discussed above.</p>

<p>I think I'll discuss the topic of the "Big Ball of Mud" in another article dedicated to legacy systems and ways to modernize them. So I invite you to follow the blog; many interesting stories based on real-world examples (anonymized, of course) from my previous projects may appear here.</p>

<h2 class="wp-block-heading">Not all topics were covered</h2>

<p>In the sources mentioned in the introduction, we can observe some ambiguity surrounding Bounded Contexts and a slight confusion between this concept and team relationship types. To provide more structure, I created my own diagram that separates the dependency of Bounded Contexts from team relationships. The concepts are very closely related, but I feel that this distinction hasn't been clearly made in the books and materials I've read. This is simply <strong>my interpretation</strong> of the available literature. Let's look at the image below:</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-18-1024x822.png" alt="" class="wp-image-820"/></figure>

<p>As you can see, I didn't cover two variations in the post:</p>

<ul class="wp-block-list"><li>Customer-Supplier</li>

<li>Partnership</li>
</ul>

<p>I did this intentionally. In my understanding of Context Mapping, the Customer-Supplier and Partnership relationships refer more to communication between teams than to the technical conditions under which they connect. I believe they are self-explanatory from their names and there's no need to go into more detail. I will address the issue of communication between teams in a separate article, where I will include the above-mentioned points and discuss the red blocks from the diagram in more detail.</p>

<p>Another element from the legend is the arrow, which describes the communication overhead between teams. This quite accurately reflects how much you need to coordinate with the team maintaining the neighboring business component and how many meetings/communications you will need to exchange with them. In some cases, this will be a significant criterion, for example, in situations where communication is not well-developed.</p>

<p>When we look at my visualization, we see that the green area is nested inside the red one. This also describes a certain hierarchy in the division of tasks. First, from a higher level, we look at communication between teams (or, if one team is responsible for multiple business capabilities, communication within that team), and only then do we go down to the level of mappings. That's how I see it and that's how I organize it in my mind.</p>

<h2 class="wp-block-heading">Summary</h2>

<p>I hope I have described the topic of Context Mapping in a reasonably clear way. From the perspective of strategic DDD, it is a very important element of system-level design. Many sources, presentations, and books describe context mapping in a very general way. I tried to break away from that and show examples of applications and systems that we encounter in our daily work or everyday life.</p>

<p>It's important to remember, however, that at the enterprise level, Context Mapping is not just a technical exercise, but above all a powerful political tool. Every line on the map - whether Customer-Supplier or Conformist - reveals the actual power dynamics within the organization and the flow of decision-making. As architects, we must be aware that the choice of pattern often stems not from the elegance of the code, but from budgetary hierarchies or the willingness of teams to cooperate. Context mapping allows us to name these tensions explicitly, transforming architecture from a theoretical diagram into a real strategy for navigating the power structure within the company.</p>

<p>If you disagree with my arguments, notice any imperfections, or would like to discuss the topic further, please feel free to comment. We learn the most through exchanging ideas. Nothing is set in stone. Methodologies and concepts can change, and it's important to keep up with market changes and adapt definitions to the world around us – never the other way around!</p>

<p>See you next time!</p>
]]></content:encoded></item><item><title>Why Janek does not program? [Ep 3. final- 2026]</title><link>https://dwisniewski.com/why-janek-does-not-program-ep-3-final-2026/</link><guid isPermaLink="true">https://dwisniewski.com/why-janek-does-not-program-ep-3-final-2026/</guid><pubDate>Mon, 19 Jan 2026 16:06:47 +0100</pubDate><category>Job Market</category><description>This is the third and final installment in the series &quot;Why Janek Doesn&#x27;t Program?&quot;. After four years, we revisit the issue, examine what has changed over time, and examine the current situation of the titular Janek.…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/Gemini_Generated_Image_8ewufh8ewufh8ewu.png" alt=""></p><p><strong>This is the third and final installment in the series "Why Janek Doesn't Program?". After four years, we revisit the issue, examine what has changed over time, and examine the current situation of the titular Janek. We'll try to present the situation of entry-level users and try to find good advice and guidance for them. I invite you to summarize the series and share your thoughts.</strong></p>

<h2 class="wp-block-heading">A quick recap of the previous two parts</h2>

<p>In the <a href="https://dwisniewski.com/why-janek-does-not-program-ep-1-2022/" data-type="link" data-id="../why-janek-does-not-program-ep-1-2022/">first part</a> we approached the topic:<br><br>A 2022 article examines why there are so few programmers in Poland (only 0.66% of the population, compared to 1.73% in Sweden and 1.21% in the US), despite the market then seeking around 100,000 specialists annually and the lure of excellent salaries. I debunk the myth that programming requires special talents – citing research showing that around 44% of people can create a mental model of simple programming instructions, even without prior experience.</p>

<p>The problem lies elsewhere: primarily in the fear of the unknown and the belief that programming is incredibly difficult, which blocks people even before their first attempt at learning. Added to this is the paradox of the job market – 80-90% of offers are for specialists, and only 10% for juniors, so even if someone is learning, it's difficult for them to break into the industry. I announced that this is just the beginning of the analysis and that this topic will be continued.</p>

<p><br>In the <a href="https://dwisniewski.com/why-janek-does-not-program-ep-2-2022/" data-type="link" data-id="../why-janek-does-not-program-ep-2-2022/">second</a> part, I lash out at Polish universities and demonstrate the absurdity of the system: every year, 35,000 students enter computer science, and only 13,000 graduate, meaning 60% drop out. But be warned – this isn't because programming is difficult, but because students are drowning in algebra, physics, and other science subjects, of which there are plenty, and programming itself only accounts for 20-30% of their study time. Of the 25 subjects in the first two years, only 5-6 are actual programming.</p>

<p>I criticized the fact that lecturers are mostly theoreticians with no commercial experience, teaching on outdated hardware and software from before 2010. This is why bootcamps are ruining universities, because even though they're shorter, their programs actually meet market needs. The only advantage of these programs is the internships, which actually help you enter the market. I conclude that the education system is completely out of step with IT, failing to prepare people for real jobs, and wasting potential programmers on unnecessary courses.</p>

<h2 class="wp-block-heading">What has changed?</h2>

<p>First and foremost, the situation for juniors has worsened. In my <a href="https://dwisniewski.com/is-it-the-end-of-eldorado-in-polish-it/" data-type="link" data-id="../is-it-the-end-of-eldorado-in-polish-it/">article</a> from a week ago, where I analyze the current situation, a downward trend is clearly visible (only 5% of offers are directed at juniors), meaning there are twice as many junior offers – sick!</p>

<p>Programming schools have largely fallen into decline. The promise of entering IT is so distant that even touts and marketing magic can't convince a warehouse worker that they'll become a programmer in three months. A new trend has emerged: instead of promises of becoming a programmer, we have promises of becoming an AI DEV, which strongly captures the imagination of potential customers. Nevertheless, the reduction in the training market has been further exacerbated by AI. I'm linking to an <a href="https://mycompanypolska.pl/artykul/upadla-znana-szkola-programowania-rynek-it-drastycznie-sie-zmienia/17620" data-type="link" data-id="https://mycompanypolska.pl/artykul/upadla-znana-szkola-programowania-rynek-it-drastycznie-sie-zmienia/17620">article</a> describing this phenomenon.</p>

<p>The labor market is now an employers' market, so first of all:</p>

<ul class="wp-block-list"><li>Junior has little say in the negotiation of the salary (as if it matters, since even getting an interview is bordering on a miracle)</li>

<li>The employer no longer has to worry that the mid will escape because the competition will give him +20% to the salary - there is no pressure to raise it, we can also see this in the mentioned <a href="https://dwisniewski.com/is-it-the-end-of-eldorado-in-polish-it/" data-type="link" data-id="../is-it-the-end-of-eldorado-in-polish-it/">article</a>.</li>
</ul>

<p>It is not difficult to guess that these changes are rather negative for people who want to be in IT.</p>

<h2 class="wp-block-heading">What hasn't changed?</h2>

<p>The way universities operate hasn't changed much. Syllabi have been slightly adjusted to accommodate AI and ML, but generally speaking, higher education in Poland, especially public education, isn't eager to pivot and change directions quickly. The problem lies with the faculty, which stalled 10 years ago. And the world is rushing forward inexorably. Even for me, someone who tracks trends and observes the market daily, it's difficult to grasp certain aspects cognitively. It's no wonder, then, that those unfamiliar with the market struggle to keep up.</p>

<p><br>Private universities are meeting these expectations, offering programs more aligned with market needs. The general situation on the Polish labor market (high minimum wage, decline in two-person households, rising living costs in job-providing centers) is a kind of impediment to private education. Few will take out loans for the illusion of a future job in the Eldorado that, from a courier's or salesperson's perspective, is IT. I personally believe that IT is one of the best markets for financial development. However, the entry barrier is so high that it requires difficult decisions and a great deal of determination to achieve success.</p>

<h2 class="wp-block-heading">AI tools and the situation of juniors</h2>

<p>A very hot topic, i.e. AI in IT, should be viewed from two angles:</p>

<ol class="wp-block-list"><li>AI/ML subdomain in the job market</li>

<li>AI support in everyday work (AI clients as I say)</li>
</ol>

<h3 class="wp-block-heading">AI/ML</h3>

<p>When it comes to AI/ML, a significant number of companies are migrating their software solutions to those based on language models, machine learning in general, and data processing. This supports the natural evolution of companies to become AI-driven. This also happened at my current company. The entire software team was laid off, leaving a handful of people to replicate certain functionalities using the data platform and AI/ML. I personally stayed at the company, as described in the <a href="https://dwisniewski.com/data-engineering-the-key-to-managing-information-in-the-digital-world/" data-type="link" data-id="../data-engineering-the-key-to-managing-information-in-the-digital-world/">article</a>.</p>

<p>Unfortunately, there's no good news for juniors here. Their skillset and lack of experience make it impossible to start in AI/ML or even the data industry. They require solid experience and the ability to think in design and system terms, not just solve individual small problems. That's why, for me, it's easier for a programmer to change development directions than for someone who doesn't exist in the market and has no experience.</p>

<h3 class="wp-block-heading">AI Clients</h3>

<p>The news here is encouraging. You no longer need to know everything to code well. Coding assistants like Codex, Claude Code, Antigravity, and finally Cursor (arguably the most affordable in terms of both price and usability) make it completely easier:</p>

<ul class="wp-block-list"><li>Completing homework assignments in recruitment</li>

<li>Learning the issues point by point</li>

<li>Writing a portfolio on Github or other media</li>

<li>Creating applications that are alive and allow for micro-founding</li>

<li>Employer perspective: Junior + AI == Mid for a much lower rate (average -50% salary)</li>
</ul>

<h2 class="wp-block-heading">AI will empower the smart but weaken the stupid (sorry :()</h2>

<p>I have a theory that AI makes the stupid even more stupid and helps the smart. Now you can make a 100% difference by investing less than 100% more. With AI, you can accelerate the learning process, shorten the learning curve, and deliver value to the business at a much lower rate. From a non-technical perspective, it doesn't matter whether it's a junior or mid-level; what matters is the result. Intelligent and clever people will be able to use this to their advantage.</p>

<p>The rest, however (I don't want to name anyone here; I'm not here to judge others; I was young myself and I know that mindsets change over time; that's the nature of youth) have a big problem. If you're not using AI to increase your chances in the market, you're making a huge mistake. It's impossible to catch up with your competitors today without AI, because anyone with a better mind will do it. This also applies to people who want to change industries.</p>

<h2 class="wp-block-heading">The answer to the title question in 2026</h2>

<p>Let's check the official data and compare the number of programmers with 2022. The latest reports show a significant increase from 250,000 to (numbers vary) approximately 300,000-350,000 professional programmers. These figures indicate a growth of approximately 30%. While these figures are imprecise, as IT is a broad term and programmers should typically account for 70% of jobs, this is a very rough estimate. Most data points to the broader IT market, not specifically programmers.<br>I obtained the data from several sources:<br><br><a href="https://forsal.pl/praca/wynagrodzenia/artykuly/9527794,mamy-juz-w-polsce-ponad-400-tys-specjalistow-it-ale-prostsze-zadania.html">https://forsal.pl/praca/wynagrodzenia/artykuly/9527794,mamy-juz-w-polsce-ponad-400-tys-specjalistow-it-ale-prostsze-zadania.html</a><br><a href="https://stormit.pl/raport-o-programistach-2025/">https://stormit.pl/raport-o-programistach-2025/</a><br><a href="https://www.otoprzetargi.pl/news/w-polsce-brakuje-ok-50-tys-specjalistow-it-a-w-ue-ponad-270-tys">https://www.otoprzetargi.pl/news/w-polsce-brakuje-ok-50-tys-specjalistow-it-a-w-ue-ponad-270-tys</a></p>

<p>On average, the percentage of Poles coding has increased as we are currently going through a crisis and the number of our citizens is decreasing year by year. This increases the percentage. Therefore, we have approximately 0.8-0.9% of the total population. It appears that the progress of digitization and generational renewal in the labor market is bringing us closer to more advanced economies such as Germany and Sweden.</p>

<h2 class="wp-block-heading">Janek is programming after all! But he's having trouble with the work</h2>

<p>As our baseline metrics have improved compared to 2022, we must deny the notion that Poles aren't programming professionally. This has changed, the market is becoming increasingly saturated, and this is causing problems at the entry level. We won't overcome this without a change in the mindset of employers.</p>

<p>In my opinion, we should value individuals and take a closer look at them, rather than filtering them out because they have less than X years of hands-on experience. This is a very difficult issue because assessing someone requires knowledge of people and a certain sensitivity, an instinct for detecting potential. Companies are willing to pay significant amounts of money to talent acquisition companies to bring in high-potential specialists. But when it comes to juniors, the market isn't yet ripe for large-scale hiring.</p>

<p>Yeah, maybe that's a business idea: creating a junior farm, giving them all the AI ​​tools available, and helping them apply for positions from junior to mid-level? I'll have to think about it. Anyway.</p>

<p>What I'm trying to convey here is that, in my opinion, recruitment processes shouldn't be based solely on experience, but also on individual predispositions to adapt and adapt to a given industry. The market isn't ready for this yet, but I believe technological advances and the deteriorating macroeconomic conditions in Poland will force employers to seek solutions. And this is where juniors come in, all dressed up, who, for low wages (also due to the zero-tax relief for under-26s and the government's threats to eliminate free B2B contracts – tax preferences), can achieve 90% of the results of someone earning 50% more for less. That's how I see it; I don't know if anyone agrees. Ultimately, everyone is entitled to their own perspective.</p>

<p>I'm curious how you assess the situation in the Polish IT market and what solutions you have for the problems facing both employees and employers. You already know my perspective. Thank you for reading this far!</p>
]]></content:encoded></item><item><title>Why Janek does not program? [ep. 2 - 2022]</title><link>https://dwisniewski.com/why-janek-does-not-program-ep-2-2022/</link><guid isPermaLink="true">https://dwisniewski.com/why-janek-does-not-program-ep-2-2022/</guid><pubDate>Sun, 18 Jan 2026 12:35:30 +0100</pubDate><category>Job Market</category><description>This article was previously published in Polish, but I thought I&#x27;d post it to give you the information you need four years later. Please share the article from 2026, which will be published soon. In the first part of…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/Gemini_Generated_Image_59rc9q59rc9q59rc.png" alt=""></p><p><strong>This article was previously published in Polish, but I thought I'd post it to give you the information you need four years later. Please share the article from 2026, which will be published soon.</strong><br><strong>In the first part of this article, we learned the numbers that describe the shortage of programmers in the Polish IT job market. We also learned how many active programmers currently work in the industry and what the situation is like in other countries. Today, we'll expand on the topic of universities and their impact on the current situation.</strong></p>

<p>This is the second part of the series, I invite you to follow it in its entirety</p>

<p>If you are reading part 2 and haven't managed to read part 1 of the series, be sure to check it out <a href="https://dwisniewski.com/why-janek-does-not-program-ep-1-2022/" data-type="link" data-id="../why-janek-does-not-program-ep-1-2022/">here</a>: link to part 1 of the series.</p>

<h2 class="wp-block-heading">Higher education in numbers</h2>

<p>According to <a href="https://stat.gov.pl/download/gfx/portalinformacyjny/pl/defaultaktualnosci/5488/8/8/1/szkolnictwo_wyzsze_w_roku_akademickim_2021-2022_2.pdf" data-type="link" data-id="https://stat.gov.pl/download/gfx/portalinformacyjny/pl/defaultaktualnosci/5488/8/8/1/szkolnictwo_wyzsze_w_roku_akademickim_2021-2022_2.pdf">official data </a>from the Central Statistical Office (GUS), universities in Poland produce approximately 13,000 computer science graduates each year. Not all of them are future programmers, but it's safe to assume that at least half will pursue this field. After completing programming and database courses and completing internships (if the university offers them), computer science graduates can look for their first job.</p>

<p>Many students can program before entering university. However, we must distinguish between the ability to work on commercial projects and programming skills, which alone don't guarantee a job or starting a business and fulfilling contracts. Furthermore, in some cases, companies hiring Junior Developers require a computer science degree.</p>

<p>Surprisingly, however, every year we have at least 35,000 IT graduates (<a href="https://biznes.newseria.pl/biuro-prasowe/it_i_technologie/rekordowa-liczba,b1435230000" data-type="link" data-id="https://biznes.newseria.pl/biuro-prasowe/it_i_technologie/rekordowa-liczba,b1435230000">source</a>), (<a href="https://www.gov.pl/web/edukacja-i-nauka/informatyka-wciaz-nie-ma-sobie-rownych--wyniki-rekrutacji-na-studia-w-roku-20202021]" data-type="link" data-id="https://www.gov.pl/web/edukacja-i-nauka/informatyka-wciaz-nie-ma-sobie-rownych--wyniki-rekrutacji-na-studia-w-roku-20202021]">source2</a>) who choose an academic path. What happens to the 60% of students who don't complete their program? The answer is simple: they enter the job market directly (not necessarily in IT) or other fields of study and continue their education. There is no other option, if we take into account that unemployment in Poland is only 5-6% (<a href="https://stat.gov.pl/obszary-tematyczne/rynek-pracy/bezrobocie-rejestrowane/" data-type="link" data-id="https://stat.gov.pl/obszary-tematyczne/rynek-pracy/bezrobocie-rejestrowane/">GUS</a>).</p>

<h2 class="wp-block-heading">Is programming too difficult?</h2>

<p>The thesis from the first part seems to be confirmed: programming, or computer science in general, seems too difficult or uninteresting for IT aspirants. After the first year of education, most candidates leave university.</p>

<p>Nothing could be further from the truth, and this is precisely where the problem lies. At universities, when we review the so-called syllabi, we discover that among the approximately 25 subjects in the first two years of study, there are only 5-6 subjects closely related to programming.</p>

<p>Overwhelmed by algebra or physics, students drop out or are expelled from universities, even if their aptitude for learning programming is sufficient. Potentially promising programmers are not profiled specifically for programming; instead, they possess extensive knowledge of the sciences.</p>

<p>On the other hand, it could be said that this tests a student's ability to learn. If they learn differentiation, they will certainly be able to grasp the abstraction that constantly occurs in programming.</p>

<p>I'll leave the above counterargument open to debate. Do we need this much time spent on math and physics? Personally, I think the basics of math and physics would be perfectly sufficient. Meanwhile, in my first four semesters, I studied five mathematics subjects alone: ​​two semesters of calculus, algebra, statistics, and discrete mathematics. Did this help me learn programming? I'm not convinced.</p>

<h2 class="wp-block-heading">Programming schools are crushing public universities</h2>

<p>This is precisely why programming schools are developing so rapidly. They are unrivaled in the public sector when it comes to programming instruction. They claim to deliver better results in a shorter time compared to their educational competitors. I'll leave the actual effectiveness of bootcamps for discussion – that's a topic for a separate article. The focus is solely on their assumptions. Higher education in Poland is not prepared for the enormous need to "produce" programmers.</p>

<p>I haven't found a higher education institution in Poland that focuses directly on programming. Typically, programs are general in nature, with the option of specializing in the final semesters and writing an engineering thesis related to programming.</p>

<p>If computer science degree programs covered what well-formed bootcamp curricula do today, there would certainly be many more people willing to complete them.</p>

<h2 class="wp-block-heading">Let's fantasize!</h2>

<p>Imagine a programming course extended fivefold. And it was free. How many portfolio projects could we create during such a course? How extensively could we cover algorithms and data structures? How many tools like Scrum, version control systems, or software engineering topics could we learn in depth enough to launch us into the job market?</p>

<p>Programming schools aren't perfect either; they overpromise their clients. Their curricula, however, align much better with market demands in IT. This means we have bootcamps and courses that are too short to adequately explore certain topics, and, on the other hand, programs overloaded with unnecessary topics.</p>

<p>Personally, if I had to choose now, I'd still go to full-time studies (or part-time if I could afford it), but I'd learn programming on my own and look for a job after four or five semesters. As a result, I'd probably have to switch to part-time studies. This is the advice I give to high school graduates who want to become programmers.</p>

<h2 class="wp-block-heading">Archaic technologies only make the situation worse</h2>

<p>Higher education is lagging behind the technical demands placed on candidates in the job market. Programming instruction in higher education often boils down to learning a low-level language and a few object-oriented languages. Over the course of four years, approximately 20-30% of subjects are strictly programming-related. This is insufficient. Furthermore, the software versions used in laboratories date back to pre-2010.</p>

<p>Higher education faculty are often theoreticians who haven't worked in commercial settings. In my case, programming classes were taught by very polite lecturers, but unfortunately, most of them graduated a dozen or so years ago. They weren't up to date.</p>

<p>If universities sought programming trainers available commercially, students would gain knowledge directly from the place they ultimately end up. The curricula themselves would also be more responsive to the market, which, as we know, is changing rapidly.</p>

<p>The only advantage, a major advantage, is the internships that most universities offer to their students. In my case, like many other candidates, the internship proved to be a milestone that propelled me into the job market. After landing my first job, it became increasingly easier with each passing year to negotiate terms and seek new projects and employers.</p>

<h2 class="wp-block-heading">Summary</h2>

<p>In this article, I bluntly criticize higher education. Our education doesn't adequately prepare students for programming and market needs. Many students also abandon computer science studies due to difficulties with science subjects. The problem is exacerbated by the lack of appropriate faculty. Nevertheless, internships are undoubtedly a plus, making technical studies worthwhile. However, this isn't enough.</p>

<p>Fortunately, programming has been a key pillar of extracurricular activities in primary schools for some time now. Hopefully, secondary schools dedicated to programming, which are also slowly emerging, will also set the pace for universities. In the coming years, we will see the popularization of programming, which should have positive effects on the IT market in Poland.</p>


]]></content:encoded></item><item><title>Why Janek does not program? [ep. 1 -2022]</title><link>https://dwisniewski.com/why-janek-does-not-program-ep-1-2022/</link><guid isPermaLink="true">https://dwisniewski.com/why-janek-does-not-program-ep-1-2022/</guid><pubDate>Sun, 18 Jan 2026 12:21:31 +0100</pubDate><category>Job Market</category><description>This article was previously published in Polish, but I thought I&#x27;d post it to give you the information you need four years later. Please share the article from 2026, which will be published soon. Programming is…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/Gemini_Generated_Image_oygjd1oygjd1oygj.png" alt=""></p><p><strong><strong>This article was previously published in Polish, but I thought I'd post it to give you the information you need four years later. Please share the article from 2026, which will be published soon.</strong></strong></p>

<p><strong>Programming is considered particularly difficult. Job advertisements show how highly the market values ​​programmers' skills. Compared to other industries, such as trade, manufacturing, or even marketing, a programmer can earn significantly more based on their knowledge, skills, and experience. Why are so few people able to become programmers? Why, despite high demand, does such a small percentage of our population decide to begin their programming journey and then seek their first IT job?</strong></p>

<h2 class="wp-block-heading">Data is the basis for analysis</h2>

<p>To analyze the problem, we'll first look at the real numbers. In Karol Bednarz's <a href="https://enterthecode.pl/praca-w-it/specjalista-it-ilu-jest-programistow/" data-type="link" data-id="https://enterthecode.pl/praca-w-it/specjalista-it-ilu-jest-programistow/">article</a>: How many programmers are there in the world and how many in Europe?"<strong> [2022]</strong>, which was published half a year ago (relatively fresh data) we will check how many programmers there are in Europe in individual countries.</p>

<p><strong>Poland:</strong></p>

<p>Number of developers: <strong>250 000&nbsp;</strong><br>Number of inhabitants of Poland (source: Central Statistical Office): approx. <strong>37 767 mln</strong><br>The share of programmers in our population is only: <strong>0,66 %</strong><br><strong><br>Comparison with other European countries:</strong><br><strong>Germany: 901 000 </strong>programmers, the country has 83.2 million inhabitants <strong>-&nbsp; 1,08 %</strong><br><strong>Sweden: 180 000 </strong>programmers, the country has 10.42 million inhabitants <strong>-&nbsp; 1,73 %</strong><br><strong>Ukraine: 212 500 </strong>programmers, the country has 43.79 million inhabitants <strong>-&nbsp; 0,49 %</strong><br><strong>UK: 408 000 </strong>programmers, the country has 67.33 million inhabitants <strong>-&nbsp; 0,61 %</strong></p>

<p><strong>And USA:</strong><br><strong>4 000 000 </strong>programmers (4.3 million across North America) (https://www.bairesdev.com/blog/how-many-software-developers-in-the-world/), the country has 331.9 million inhabitants <strong>-&nbsp; 1,21 %</strong></p>

<p><strong>*data regarding the number of inhabitants comes from Google.com as of February 13, 2023.</strong></p>

<p>The above data should now be compared with the demand on the IT labor market in Poland:</p>

<p>The number of jobs sought in the first quarter of 2022 was: <strong>26,121</strong>.</p>

<p>An <a href="https://www.prawo.pl/kadry/branza-it-liczba-ofert-pracy-i-stawki-w-i-kwartale-2022-r-raport,514673.html" data-type="link" data-id="https://www.prawo.pl/kadry/branza-it-liczba-ofert-pracy-i-stawki-w-i-kwartale-2022-r-raport,514673.html">article</a> on Prawo.pl perfectly describes these numbers from the first quarter of 2022:<br></p>

<p>That's just one quarter. If we multiply that by four, we'll find that the market was looking for about 100,000 programmers annually in 2022. If the entire demand were met (and we already know it hasn't), we would have about 350,000 programmers in Poland, which brings us closer to the desired 1% of the population.</p>

<p>To confirm this number, we can also look at the 2022 IT Salary Report published by justjoin.it. The report shows that job offers for programmers have exceeded 100,000. Source: <a href="https://raport.justjoin.it">https://raport.justjoin.it</a></p>

<p>Compared to developed countries (excluding the UK), we lag behind in terms of the percentage of programmers in society as a whole. This isn't due to the low number of companies looking for programmers.</p>

<p>The problem, however, lies mainly with Kowalski, who does not start learning programming or does not reach a level that will allow him to successfully enter the IT market.</p>

<p>Additionally, the employment structure in IT is characterized by the fact that 80-90% of job offers are for specialists, not beginners. According to data that annually raises alarming concerns about the IT workforce shortage, companies will have to change their hiring tactics and train entry-level employees, or more precisely, start hiring more juniors.</p>

<p>So why, in this context, are we unable to catch up with other countries? We will attempt to answer this question later in this article.</p>

<h1 class="wp-block-heading">Programming has long been considered difficult</h1>

<p>A 2002 <a href="http://www.bricklin.com/wontprogram.htm" data-type="link" data-id="http://www.bricklin.com/wontprogram.htm">paper</a> by <strong>Dan Bricklin</strong>, describes how a programmer constructs instructions for a computer and how he can correctly predict the results, and how this can affect the acceptance of the system.</p>

<p>The article inspired me to write this one, and its message can be summarized as follows: some people can learn programming faster. There are also people who find the syntax of languages ​​too difficult. Excerpt from the article:</p>

<blockquote class="wp-block-quote"><p>"Programming languages ​​like Assembler, FORTRAN, C, and Java are the least widely accepted. Their syntax is very unforgiving."</p>
</blockquote>

<p>After several years of experience in the industry as a programmer, I maintain that programming isn't difficult. It's a craft that virtually anyone with the right amount of motivation can learn. It's also not syntax, but the way we think and analyze specific problems that brings us closer to becoming a programmer. The conclusions from the above article are unfounded.</p>

<p>I don't think motivation is the problem here, either. High salaries, remote work, numerous benefits, team-building events, modern equipment and offices. Who wouldn't want to work in such conditions?</p>

<h1 class="wp-block-heading">Are some people born to program?</h1>

<p>To answer this question, I will use another <a href="https://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats" data-type="link" data-id="https://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats">publication</a> from 2006 by Jeff Atwood, co-founder of Stack Overflow: “Separating Programming Sheep from Non-Programming Goats”</p>

<p>This article refers to a study (link to the <a href="https://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hump_retraction.pdf" data-type="link" data-id="https://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hump_retraction.pdf">study</a>) that was essentially intended to answer the question: what are the differences between people who program and people who don't program? Literally translated:</p>

<blockquote class="wp-block-quote"><p>“a way to separate the programming sheep from the non-programming goats in computer science classes”</p>
</blockquote>

<p>The results of the study are very interesting. Using basic programming instructions such as assignment, iteration, recursion, and conditional, responses were collected from individuals who had never had any experience with programming. These were computer science students, a small group among the population largely focused on programming.</p>

<p><strong>The test used in the study can be downloaded <a href="https://www.eis.mdx.ac.uk/staffpages/r_bornat/tests/distribution.html">here</a></strong>.</p>

<p>In terms of the basic instructions we will encounter during learning, the results showed that:</p>

<ol class="wp-block-list"><li>44% of students created a coherent mental model of how the task works (even if it's incorrect!).</li>

<li>39% of students never created a coherent mental model of how the task works.</li>

<li>8% of students ignored the task and left the answers blank.</li>
</ol>

<p>The conclusion presented in the study:</p>

<blockquote class="wp-block-quote"><p>“To write a computer program, you have to come to terms with it, accept that whatever you want the program to do, the machine will blindly follow its own nonsensical rules and come to some nonsensical conclusion”</p>
</blockquote>

<p>This study also showed that approximately half of the students participating in the study would not have passed a pre-test constructed according to the above principles. Is this high entry threshold the answer to the title question?</p>

<p>Let me pose another thesis: <strong>Learning programming seems alien and difficult for the average person who has no prior experience with coding</strong>. This is the main reason why even the slightest attempt is not made. But how is it that even students with lower "predispositions" graduate from IT programs and become specialists who easily find jobs and develop their careers? It all depends on:</p>

<ul class="wp-block-list"><li>the amount of work that needs to be done when learning programming</li>

<li>No concerns about the high entry threshold – this argument may have been valid 50 years ago, when programming was done using punch cards and floppy disks. Today, anyone who knows how to use a computer can learn programming to a greater or lesser extent.</li>

<li>other factors that we will discuss in subsequent articles in the series “Why doesn’t Janek program?”</li>
</ul>

<h1 class="wp-block-heading">One article is not enough for complete conclusions</h1>

<p>Throughout this article, we learned about the challenges faced by beginning programmers and whether special skills are required to learn programming quickly or at all. This is largely due to the fear of the unknown nature of programming, which is a common theme for the vast majority of the population (over 95%).</p>

<p>The IT market should focus on training and employing juniors, contrary to the current trend, according to which offers for juniors constitute only 10% (!!!) of all offers.</p>

<p>The problem is very broad, and its analysis is fascinating. One article is definitely not enough to delve into the topic, so I invite you to read the next in the series, which will appear on it-leaders.pl in the coming weeks.</p>

<p>To make sure you don't miss anything, I recommend subscribing to the newsletter; you'll receive an email notification about new publications that may interest you.</p>
]]></content:encoded></item><item><title>S3 + Snowflake + DBT - A powerful combination for data analysis</title><link>https://dwisniewski.com/s3-snowflake-dbt-a-powerful-combination-for-data-analysis/</link><guid isPermaLink="true">https://dwisniewski.com/s3-snowflake-dbt-a-powerful-combination-for-data-analysis/</guid><pubDate>Sat, 17 Jan 2026 18:09:17 +0100</pubDate><category>Data Engineering</category><description>In today&#x27;s world, many companies struggle with data analysis. Data is a key element in making business decisions (or at least it should be). To effectively present this data, we must first model it appropriately. In…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/0db0ebcb-e93b-4944-bbb9-586bbe295131.webp" alt=""></p><p><strong>In today's world, many companies struggle with data analysis. Data is a key element in making business decisions (or at least it should be). To effectively present this data, we must first model it appropriately. In today's post, we will try to "promote" a solution that makes our team's daily work with data easier. I invite you to read the article and share your thoughts in the comments.</strong></p>

<h2 class="wp-block-heading">Data acquisition</h2>

<p>For the purpose of this blog post, we will assume that data can flow into S3 (AWS's data storage service) from many different sources in many different formats. Let's look at the graphic below to get a general understanding of how this works from a data acquisition perspective.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-11-1024x672.png" alt="" class="wp-image-631"/><figcaption class="wp-element-caption">High-level architecture. Snowflake as a central place in the schema.</figcaption></figure>

<h2 class="wp-block-heading">Communication between S3 and Snowflake</h2>

<p>This is a crucial part of the entire ecosystem. This element automates and relieves you of the responsibility for the smooth flow of data from S3 to Snowflake. Let's delve a little deeper into this element and the best way to configure it. Since Snowflake runs on AWS infrastructure, configuration and communication between the services is simplified. Snowflake supports this in a very clever way. Below, I will show a flow diagram that illustrates this nicely. This will explain the magic behind this setup, which I personally really like and use in both personal and commercial projects.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-12-1024x726.png" alt="" class="wp-image-633"/><figcaption class="wp-element-caption">The content flow diagram for a single file within our ecosystem.</figcaption></figure>

<p>A brief comment on the diagram above: We start from the moment the file is physically placed in our file system. In S3, we have the option of sending messages to an SQS queue when a specific event occurs: file added, file deleted, file modified, etc. This allows us to create the foundations of a reactive system.</p>

<p>The next step is to transpose the messages in the SQS queue into notifications in SNS. Amazon SNS (Simple Notification Service) is an AWS cloud service that allows applications to send notifications to multiple recipients simultaneously. It works by publishing messages to "topics" and then delivering them to multiple subscribers. SNS can send notifications through various channels, such as: Lambda functions, SMS messages, emails, push notifications to mobile applications, HTTP/HTTPS requests, and <strong>SQS queues</strong>.</p>

<h2 class="wp-block-heading">Snowpipe as the golden solution</h2>

<p>Thanks to <a href="https://docs.snowflake.com/en/user-guide/data-load-snowpipe-intro" data-type="link" data-id="https://docs.snowflake.com/en/user-guide/data-load-snowpipe-intro">Snowpipes</a>, we can define what we listen for and what we do with that information. I don't like talking without an example, so let's look at the code right away:</p>

<p>CREATE OR REPLACE PIPE pipe_data_source_data_provider_domain_table<br>  AUTO_INGEST = TRUE<br>  AWS_SNS_TOPIC = 'arn:aws:sns:us-east-1:2472837483:name_of_the_sns_service'<br>  AS<br>    COPY INTO data_source_data_provider_domain_table (<br>      data,<br>      filename,<br>      file_row_number,<br>      file_last_modified<br>    )<br>    FROM (<br>      SELECT<br>        $1,<br>        METADATA$FILENAME,<br>        METADATA$FILE_ROW_NUMBER,<br>        METADATA$FILE_LAST_MODIFIED<br>      FROM @your_bucket/provider/prod/<br>    )<br>    FILE_FORMAT = (type = 'PARQUET')<br>    PATTERN = '*_domain_.*/.*table/.*';<br><br>The code is quite simple. It's a definition of a PIPE, which has several key elements. </p>

<ul class="wp-block-list"><li>Name - the name of the Snowpipe, which should define, by convention, where the data is coming from and where it is going.</li>

<li>SNS Topic - the address of the topic we are listening to - important: we must have the necessary permissions granted to the Snowflake instance - this is done in the role configuration in SNS. I won't show this in this post as it's a standard procedure and many examples can be found online; the Snowflake documentation also describes it well.</li>

<li>The COPY statement is part of the definition that specifies what we are copying, in what format, and from where; it also has its own sub-elements:<ul class="wp-block-list"><li>INTO - which table the data is inserted into</li>

<li>FROM - which path should we listen to (SNS message filtering) - try to narrow down the FROM path as much as possible to save on S3 scanning costs with Snowpipe.</li>

<li>FILE FORMAT - what type of files are we looking for during the monitoring process?</li>

<li>PATTERN - the file path pattern we expect.</li>
</ul>
</li>
</ul>

<p>All these elements form a living entity, whose existence we can verify and whose history we can also examine through queries:</p>

<blockquote class="wp-block-quote"><pre class="wp-block-code"><code>DESCRIBE PIPE XXX;</code></pre>
</blockquote>

<p>and </p>

<pre class="wp-block-code"><code>SELECT * FROM TABLE(INFORMATION_SCHEMA.PIPE_USAGE_HISTORY( PIPE_NAME => 'MY_PIPE' ));</code></pre>

<p>There are many ways to monitor the operation and status of Snowpipes, but we will dedicate a separate post to that. I think the concept is clear, and we can move on.</p>

<h2 class="wp-block-heading">Raw in the table!</h2>

<p>The result of the above actions is the creation of rows in the target table, which we call RAW.name_of_the_table. This will be the lowest layer in our Snowflake instance. It will serve as the foundation from which our tables at the DBT level (or other data analysis tool) will read data.</p>

<p>When a row is inserted into the RAW table, we can trigger GitHub Actions, either according to a schedule or via a trigger, which then performs the transformation step in our ELT process. The diagram below illustrates how to model the data at a high level:</p>

<figure class="wp-block-image size-full"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-13.png" alt="" class="wp-image-643"/><figcaption class="wp-element-caption">The architectural diagram of the DBT component in our solution. This is the interior of the DBT block.</figcaption></figure>

<p>A quick explanation: We don't necessarily have to use the methodology I presented: stg->int->mart. It's a matter of convention, and there are many solutions, such as medallion or bronze->silver->gold. You can choose from many options. We won't go into that level of detail today, but we've shown a simple example of how this data can be modeled.</p>

<h2 class="wp-block-heading">The data is modeled</h2>

<p>Once the data is ready to be read, we can easily proceed to reading it at a higher level. In our solution, we use Power BI, but you can use other tools for reporting, such as: <strong>Tableau, Looker, Qlik Sense, Metabase, Apache Superset, Sisense, Domo.</strong> There are many such tools on the market today. It all depends on the needs and capabilities of your organization.</p>

<p>For better security, access should be tunneled. Ideally, this should be configured in such a way that there is an intermediary between the Power BI instance and Snowflake that controls data traffic between the platforms. This is important and can be solved in many ways. To implement IP whitelisting, for example, you can configure an API Gateway that will act as our guardian.</p>

<p>Of course, this slightly complicates the process of creating reports, because the team needs to be prepared for this, and their local computers must be configured to connect via VPN, and access must be managed through login/password (which expire) or SSO. This always creates maintenance challenges, but in return we have a very secure and airtight system. I will describe more details in another article. Today, we are discussing this topic at a very high level, and I don't want to write a whole book on security here. Besides, it's not entirely my area of ​​expertise, so I need to educate myself further.</p>

<h2 class="wp-block-heading">Finally, the reports</h2>

<p>At the end of this path, we always have a layer that presents the data. This is the most enjoyable part for the business, because from their perspective, our system is Power BI. They don't need to, and SHOULDN'T, be aware of the technical details. It's our problem and responsibility as a technical team to hide these implementation details from them.</p>

<p>For businesses, we can create systems of reports, analyses, and applications that will help them with their daily operational activities and decision-making. Our goal is not to create a technical monstrosity, but to provide value to the business. If the stakeholders are using our solutions, we should be satisfied. If not, then we have a long road ahead of us to solve this problem. I'll write more about this sometime, because it's a vast topic.</p>

<h2 class="wp-block-heading">Summary</h2>

<p>If you've made it to the end, that's great! That's all for today. I hope the above diagram has clarified the goal and the means we intend to use. It should also explain the specific problems we are solving and why this solution is very attractive and doesn't require significant investment. In this project, three of us created a data platform consisting of over 600 tables and over 50 reports. It's amazing that we only needed a few months to do this. There was a tremendous amount of work, but the satisfaction from the completed job was immense. I encourage you to familiarize yourself with the details and look forward to further articles related to the individual elements of the above solution. This article is just an introduction. Stay tuned for more!</p>
]]></content:encoded></item><item><title>Is it the end of Eldorado in polish IT?</title><link>https://dwisniewski.com/is-it-the-end-of-eldorado-in-polish-it/</link><guid isPermaLink="true">https://dwisniewski.com/is-it-the-end-of-eldorado-in-polish-it/</guid><pubDate>Thu, 15 Jan 2026 08:31:42 +0100</pubDate><category>Job Market</category><description>The end of the year is often a time for summaries and conclusions. Since various companies are now publishing reports on the IT market situation in 2025, I decided to take a look at one of these reports. As I am…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/64d48ea2-40b9-4f95-ad65-338b4a12bb85.webp" alt=""></p><p><strong>The end of the year is often a time for summaries and conclusions. Since various companies are now publishing reports on the IT market situation in 2025, I decided to take a look at one of these reports. As I am currently looking for new challenges and trying to find my place in the market, I considered this to be valuable content, both for publication and for my own reading. I invite you to read it.</strong></p>

<h2 class="wp-block-heading">Data source</h2>

<p>As our source, we will use the report from the largest Polish job board for IT positions in Poland.</p>

<p>Justjoin.it currently publishes 15,110 job offers (January 14, 2026). This makes them not only a Polish but also a European leader in terms of the volume of job postings. Based on this, I assume that the results of the report they publish are based on a sufficiently large sample and represent a reliable, averaged picture of the job market as of today.</p>

<p>You can find the report on their website at the following address:<br><a href="https://justjoin.it/salary-report/">https://justjoin.it/salary-report/</a></p>

<p>The report is divided into several sections: Job offer statistics, salaries by category, working conditions in the tech industry, and salary statistics. I reviewed each section in turn and will share my thoughts on them with you.</p>

<h2 class="wp-block-heading">Job offer statistics</h2>

<p>The number of job postings broken down by month is quite revealing. There is a clear difference between the months and a certain seasonality is evident.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-940x1024.png" alt="" class="wp-image-570"/><figcaption class="wp-element-caption">The number of job openings in the last 3 years (from top to bottom: 2023, 2024, and 2025).</figcaption></figure>

<p>Finding a job is definitely most difficult during the summer and holiday season. Firstly, because there are fewer job openings, and secondly, because recruiters and teams in general are less active.</p>

<p>In terms of technologies, the clear leaders are: Data, JS, and Java.</p>

<div class="wp-block-group"><div class="wp-block-columns"><div class="wp-block-column" style="flex-basis:100%"><figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-1-929x1024.png" alt="" class="wp-image-571" style="aspect-ratio:0.9069590889919865"/></figure>
</div>
</div>

<figure class="wp-block-gallery has-nested-images columns-default is-cropped"><figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-3-1016x1024.png" alt="" class="wp-image-573"/></figure>
</figure>
</div>

<p>This doesn't surprise me at all. These technologies and categories have been the most sought-after for years. The data shows a clear upward trend. This is largely due to the development of LLMs (Large Language Models). Companies need to process clean, structured data and want to analyze it with the help of AI. That's why the number of job openings for Data Engineers and Data Analysts continues to grow.</p>

<p>I'm still a bit surprised by the large number of JavaScript job postings. LLMs code the frontend layer quite efficiently, perhaps thanks to Node.js, whose ecosystem has developed significantly recently. From my perspective, Claude Code or Cursor can write JavaScript code at a much better level than I, as a native backend developer, can manage using examples from the internet and documentation. We need to ask the frontend developers how they manage to avoid being made redundant and how they demonstrate their value to the company. Perhaps there are certain aspects that could be mapped to other areas of software development!</p>

<h2 class="wp-block-heading">Nobody needs Juniors</h2>

<p>That's sad and difficult for people who have hope for a better life thanks to working in IT. I once wrote an article about entering the market and how the entry barrier to IT is getting higher and higher. I see that this hasn't changed at all, as the number of job offers for beginners (Juniors) remains close to 5%.</p>

<figure class="wp-block-image size-full"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-4.png" alt="" class="wp-image-582"/><figcaption class="wp-element-caption">Seniority levels in job postings. The Mid-level remains strong.</figcaption></figure>

<p>My perspective on this issue is quite controversial. From an employer's point of view, I think I would hire more junior developers today. Thanks to AI, the learning process is much faster now. If we want to invest in human resources, hiring several juniors (e.g., 3) and one senior is more cost-effective in the long run than hiring two seniors. Although the financial cost might be similar, a senior developer might leave soon, while we have a better chance of retaining a junior developer for a longer period. Especially as the market is slowly transforming into an employer's market, there's less risk of the junior employee quickly leaving. I just wonder when employers will understand this. The market seeks immediate returns, which is provided by hiring mid-level and senior developers – they don't need training. However, in my opinion, this is a mistake.</p>

<h2 class="wp-block-heading">Remote work</h2>

<p>Many companies are now offering hybrid work instead of fully remote work, with the option or requirement to meet team members face-to-face at least once a week. As a remote work enthusiast and a bit of a homebody, I definitely don't like this change! But seriously, hybrid work is, in my opinion, the golden mean. Especially since we schedule meetings at the office on a specific day. Many problems can be solved better in a specific environment. In my opinion, this trend will continue in the coming years.</p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-5.png" alt="" class="wp-image-585" style="width:830px;height:auto"/></figure>

<p>A chart showing the ratio of remote, hybrid, and in-office work. Is a return to the office becoming visible?</p>

<h2 class="wp-block-heading">Types of contracts</h2>

<p>The B2B contract market is quite significant. This is due to substantial tax breaks for sole proprietors in Poland. The effective tax rate decreases from approximately 60% for employees on standard employment contracts (the highest tax bracket already affects mid-level earners) to around 25% for self-employed individuals. This is a considerable relief for household budgets.</p>

<p>Companies, in turn, benefit from this by having an easier way to manage their workforce and are not burdened as much by regulations stemming from labor law, employee rights, collective bargaining agreements, etc.</p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-6.png" alt="" class="wp-image-589" style="width:840px;height:auto"/><figcaption class="wp-element-caption">If the law allows it, then it's not surprising that interested parties will take advantage of it.</figcaption></figure>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/image-7-1024x769.png" alt="" class="wp-image-592"/><figcaption class="wp-element-caption">The more we earn, the more advantageous it becomes to work under a B2B contract. This is the reality of the Polish tax system in 2026. If we add the tax breaks resulting from the so-called IP Box, the effect of switching to contracts is further amplified.</figcaption></figure>

<h2 class="wp-block-heading">Salaries</h2>

<p>You can find the full range of technologies and specializations here: <a href="https://justjoin.it/salary-report/category-statistics">https://justjoin.it/salary-report/category-statistics</a>. I will only present the most interesting aspects and my opinion.</p>

<h3 class="wp-block-heading">BOTTOM 3 LOSERS (decrease or smallest increase):</h3>

<ol class="wp-block-list"><li><strong>Support</strong> - <strong>-4.93%</strong> (UoP) <ul class="wp-block-list"><li>The biggest decline in the industry.</li>

<li>Average: 11,250 PLN (employment contract), previously 11,833 PLN</li>

<li>The lowest salaries in IT</li>
</ul>
</li>

<li><strong>Net (.NET)</strong> - <strong>-1.61%</strong> (B2B)<ul class="wp-block-list"><li>Decline in B2B contracts</li>

<li>Average: 17,140 PLN (B2B), previously 17,420 PLN</li>
</ul>
</li>

<li><strong>C</strong> - <strong>-1.91%</strong> (B2B)<ul class="wp-block-list"><li>A slight decrease</li>

<li>Average: 17,530 PLN (B2B), previously 17,871 PLN</li>
</ul>
</li>
</ol>

<h3 class="wp-block-heading">TOP 3 WINNERS (highest growth):</h3>

<ol class="wp-block-list"><li><strong>Scala</strong> - <strong>+58.83%</strong> (employment contract)<ul class="wp-block-list"><li>The biggest growth in the entire IT industry.</li>

<li>Average: 22,025 PLN (employment contract), previously 13,867 PLN</li>
</ul>
</li>

<li><strong>Go (Golang)</strong> - <strong>+35.67%</strong> (employment contract)<ul class="wp-block-list"><li>The second largest increase</li>

<li>Average: 22,250 PLN (employment contract), previously 16,400 PLN</li>

<li>The highest average salary in the industry!</li>
</ul>
</li>

<li><strong>ERP</strong> - <strong>+14.88%</strong> (B2B) <ul class="wp-block-list"><li>The biggest increase was in B2B contracts.</li>

<li>Average: 20,927 PLN (B2B), previously 18,217 PLN</li>
</ul>
</li>
</ol>

<h2 class="wp-block-heading">Losers</h2>

<p>As we can see above, .NET developers working under B2B contracts are definitely the least satisfied. Those on traditional employment contracts saw a small increase of 3.13%, which is also not very encouraging. Could the .NET sector already have a fully saturated market? The Support sector recorded the same, or even worse, results, making it the lowest-paid sector in IT. Additionally, due to automation and the implementation of AI in many company processes, we are seeing both a decrease in the number of job offers and lower salaries (due to the low entry barrier to IT Support compared to other sectors). Nevertheless, the salaries there are still quite decent.</p>

<p>Support's market share of job postings fell from 3.1% to approximately 2.4%. A strong correlation is evident here.</p>

<h2 class="wp-block-heading">Winners</h2>

<p>Among the languages ​​experiencing growth, Scala and Go stand out, followed to a lesser extent by ERP. The increase in salaries for these "newer" and presumably less mature programming languages ​​is astonishing. The market hasn't yet had time to properly value the skills of these programmers, or perhaps the demand is so high that it distorts and strongly influences the pricing of services (urgency, the need for rapid implementation).</p>

<p>It should be added that Scala accounts for only 0.4% of all job postings, so the volume may also slightly influence the dynamics of wage growth.</p>

<h2 class="wp-block-heading">Where can you earn the most money?</h2>

<p>Regarding the highest salaries recorded on justjoin.it, the case of at least one offer is particularly interesting: 99,490 PLN - WOW, earning 100k a month - that would be something! I probably don't need to mention that the demand for neural network models and AI specialists is constantly growing, and such incredibly high salaries are the best proof of this, in my opinion.</p>

<p>Generally, we earn the best average salaries in the following areas:</p>

<p>TOP 3 - Highest average earnings (on B2B contracts):</p>

<p><strong>Security - PLN 20,465</strong></p>

<p><strong>Scala</strong> - <strong>21,487 PLN</strong> </p>

<p><strong>ERP</strong> - <strong>20,927 PLN</strong> </p>

<p>We see that 2 out of the 3 highest-paying categories are the same ones that are showing an upward trend year-on-year. I'm a little surprised by the absence of AI/ML-related specializations in this ranking. Perhaps it's still too early. I'm very curious to see how average salaries in the AI ​​sector will change in what I consider to be the crucial year of 2026.</p>

<h2 class="wp-block-heading">Summary</h2>

<p>2026 will certainly be a year of change. The AI ​​revolution is slowly making its presence felt in the job market. Coding tools are becoming more mature and reliable. From my perspective (the PHP bubble), the market is becoming more professional; interviews require more than before, and there are many more applicants for each position. The quality of these candidates is another matter, but unfortunately, that's beyond my control since I don't personally hire anyone (and don't intend to in the near future).</p>

<p>Outside of my immediate circle, it's difficult to assess the situation definitively. The market is certainly stabilizing and the dynamics and growth are no longer as strong as they were during the 2015-2022 period. In terms of hard data, the market has been slowly stabilizing for the past three years. For more information, I encourage you to read the full report. I'm sharing the link again: <a href="https://justjoin.it/salary-report/.">https://justjoin.it/salary-report/.</a></p>

<p>I'm also curious about your opinion on this report: does it reflect what you see in your circles? And to answer the question in the title: No, the Eldorado is not over yet, but I have a feeling that technological changes may give it more momentum. Then it could really go in two directions: either the market will need more hands to meet the demand for software, or part of the market will be absorbed by AI tools. Everything is in the hands of the owners of technologies related to LLMs and the owners of capital – after all, they are the ones who decide every day whether Damian from Gdańsk or Janek from Gliwice will have something to do.</p>

<p>I hope that new technological capabilities will allow us to create faster and better. However, it's possible that customers (individual consumers) will be able to solve many problems without the need for a programmer. In that case, it's best to have a plan B. And do I have a plan B? Of course I do. I see my opportunities in the areas of Data and Architecture. That's probably where the profit margin disappearing from the programming market will go, if such a phenomenon occurs.</p>

<p>On the other hand, I recommend that everyone learn about AI tools and try to keep up with the market. The ability to learn and an open mind will always give us an advantage in the market. If only the strongest survive in the jungle, then that strength will certainly be the ability to work with the help of AI in the coming years.</p>

<p>I wish all readers good luck on this path and professional fulfillment, regardless of the technology or sector. After all, at the end of the day, it's just a job, and it's important to first and foremost earn a living from it, and secondly, to have at least some fun doing what we do. The only certainty is change, and that's the thought I'd like to leave you with.<br><br>Thanks!</p>
]]></content:encoded></item><item><title>Domain modeling - an undiscussable problem, an overlooked problem, a very important problem</title><link>https://dwisniewski.com/domain-modeling-an-undiscussable-problem-an-overlooked-problem-a-very-important-problem/</link><guid isPermaLink="true">https://dwisniewski.com/domain-modeling-an-undiscussable-problem-an-overlooked-problem-a-very-important-problem/</guid><pubDate>Wed, 14 Jan 2026 13:14:13 +0100</pubDate><category>Architecture</category><category>DDD</category><description>Today we&#x27;ll touch on a topic that&#x27;s been on my to-do list for a while. I&#x27;ve recently watched a lot of videos on domain modeling in DDD. Unfortunately, many of them discuss trivial or well-known issues. Below, I&#x27;ll…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-6.png" alt=""></p><p><strong>Today we'll touch on a topic that's been on my to-do list for a while. I've recently watched a lot of videos on domain modeling in DDD. Unfortunately, many of them discuss trivial or well-known issues. Below, I'll describe a problem you've certainly never encountered before (and neither have I). We'll try to break it down, first at a high level and then by constructing a deep domain model. Join me!</strong></p>

<h2 class="wp-block-heading">Problem description (brief)</h2>

<ul class="wp-block-list"><li>The system settles <strong>shared expenses</strong> incurred within a single location (apartment, office, property).</li>

<li>Settlements are calculated in <strong>defined settlement periods</strong>, typically monthly.</li>

<li>Each period may have a <strong>variable number of participants</strong>.</li>

<li>A participant may <strong>join or leave</strong> during a settlement period.</li>

<li>Cost responsibility is based on <strong>actual participation time</strong>, unless a cost defines a different rule.</li>

<li>Each cost has a <strong>monetary amount</strong>, <strong>date</strong>, <strong>category</strong>, and an associated <strong>allocation rule</strong>.</li>

<li>Costs may be <strong>recurring</strong>, <strong>consumption-based</strong>, or <strong>one-off</strong>.</li>

<li>A cost may apply to:<ul class="wp-block-list"><li>all participants,</li>

<li>a selected subset,</li>

<li>participants with explicit exclusions or limits.</li>
</ul>
</li>

<li>The system supports multiple <strong>cost allocation rules</strong>, including:<ul class="wp-block-list"><li>equal split,</li>

<li>proportional split using predefined weights,</li>

<li>time-based (prorated) split,</li>

<li>consumption-based split,</li>

<li>combinations of multiple rules.</li>
</ul>
</li>

<li>Allocation rules may <strong>change over time</strong>.</li>

<li>Cost allocation may produce <strong>rounding differences</strong>, which must be handled according to a defined policy.</li>

<li>Costs may be added <strong>after a settlement period has ended</strong>.</li>

<li>Cost corrections affect future settlements according to predefined correction rules.</li>

<li>A settlement period may be <strong>closed</strong>, after which results are considered final.</li>

<li>For each participant, the system calculates either:<ul class="wp-block-list"><li>an <strong>amount owed</strong>, or</li>

<li>a <strong>credit balance</strong>.</li>
</ul>
</li>

<li>Settlement results must be <strong>transparent and traceable</strong>, allowing each participant’s amount to be explained down to individual cost items.</li>
</ul>

<h2 class="wp-block-heading">Defining model components</h2>

<p>To begin designing the model, let's draw its components. The model will consist primarily of Settlements. In our system, this is synonymous with the word "obligations." We also have resource users. In our contextual language, this would be "participant."</p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz.png" alt="" class="wp-image-475" style="width:794px;height:auto"/></figure>

<p>This is a basic understanding of components. Notice that there are no relationships or fields yet, as this isn't an ERD (Entity Relationship Diagram). Let's visualize the problem. Let's illustrate it from a different perspective—a temporal perspective:<br></p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-1.png" alt="" class="wp-image-487" style="width:812px;height:auto"/></figure>

<p>This chart better illustrates the flow over time. Our timeframe is "Period X." During this period, participants (A, B, C) incur costs. We can tentatively assume that these are people renting space in the open-plan space. I think this is a pretty good use case that will help us visualize the problem.</p>

<p>Our software is therefore designed to manage the rental of a given resource between participants (lessors). As we can see, the beginning and end of the commitment for each participant are determined individually (there are periods when someone incurs no costs, but there are periods when the rental is continuous. Let's imagine that one person comes to the office for 20 days out of 20 working days, another comes in on a break, etc.</p>

<h2 class="wp-block-heading">Event storming - one of the techniques for learning about the problem</h2>

<p>Let's try to break it down using sticky notes. <a href="https://www.linkedin.com/in/brando/?originalSubdomain=it" data-type="link" data-id="https://www.linkedin.com/in/brando/?originalSubdomain=it">Alberto Brandolini</a>, the creator of ES, came up with a way to explore problems during software design. You can find more details <a href="https://www.eventstorming.com/" data-type="link" data-id="https://www.eventstorming.com/">here</a>. I'm no expert in this technique, but I know the basic concepts and will try to prepare an ES board at the Problem Exploration (Big Picture) level.</p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-2-1024x251.png" alt="" class="wp-image-490"/></figure>

<p>This is what a list of domain events would look like. We can:</p>

<ul class="wp-block-list"><li>open the period</li>

<li>add cost</li>

<li>participant can join</li>

<li>the participant may leave</li>

<li>the period may end</li>

<li>the period can be settled (closed)</li>

<li>liabilities can be converted</li>

<li>an invoice can be sent to participants</li>
</ul>

<h2 class="wp-block-heading">Types of cost allocation</h2>

<p>The event timeline helps us identify the most important events during the billing period. This gives us an overview of what happens during the billing period. Now let's look at how to solve allocation rules, one of the key elements of billing:</p>

<ul class="wp-block-list"><li>equal split - costs are divided equally between participants</li>
</ul>

<ul class="wp-block-list"><li>proportional split using predefined weights - each participant has its own weight assigned to a given cost type</li>
</ul>

<ul class="wp-block-list"><li>time-based (prorated) split - division between participants depending on the time each of them used a given resource</li>
</ul>

<ul class="wp-block-list"><li>consumption-based split - division based on the proportional consumption of the resource by participants (regardless of the time of use)</li>
</ul>

<ul class="wp-block-list"><li>combinations of multiple rules - the most difficult - although from a high-level level it doesn't matter that much</li>
</ul>

<p>When implementing the model, we'll need to implement an appropriate solution to this problem, but this isn't a problem we'll address in this article; implementation will be covered in a separate post. Let's just get this out of the way for now.</p>

<h2 class="wp-block-heading">Cost structure</h2>

<p>The cost should consist of several components:<br></p>

<ul class="wp-block-list"><li><strong>Monetary amount</strong> - value written as number + currency</li>
</ul>

<ul class="wp-block-list"><li><strong>Date - </strong>the date on which the cost was charged</li>
</ul>

<ul class="wp-block-list"><li><strong>Category</strong> - expense category (electricity bill, desk use, microwave use, etc.)</li>
</ul>

<ul class="wp-block-list"><li><strong>Allocation rule - </strong>known above - includes the method of dividing the cost between participants</li>
</ul>

<p>I think we've created our first Domain Entity this way. The next one will definitely be the Participant. A <strong>Participant</strong> will be a simple entity composed of a Name, Email Address, and ID. For this module, we don't need anything more. Each participant will also have their own account, where their billing history will be saved. Let's call this the <strong>Participant Account.</strong></p>

<p>The next entity will likely be the Settlement Period. This will represent a time period (specifically, settlement months). Its properties include the start and end of the period, as well as its status (open/closed).</p>

<p>After this basic recognition, we can freely draw the supposed shape of the entity.</p>

<figure class="wp-block-image size-full is-resized"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-3.png" alt="" class="wp-image-510" style="width:810px;height:auto"/></figure>

<p>I've intentionally marked the Invoice entity in a different color. It's not included in the requirements, but it's a natural consequence of the application's operation. Let's now try to describe the entity's components and the relationships between them in more detail. This sketch is intended only to outline and sequence the subsequent building blocks. Even at this stage, it's clear that the Invoice entity definitely doesn't fit in with the rest because:</p>

<p>1. It refers to events after the closing of the billing period.<br>2. It can be issued independently of other events; it is a consequence but not part of the process.<br></p>

<p>However, do not discard the Invoice until we are sure it is a different Bounded Context.</p>

<h2 class="wp-block-heading">Pseudo ERD</h2>

<p>Below you'll find the next stage of design: designing entities and their relationships, which we can tentatively call "Pseudo ERD." Entity Relationship Diagram (ERD) – this concept is associated with databases, but note that so far we haven't mentioned the persistence layer. I haven't mentioned any database engine, framework, or ORM, as that's not the modeling cue. Technical decisions will come later. So let's look at the ERD:<br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-4-1024x678.png" alt="" class="wp-image-514"/></figure>

<p>Here we see a more detailed view. We also see that all entities are dependent on the Settlement Period to some extent. Let's now look at the central entity, the <strong>Shared Expense.</strong> This is a central location in the schema because it contains: </p>

<ul class="wp-block-list"><li>cost types</li>

<li>cost allocation types between participants </li>

<li>the divisible amount (<strong>SharedAmount</strong>)</li>

<li>SettlementPeriodId - a reference to our <strong>AggregateRoot</strong>.</li>
</ul>

<h2 class="wp-block-heading">Building blocks from DDD</h2>

<p>I'm starting to use concepts strictly related to DDD, so I think it's worth briefly describing the basic building blocks in tactical DDD (yes, we're already on the borderline of tactics - the only strategic decision we have is whether to include Invoice in our context or whether Invoicing will be another one).</p>

<h3 class="wp-block-heading">Entity</h3>

<p>An object with an <strong>identity</strong> that is more important than its current state. It may change attributes over time, but it remains the "same" entity.</p>

<p>Example of meaning: order, user, subscription.</p>

<h3 class="wp-block-heading">Value Object</h3>

<p>An object <strong>without identity</strong>, defined solely by its values. It is <strong>immutable</strong> and compared by value equality.</p>

<p>Example of meaning: amount of money, date range, email address.</p>

<h3 class="wp-block-heading">Aggregate</h3>

<p>A consistent transaction <strong>boundary</strong> grouping entities and value objects. Protects <strong>business invariants</strong>.</p>

<h3 class="wp-block-heading">Aggregate Root</h3>

<p>The only gateway to the interior of the unit. Only through it can the unit's status be modified.</p>

<p><strong>From the outside, you never operate on internal entities directly.</strong></p>

<h3 class="wp-block-heading">Repository</h3>

<p>Abstraction for accessing aggregates.</p>

<p>It mimics an in-memory collection, not a DAO or Active Record.</p>

<p>It retrieves and stores <strong>Aggregate Roots</strong>, not random entities.</p>

<h3 class="wp-block-heading">Domain Service</h3>

<p>Domain logic that:</p>

<ul class="wp-block-list"><li>does not naturally fit into a single entity</li>

<li>operates on multiple aggregates</li>

<li><strong>does not maintain state</strong></li>
</ul>

<p>It's still a domain, not infrastructure.</p>

<h3 class="wp-block-heading">Domain Event</h3>

<p>An event describing something that has already happened in a domain. It is used for communication and response to state changes.</p>

<p>It is not a command or a request.</p>

<h3 class="wp-block-heading">Factory</h3>

<p>It's responsible for creating complex aggregates. It hides complex initialization logic and monitors invariants from the start.</p>

<h3 class="wp-block-heading">Specification/Policy</h3>

<p>It encapsulates a business rule or condition. It can be used for validation, filtering, and decision-making.</p>

<p>A clear way to write complex conditional logic.</p>

<h3 class="wp-block-heading">Module (Package)</h3>

<p>Logical grouping of domain elements.<br>Helps maintain model consistency and readability.</p>

<p>Not to be confused with bounded context—that's a level below.</p>

<h2 class="wp-block-heading">The model is incomplete</h2>

<p>I feel that the direct relationship between SettlementPeriod, SharedExpense, and Participant could be encapsulated in a mini-aggregate called ParticipantExpense, which would act as a bridge between a single cost participant and the entire settlement period. Furthermore, since we don't have any reference to the shared resource, it would be worthwhile to group this into ParticipantExpense. The next iteration of our model would look like this:<br><br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-6-1024x514.png" alt="" class="wp-image-520"/></figure>

<p>A lot has changed. First, the (C) notation appeared, which stands for collections of objects. From a relational perspective, one entity contains a collection of other entities. I also added (VO) – Value Object. This is one of the DDD building blocks described above.</p>

<p>Moving up, I also marked the scope of our aggregate: a coherence unit that aggregates multiple entities and ensures coherence during business operations. I also marked the Aggregate Root, which in our case is SettlementPeriod. The aggregate can only be accessed from the outside by accessing the Aggregate Root. This is very useful for preventing logic from spilling over, and it helps ensure encapsulation. There was something about this in college back in the day, right? :) I also removed Participant and Facility from the aggregate. </p>

<p>Our model should only contain references to them, but it doesn't operate strictly on participants or the Facility. A different BC or even a different module will likely be dedicated to user management, and a separate aggregate will certainly ensure its coherence. The same applies to Facility – we only want the essential elements in our aggregate; a reference to FacilityID is sufficient; we shouldn't care where the Facility is located or what it's called. From the perspective of our model, this isn't important.<br></p>

<p>I went a step further and also added a framework for Bounded Context, which I called Settlements. I decided not to include Invoice in it – after analysis and a short modeling session, I already know it will be a separate BC. Perhaps even a separate module. Who knows?</p>

<h2 class="wp-block-heading">Everything is fine, but how do we code it now?</h2>

<p>As I've noticed, our model is now complete, or at least it seems so. I won't show the implementation in this article. I'll devote the entire second part to that, but as a sort of introduction, I'll offer a UML class diagram. So far, we've focused on nouns—entities. Now, to make it more functional, we'll add verbs to UML, meaning processes and actions—class behaviors.</p>

<p>Note also that we're missing the so-called input state. Another BC will be responsible for its formulation: Facility Management, where you can add Resources to Facilities and Participants to Facilities. This will likely be a standard CRUD with adding, editing, and deleting. We can imagine it as an administration panel for managers where they can enter all this data. Our module will only respond to DomainEvents such as:</p>

<ul class="wp-block-list"><li>SharedExpenseCorrected</li>

<li>ParticipantJoined</li>

<li>ParticipantLeft</li>

<li>SettlementPeriodStarted</li>

<li>SettlementPeriodClosed</li>
</ul>

<p>In our context, we assume that such a connection already exists and we only read it (Read Model) to construct our aggregate and manage its behavior and consistency.<br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/mermaid-diagram-2026-01-14-125046-1024x617.png" alt="" class="wp-image-552"/><figcaption class="wp-element-caption">Class Diagram - created in <a href="https://mermaid.live" data-type="link" data-id="https://mermaid.live">Mermaid</a></figcaption></figure>

<p>The diagram above is just a sketch; once I start coding, a lot of it will probably change. Expect the second part of this post soon. In the meantime, I'll leave you with these conclusions and encourage you to share your thoughts in the comments.</p>

<p>The problem initially seemed quite trivial, but the deeper we go, the more complicated it becomes. In reality, we're still a long way from writing the code. We have a concept, we have diagrams, but the code has to work. Maybe creating an application that solves this problem would be a good idea. I don't know, I'll see how it develops in the coming days. For now, I think we've figured out the model itself quite well. But as is often the case with programming, the devil is in the details.</p>
]]></content:encoded></item><item><title>DORA, DevEx and other sets of metrics helpful in the software development process</title><link>https://dwisniewski.com/dora-devex-and-other-sets-of-metrics-helpful-in-the-software-development-process/</link><guid isPermaLink="true">https://dwisniewski.com/dora-devex-and-other-sets-of-metrics-helpful-in-the-software-development-process/</guid><pubDate>Wed, 14 Jan 2026 12:40:20 +0100</pubDate><category>Project Management</category><description>Today we&#x27;ll talk about metrics in software development. I&#x27;ll start by showing a cool graphic I found on the LeaderShip Failed Successfully podcast channel. This graphic will serve as the basis for discussing each metric…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-7.png" alt=""></p><p><strong>Today we'll talk about metrics in software development. I'll start by showing a cool graphic I found on the LeaderShip Failed Successfully podcast channel. This graphic will serve as the basis for discussing each metric and assessing who needs them and why.</strong></p>

<p>Let me start with the video that prompted me to discuss this topic:</p>

<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><figure class="embed"><a href="https://www.youtube.com/watch?v=HeeKUe_pbQM&amp;t=2130s" target="_blank" rel="noopener">▶ Video: https://www.youtube.com/watch?v=HeeKUe_pbQM&amp;t=2130s</a></figure></figure>

<p>I was particularly interested in the report the guys showed in the video:<br></p>

<figure class="wp-block-image size-large"><img src="https://dwisniewski.com/wp-content/uploads/2026/01/obraz-7-1024x660.png" alt="" class="wp-image-537"/><figcaption class="wp-element-caption">Graphic from the film: "Metrics in IT: Game Changer or Leadership Problem?". Primary source: unknown.</figcaption></figure>

<h2 class="wp-block-heading">Metric groups</h2>

<p>We see four groups of the most popular metrics. Before delving deeper into the topic, I'd heard a lot about DORA. I was also asked about it during a recent job interview. Let's start with DORA.</p>

<h3 class="wp-block-heading">DORA - DevOps Research and Assessment</h3>

<p>It consists of 4 metrics (according to the video's authors, a 5th metric has been added - I've verified this and will include it in the description below). The metrics are intended to measure the speed of delivery and the security of the change.</p>

<p><strong>Deployment Frequency (DF)</strong><br>How often does the team implement changes into production?<br>→ measures the team's ability to quickly deliver value.</p>

<p><strong>Lead Time for Changes - Cycle Time (LT)</strong><br>Time from commit/merge to launching a change in production<br>→ measures the efficiency of the delivery process</p>

<p><strong>Change Failure Rate (CFR)</strong><br>Percentage of deployments causing incidents, rollbacks, or hotfixes<br>→ measures the quality and stability of changes</p>

<p><strong>Mean Time to Recovery (MTTR)</strong><br>Mean Time to Restore<br>→ measures the resilience of the system and team</p>

<p><br><strong><strong>Reliability</strong></strong><br>measures how well the system actually meets user expectations in terms of:</p>

<ul class="wp-block-list"><li>SLO/SLA compliance.</li>

<li>availability,</li>

<li>stability,</li>

<li>operational correctness<br></li>
</ul>

<h2 class="wp-block-heading">Let's look at the table</h2>

<p>If we look at the graphic, we'll notice that the best (elite) teams are able to deploy code (<strong>Deployment Frequency </strong>)on average <strong>every day</strong>. This means that at least one version of the code (new feature, functionality) is released into production every day. The same applies to the<strong> Lead Time for Changes (Cycle Time)</strong>. From the moment a change is committed, it should take approximately<strong> one day </strong>for that change to be deployed to production.</p>

<p><strong>Change Failure Rate</strong> - this is a very important metric and according to the report, the number of problematic implementations should be <strong>lower than 1%</strong> - what's more, there are teams that deliver such results.</p>

<p>Another metric from the report is <strong>MTTR</strong> – the ability to respond to bugs/incidents in production. Recovery time is crucial – we don't want our customers/users to be stuck with a broken application. The best teams can resolve these issues in less than 6 hours.</p>

<h2 class="wp-block-heading">Dora - good for starters but too general for programmers</h2>

<p>My conclusion for delving into the topic is simple - DORA helps the entire team, but especially the DevOps team, maintain the smoothness and stability of the system at a good level.</p>

<p>Another group of metrics, <strong>DevEx</strong>, comes to the rescue:</p>

<p>We have several elements here:</p>

<ul class="wp-block-list"><li><strong>Coding Time</strong> (hours) - Coding time is what we like best - top teams need on average <strong>less than an hour </strong>to code a solution.</li>

<li><strong>Pickup Time</strong> (hours/minutes) - Pickup time - The time it takes a programmer to start a task and change its status to in-progress. The best teams need <strong>less than 75 minutes</strong> to do this.</li>

<li><strong>Approve Time</strong> (hours) - the amount of time needed to receive approval for deployment to production; <strong>&lt;10 hours</strong> is already an excellent result according to the table above.</li>

<li><strong>Merge Time </strong>(hours) - the number of hours between completing a CR and merging changes to the main branch. Elite teams can do this in <strong>2 hours </strong>(on average).</li>

<li><strong>Review Time (hours) </strong>- how long a code review takes. The best teams can do it in <strong>less than 3 hours</strong>.</li>

<li><strong>Deploy Time </strong>(hours) - how many hours it takes to deploy after merging to the main branch. Elite teams can do it in <strong>less than 6 hours.</strong> This reflects <strong>Lead Time for Changes </strong>from <strong>DORA</strong>.</li>

<li><strong>Merge Frequency</strong> (per dev/week) - how many PRs per developer are merged per week. The best teams can maintain this metric at <strong>>2.25 PRs per week.</strong></li>

<li><strong>PR Maturity </strong>- a very important metric that indicates the percentage of PRs that are immediately useful for Implementations without post-code review fixes. Top teams maintain this at <strong>>91%</strong></li>
</ul>

<h2 class="wp-block-heading">Other metrics. Do we need them?</h2>

<p>I will answer this question briefly: NO. In my opinion, DORA + DevEX is more than enough to observe and draw conclusions. However, if you're interested in learning about Predictability and PM Hygiene, I encourage you to watch the video or at least take a look at the graphic I've shared above.</p>

<h2 class="wp-block-heading">Summary</h2>

<p>In conclusion, I'd like to remind you that metrics aren't meant to put pressure on us as developers or DevOps teams, but rather to help us continuously improve our performance and identify bottlenecks in the software development process. If you want to implement metrics gradually, I suggest starting with DORA, then adding (perhaps not even all) the DevEx elements. This should be enough to test the metrics in your environment and select the ones you can influence.</p>

<p>I hope this article has been encouraging. After all, it's all about becoming better professionals. And what if you want to be better at something you don't measure? Metrics are just measurable tools for continuous process improvement, and I'd like to leave you with that thought today. I'd appreciate any comments and sharing experiences. Thanks!<br></p>
]]></content:encoded></item><item><title>Data Engineering – The Key to Managing Information in the Digital World</title><link>https://dwisniewski.com/data-engineering-the-key-to-managing-information-in-the-digital-world/</link><guid isPermaLink="true">https://dwisniewski.com/data-engineering-the-key-to-managing-information-in-the-digital-world/</guid><pubDate>Wed, 10 Dec 2025 16:25:10 +0100</pubDate><category>Programming</category><category>Data Engineering</category><description>Have you ever wondered how companies manage to turn vast oceans of raw data into actionable insights? Data engineering is the hidden engine that powers this transformation. From enabling real-time analytics to…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2025/12/b67bc1ff-6689-43bc-af88-af2885e965bb.webp" alt=""></p><p><strong>Have you ever wondered how companies manage to turn vast oceans of raw data into actionable insights? Data engineering is the hidden engine that powers this transformation. From enabling real-time analytics to supporting groundbreaking machine learning models, data engineering shapes the digital landscape. </strong></p>

<p>This field ensures that businesses can rely on clean, accessible, and secure data to thrive in today’s competitive world. Let’s explore how this fascinating domain forms the backbone of modern technology.<br></p>

<h2 class="wp-block-heading">What is Data Engineering?</h2>

<ul start="1" class="wp-block-list"><li><strong>Managing large datasets</strong>: It facilitates the processing of massive amounts of information quickly and efficiently.</li>

<li><strong>Integrating data</strong>: Combines data from various sources such as databases, APIs, or files.</li>

<li><strong>Preparing data for analysis</strong>: Cleans and transforms data into a suitable format for analytical processes.</li>

<li><strong>Automating processes</strong>: Develops pipelines – automated data processing workflows that minimize human error and speed up data processing.</li>

<li><strong>Ensuring data security</strong>: Protects data from loss and unauthorized access while complying with legal regulations.</li>
</ul>



<h2 class="wp-block-heading"><br>The Role of a Data Engineer in an IT Team</h2>

<p>A data engineer is a crucial member of teams managing information. They collaborate with various departments, including data scientists, business analysts, and developers. Their main responsibilities include:</p>

<ul class="wp-block-list"><li><strong>Designing and building data infrastructure</strong>: Creating data warehouses, databases, and processing systems.</li>

<li><strong>Implementing data pipelines</strong>: Developing ETL (Extract, Transform, Load) or ELT processes for efficient data processing.</li>

<li><strong>Monitoring data quality</strong>: Deploying tools for validation and cleaning of data.</li>

<li><strong>Ensuring scalability</strong>: Adapting systems to handle growing amounts of data.</li>

<li><strong>Supporting analytical teams</strong>: Providing consistent and ready-to-use data in real-time.<br></li>
</ul>



<h2 class="wp-block-heading">Skills Required for a Data Engineer</h2>

<p>A Data Engineer’s job demands a wide range of skills, including:</p>

<ul start="1" class="wp-block-list"><li><strong>Database expertise</strong>: Knowledge of both relational (SQL) and non-relational (NoSQL, e.g., MongoDB) databases.</li>

<li><strong>Programming skills</strong>: Proficiency in languages like Python, Scala, Java, or R.</li>

<li><strong>Data processing tools</strong>: Familiarity with Hadoop, Apache Spark, Kafka.</li>

<li><strong>Analytical abilities</strong>: Understanding data modeling and statistics.</li>

<li><strong>Cloud knowledge</strong>: Experience with AWS, Google Cloud, or Azure for data processing support.<br></li>
</ul>

<h2 class="wp-block-heading">Why is Data Engineering crucial nowadays?</h2>

<p>Modern businesses base their decisions on data analysis. Without data engineering, this would be impossible as data would remain scattered, inconsistent, or inaccessible. Thanks to the work of data engineers, organizations can:</p>

<ul class="wp-block-list"><li>Make fact-based decisions instead of relying on intuition.</li>

<li>Optimize business processes.</li>

<li>Develop advanced predictive models.</li>

<li>Ensure compliance with data protection regulations.</li>
</ul>

<p>Data engineering lies at the heart of modern information systems and is key to success in the digital economy.</p>

<h2 class="wp-block-heading">Why did I switch to Data Engineering?</h2>

<p>In fact  I pivoted from clean Software Engineering to Data Engineering mixed with SE. I will share more insight why I did make it 2 years ago.</p>

<p>After 7 years of working as a Junior, then Mid, and finally Senior Software Engineer, I suddenly found myself at a crossroads. My entire team was dissolved — we had been building an e-commerce logistics tool — and I had to choose between two options:</p>

<p>a) Leave the company just a few months after joining (right after I had finally ramped up) and start looking for another job in a similar role.</p>

<p>b) Stay and help build a brand-new team whose goal would be to create a data platform for most departments in the company — a platform that would support their day-to-day decision-making.</p>

<p>Since I’ve been working with technology for a long time, I knew one thing: tools like Databricks, Snowflake, DBT, or PySpark are <em data-start="891" data-end="903">just tools</em>. Learning them is basically a normal day at the office for someone with my background. What I didn’t know was whether working with data would actually be interesting.</p>

<p>A bit uncertain, I chose option <strong>b</strong>. I figured I’d give myself a chance to explore new technologies — maybe it would help me grow. Even though I had only heard about those tools or barely touched them before, I decided to learn them on the job. No courses, no trainings — I was thrown straight into the deep end, and honestly, I loved it. I enjoy working under pressure; that’s when I feel the most productive.</p>

<p>After around three months, I knew I wanted to keep going in this direction. And more tools showed up on my path — PowerBI, MCP (Model Context Protocol), and others. Working with data turned out to be a perfect match for me. I love charts, correlations, tables, forecasting, analysis, and telling stories with data. My role expanded from Data Engineering into the entire spectrum — from Software Engineering to BI Specialist.</p>

<p>I built dozens of dashboards that are still used in the company today and bring real value. Presentation skills could’ve been better — that’s something I know I need to improve. In the tech world you can build incredible things, but if you can’t present them well, your work might never get the attention it deserves.</p>

<p>My coding background also came in handy. Data often had to be collected from somewhere, and quick integrations with external APIs allowed us to expand our data sources at an impressive pace.</p>

<p>This is my story in a nutshell. I don’t want to bore you with all the details, but I <em>do</em> want to share a message: career pivots — especially in IT — will be happening all the time now. Technology has accelerated dramatically. Coding alone is no longer a unique skill. Honestly, even my uncle from a family party could probably build a mobile app now using LLMs (okay, maybe I’m exaggerating a bit).</p>

<p>Developers who never made the jump toward Solution or Software Architecture are facing tough times. Looking back, I think my decision to pivot was risky, but absolutely worth it. Two years ago we didn’t know how much LLMs would change the job market. Today we do — and pure programming isn’t enough anymore. Data engineering, on the other hand, does minimize some of that risk.</p>

<p>In the future, I plan to grow further in Project Management (I already have some experience) and in Solution Architecture. My goal is to become a one-man army — someone who can lead a project with a few AI agents or junior developers. I believe this kind of profile will be the most valuable over the next decade. In short:</p>

<ul class="wp-block-list"><li>Programming</li>

<li>Testing</li>

<li>Data engineering &amp; analysis</li>

<li>IT Project Management</li>

<li>Solution &amp; Software Architecture (mostly cloud-based)</li>


</ul>

<p>If you look at my CV, it’s heading exactly in that direction. And even though I’m once again on the job market, I’m not worried. I know where I’m going, and I know where I came from. And I got here only thanks to hard work and persistence.</p>

<p>The post is getting a bit too personal, so I’ll wrap it up here.</p>

<p>My message to the world? <strong>Don’t be afraid to take risks. Sometimes you need to take a step back to move forward — and that step might be exactly what you needed.</strong></p>

<p>Good luck!</p>
]]></content:encoded></item><item><title>7 Deadly Sins of a Programmer</title><link>https://dwisniewski.com/7-deadly-sins-of-a-programmer/</link><guid isPermaLink="true">https://dwisniewski.com/7-deadly-sins-of-a-programmer/</guid><pubDate>Sat, 07 Jan 2023 08:42:00 +0100</pubDate><category>Programming</category><description>The number of programmers in the world is still growing, but unfortunately, few offer high quality. What prevents a developer from delivering good quality services? It is usually tied to mistakes. Below you will find a…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2023/01/sins_of_programmer.jpg" alt=""></p><p>The number of programmers in the world is still growing, but unfortunately, few offer high quality. What prevents a developer from delivering good quality services? It is usually tied to mistakes. Below you will find a condensed list addressing this issue.</p>

<h2 class="wp-block-heading">1. Thinking You Are Irreplaceable</h2>

<p>Many average programmers believe they are amazing developers. I thought the same. After a few years, I realized that there are plenty of people who are truly amazing, better than me, and I was simply too confident.</p>

<p>The moment I told myself that I had many areas to improve and I wasn’t as incredible as I assumed, my outlook changed. I started learning new things and improving day by day. The desire to learn and the belief that you still have much to improve will take you far. This applies not only to programming but also to any other life skill.</p>

<h2 class="wp-block-heading">2. Working Without Estimation and Compensating with Overtime</h2>

<p><br>Many programmers write code without considering the time needed to complete the work. They pour into overtime, take family time on weekends, reduce sleep, working late into the night, and so on. This happens because you don't set a deadline for completing a task.</p>

<p>For example, if you are building a module, you must decide, “I will finish this in 3 hours, with 1 hour of extra buffer.” If you don’t finish within 4 hours, you move on to something else. When you miss the deadline, you stretch it endlessly. Since you know you will cover it by working overtime, you won’t try to improve your task estimation skills.</p>

<p>Set a specific time to close your laptop and only open it the next day. Trust me, it will force you to prioritize and improve, making you a better programmer.</p>

<h2 class="wp-block-heading">3. Hesitating to Participate in Hackathons and Coding Challenges</h2>

<p><br>Programmers are often afraid to try their hand at coding challenges on websites like TopCoder, Coderbyte. The reason is usually the fear of feeling bad about exposing their weaknesses.</p>

<p>Don't be a coward! You will only improve your skills if you are willing to see where you stand, repeatedly fail, and face setbacks. You lose nothing, and no one will know if you fail. While you shy away from such tasks, other programmers are improving, leaving you behind.</p>

<p>At the same time, be cautious about some coding challenges. Some have ridiculously short time limits, which can lead to bad coding habits. They may also present weird problems that don't help improve your skills. Don’t criticize yourself if you struggle with these challenges. Over time, you will be able to distinguish between good and bad coding tasks.</p>

<h2 class="wp-block-heading">4. Not Using Optimal Environment, Tools, and Devices</h2>

<p><br>Many programmers believe they can code lying in bed with a laptop on their chest. Sure, you can, but your skills will match your laziness.</p>

<p>Moreover, whoever told you that working on a laptop touchpad/keyboard is as fast as working with a mouse/keyboard has not worked with a mouse/keyboard long enough. The combination of a mouse and keyboard is faster, period.</p>

<p>Having worked on various laptops, desktop setups, and all kinds of peripherals, I can guarantee that coding while sitting at a desk, using a larger screen with a mouse and keyboard, significantly speeds up programming.</p>

<h2 class="wp-block-heading">5. Not Trying to Code Faster</h2>

<p><br>Programming is also about speed. Although people tell you that writing good code is important, don’t ignore speed. In today’s world, time is money. You must challenge yourself to code faster, type faster, and use your editor’s shortcuts. You need to make a conscious effort to increase speed.</p>

<p>Note: I’m not saying you should increase speed at the cost of code quality. Writing good and efficient code is more important than coding faster. Your primary goal should be writing code that produces the correct results. But in the process, look for opportunities to get things done faster. In most cases, you can boost speed without losing quality. But you will never achieve maximum speed with the best quality point without challenging yourself. Increasing speed doesn’t just mean typing faster. You can improve your programming speed by challenging yourself to solve coding tasks faster than usual.</p>

<h2 class="wp-block-heading">6. Blindly Copying Code</h2>

<p><br>Without a doubt, we all use code from the internet, from sites like <a href="https://stackoverflow.com/" data-type="link" data-id="https://stackoverflow.com/">StackOverflow</a> or the recently popular <a href="https://chatgpt.com" data-type="link" data-id="https://chatgpt.com">ChatGPT</a>. In fact, not using code at all isn’t the smartest idea. But do you paste code blindly every time and see if it works? Well, if so, you’re missing out on a learning opportunity. It’s not enough to just understand if the code you pasted can be written better than suggested in the answer.</p>

<p>The reason you searched for code is that you either didn’t know how to do it or wanted to save time. Try to understand the code you used at least at a high level. You don’t have to understand the code line by line, but at least grasp the approach used.</p>

<h2 class="wp-block-heading">7. Doing Things the Same Way Without Improving Skills</h2>

<p><br>If you started with PHP, you can still build any functionality using what you learned in your first year. If you only write code you already know or have written before, you will stagnate.</p>

<p>Move forward with new technologies and challenge yourself. Try a different programming language, new frameworks, learn new algorithms, and try best practices. Constantly improve yourself.</p>

<p>Think about it this way – 10 years later, if you’re doing the same thing, why should anyone pay you more than a programmer with 1-2 years of experience?</p>

<h2 class="wp-block-heading">Summary</h2>

<p>The above article is based on my experiences and the experiences of people with a similar mindset. I would greatly appreciate it if you could expand this list with your suggestions in the comments</p>

<p>If you manage to eliminate even one point, you’ve already succeeded. I wish you good luck in creating a better IT world because that’s what it’s all about.</p>
]]></content:encoded></item><item><title>Where to Start with Programming?</title><link>https://dwisniewski.com/learn-design-from-zero-to-hero/</link><guid isPermaLink="true">https://dwisniewski.com/learn-design-from-zero-to-hero/</guid><pubDate>Wed, 09 Jun 2021 21:09:00 +0200</pubDate><category>Programming</category><description>Programming is the skill of creating computer software using specialized languages and tools. It can be applied to develop games, applications, websites, operating systems, and much more. Programming is fascinating and…</description><content:encoded><![CDATA[<p><img src="https://dwisniewski.com/wp-content/uploads/2022/06/blog_img_7.jpg" alt=""></p><p>Programming is the skill of creating computer software using specialized languages and tools. It can be applied to develop games, applications, websites, operating systems, and much more. Programming is fascinating and useful because it allows you to solve problems, express creativity, and build valuable products. If you are considering becoming a programmer, you might be wondering – where do you begin?</p>

<h3 class="wp-block-heading">1. Choose Your Path</h3>

<p>Before diving in, it's important to decide what area of programming interests you the most. Some common fields include:</p>

<ul class="wp-block-list"><li><strong>Web Development</strong> – Building websites and web applications.</li>

<li><strong>App Development</strong> – Creating mobile or desktop applications.</li>

<li><strong>Game Development</strong> – Designing and programming video games.</li>

<li><strong>Data Science</strong> – Analyzing data to extract meaningful insights.</li>

<li><strong>AI and Machine Learning</strong> – Developing intelligent systems that learn from data.</li>
</ul>

<p>Understanding which field excites you can guide your learning journey.</p>

<h3 class="wp-block-heading">2. Select a Programming Language</h3>

<p>There are many programming languages, each suited to different tasks. Here are a few popular ones for beginners:</p>

<ul class="wp-block-list"><li><strong>Python</strong> – Great for beginners due to its simplicity and versatility. Used in web development, data science, and automation.</li>

<li><strong>JavaScript</strong> – Essential for web development and adding interactivity to websites.</li>

<li><strong>Java</strong> – Commonly used for building mobile apps and large-scale applications.</li>

<li><strong>C#</strong> – Popular for game development and Windows applications.</li>

<li><strong>C++</strong> – Ideal for systems programming and high-performance applications.</li>
</ul>

<h3 class="wp-block-heading">3. Learn the Basics</h3>

<p>Start by learning fundamental concepts that apply to all programming languages:</p>

<ul class="wp-block-list"><li><strong>Variables and Data Types</strong> – Storing and managing information.</li>

<li><strong>Control Structures</strong> – Writing loops and conditional statements.</li>

<li><strong>Functions and Methods</strong> – Creating reusable blocks of code.</li>

<li><strong>Algorithms and Data Structures</strong> – Understanding how to efficiently process and store data.</li>
</ul>

<p>There are plenty of free and paid resources, such as online tutorials, coding bootcamps, and university courses. Platforms like Codecademy, Udemy, and freeCodeCamp are excellent places to start.</p>

<h3 class="wp-block-heading">4. Practice with Projects</h3>

<p>The best way to learn programming is by doing. Start small by creating basic projects such as:</p>

<ul class="wp-block-list"><li>A personal website</li>

<li>A to-do list app</li>

<li>A simple game</li>

<li>Data analysis scripts</li>
</ul>

<p>As you gain confidence, take on more complex projects. Contributing to open-source projects is also a great way to learn and collaborate with experienced developers.</p>

<h3 class="wp-block-heading">5. Stay Consistent and Curious</h3>

<p>Programming is a skill that improves with time and practice. Set aside regular time for learning and stay curious. Don’t be afraid to make mistakes – they are part of the learning process.</p>

<h3 class="wp-block-heading">Conclusion</h3>

<p>Starting programming may seem overwhelming at first, but by choosing a path, learning a language, and practicing regularly, you’ll gradually develop the skills needed to succeed. Whether you want to build your own applications or pursue a career in tech, programming opens endless possibilities.</p>
]]></content:encoded></item>
</channel></rss>
