<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mike Krop</title>
    <description>The latest articles on DEV Community by Mike Krop (@snowman647).</description>
    <link>https://dev.to/snowman647</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1042155%2F365aaf07-f1ef-43c0-a9bc-436893d32d3d.jpg</url>
      <title>DEV Community: Mike Krop</title>
      <link>https://dev.to/snowman647</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/snowman647"/>
    <language>en</language>
    <item>
      <title>I Built a Tiny YouTube Audience Simulator</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Tue, 10 Mar 2026 16:50:50 +0000</pubDate>
      <link>https://dev.to/snowman647/i-built-a-tiny-youtube-audience-simulator-3bhi</link>
      <guid>https://dev.to/snowman647/i-built-a-tiny-youtube-audience-simulator-3bhi</guid>
      <description>&lt;p&gt;I recently started my Youtube channel.&lt;/p&gt;

&lt;p&gt;And I got stuck choosing what video to make next, so instead of trusting pure intuition, I built a tiny system that generates video concepts, generates synthetic audience personas, and asks those personas what they would actually click and keep watching.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; a serious prediction engine.&lt;/p&gt;

&lt;p&gt;It is a fun, weird, very unfinished project that became possible because LLMs are now good enough to turn messy notes into structured artifacts fast.&lt;/p&gt;

&lt;p&gt;And that is exactly why I like it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/snowman647/youtube-audience-sim" rel="noopener noreferrer"&gt;Github link to explore to checkout code immediately &lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I had a painfully familiar creator problem: too many possible ideas, not enough production time, and no reliable way to decide which one deserved attention first.&lt;/p&gt;

&lt;p&gt;That kind of decision is usually made with a mix of taste, mood, vague audience intuition, and procrastination disguised as "research."&lt;/p&gt;

&lt;p&gt;I wanted something slightly more explicit.&lt;/p&gt;

&lt;p&gt;At some point I realized that the core YouTube loop is conceptually simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A person sees feed of options.&lt;/li&gt;
&lt;li&gt;They decide whether to click.&lt;/li&gt;
&lt;li&gt;If they click, they decide whether to keep watching.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is obviously not the full platform, but it is enough to ask an interesting question:&lt;/p&gt;

&lt;p&gt;What happens if I build a tiny synthetic version of that loop and use it before production?&lt;/p&gt;

&lt;p&gt;LLMs make this much more practical than it would have been even a year or two ago. They are still unreliable in many ways, but they are very good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turning rough notes into candidate ideas&lt;/li&gt;
&lt;li&gt;turning audience descriptions into plausible personas&lt;/li&gt;
&lt;li&gt;!!!(most important) roleplaying reactions with enough specificity to make tradeoffs visible &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That combination is powerful for prototyping systems quickly.&lt;/p&gt;

&lt;p&gt;Also: this project was fun. That matters. I think we should build more things just because new tools unlock weird experiments that were previously too annoying to attempt.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the project actually does
&lt;/h2&gt;

&lt;p&gt;The repo is a small Python pipeline with a few CLI commands.&lt;/p&gt;

&lt;p&gt;At a high level it does three things.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Generate personas
&lt;/h3&gt;

&lt;p&gt;The first step reads source documents about the channel and the audience and produces structured personas.&lt;/p&gt;

&lt;p&gt;These are not just demographic buckets. The goal is to create people with context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;job&lt;/li&gt;
&lt;li&gt;location&lt;/li&gt;
&lt;li&gt;current situation&lt;/li&gt;
&lt;li&gt;media habits&lt;/li&gt;
&lt;li&gt;motivations&lt;/li&gt;
&lt;li&gt;dislikes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the committed debug snapshot, the project generates seven personas, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a product manager in London&lt;/li&gt;
&lt;li&gt;a systems engineering PhD student in Bengaluru&lt;/li&gt;
&lt;li&gt;an operations supervisor in Ohio&lt;/li&gt;
&lt;li&gt;a supply chain consultant in Tokyo&lt;/li&gt;
&lt;li&gt;a retired audio engineer in Vancouver&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That matters because "the average viewer" is fake. Real people click for specific reasons. They have limited time, specific taste, and different thresholds for fluff.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Generate video candidates
&lt;/h3&gt;

&lt;p&gt;The second step generates candidate videos from either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an idea bank&lt;/li&gt;
&lt;li&gt;or an existing script that needs different packaging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each candidate includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a title&lt;/li&gt;
&lt;li&gt;a thumbnail concept&lt;/li&gt;
&lt;li&gt;a 10-second hook&lt;/li&gt;
&lt;li&gt;a 30-second hook&lt;/li&gt;
&lt;li&gt;a full arc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means the system is not only comparing topics. It can also compare framing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Run a click + retention simulation (NOT YET IMPLEMENTED)
&lt;/h3&gt;

&lt;p&gt;The third step samples a persona, shows them a subset of videos, and asks which one they would click.&lt;/p&gt;

&lt;p&gt;If retention is enabled, it then asks how far they would keep watching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 seconds&lt;/li&gt;
&lt;li&gt;30 seconds&lt;/li&gt;
&lt;li&gt;or to the end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current simulation logic is intentionally simple. In &lt;a href="https://github.com/snowman647/youtube-audience-sim/blob/main/src/youtube_audience_sim/simulate_choices.py" rel="noopener noreferrer"&gt;&lt;code&gt;simulate_choices.py&lt;/code&gt;&lt;/a&gt;, the model gets a persona summary and a small candidate set, returns a single choice, and optionally returns a coarse retention outcome.&lt;/p&gt;

&lt;p&gt;That simplicity is a feature. I wanted something inspectable, not a fake-complex black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  A concrete example from the repo
&lt;/h2&gt;

&lt;p&gt;In the committed debug snapshot, one of the top-ranked ideas is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Metrics Aren't the Destination: Tracing True Goals Through System Signals&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another strong one is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How Systems Drift When Nobody Owns the Feedback Loop&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That result is interesting to me for two reasons.&lt;/p&gt;

&lt;p&gt;First, it suggests the system is not merely selecting the broadest or most sensational title.&lt;/p&gt;

&lt;p&gt;Second, it reflects the actual kind of content I want to make: systems, incentives, feedback loops, measurement, and decision-making.&lt;/p&gt;

&lt;p&gt;So even though the simulation is tiny, it already does something useful: it externalizes taste into artifacts I can inspect instead of leaving it as a vague feeling in my head.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I like technically
&lt;/h2&gt;

&lt;p&gt;My favorite part is not the ranking itself. It is the decomposition.&lt;/p&gt;

&lt;p&gt;A lot of AI tooling jumps straight to "generate 10 titles" and stops there.&lt;/p&gt;

&lt;p&gt;This project splits the problem into separate stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;audience model&lt;/li&gt;
&lt;li&gt;content candidates&lt;/li&gt;
&lt;li&gt;packaging&lt;/li&gt;
&lt;li&gt;simulated decisions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is useful because when something looks wrong, I can ask where it went wrong.&lt;/p&gt;

&lt;p&gt;Was the audience description weak?&lt;br&gt;
Were the personas too similar?&lt;br&gt;
Were the titles all basically the same?&lt;br&gt;
Did the prompt bias the choice?&lt;/p&gt;

&lt;p&gt;Because each stage writes its own artifact, the system is debuggable. That is a much better place to be than blindly prompting ChatGPT and pretending the answer means anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is still bad
&lt;/h2&gt;

&lt;p&gt;A realistic description of this project is important, because otherwise AI writing turns into theater very quickly.&lt;/p&gt;

&lt;p&gt;This project is still very far from "ready."&lt;/p&gt;

&lt;p&gt;I spent around a day on it. The current version is a prototype with enough structure to be interesting, not enough rigor to be trusted.&lt;/p&gt;

&lt;p&gt;Some obvious limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The debug run is tiny. In the committed snapshot it uses only 5 rounds, which is nowhere near enough to claim robust signal.&lt;/li&gt;
&lt;li&gt;The personas are synthetic. They are only as good as the notes and prompts used to generate them.&lt;/li&gt;
&lt;li&gt;The model is both generating and judging, which can create prompt-shaped bias.&lt;/li&gt;
&lt;li&gt;Retention is extremely coarse: 10s, 30s, or end.&lt;/li&gt;
&lt;li&gt;There is no grounding in actual channel analytics yet.&lt;/li&gt;
&lt;li&gt;There is no feedback loop from real published performance back into the simulator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So no, this does not "predict YouTube."&lt;/p&gt;

&lt;p&gt;What it does is give me a structured pre-production thinking tool.&lt;/p&gt;

&lt;p&gt;That is still valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think this matters anyway
&lt;/h2&gt;

&lt;p&gt;The value here is not certainty. The value is decision hygiene.&lt;/p&gt;

&lt;p&gt;Creative work often breaks because the reasoning stays invisible. You pick an idea because it "feels right," then post-rationalize later.&lt;/p&gt;

&lt;p&gt;This project forces me to write down assumptions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who the content is for&lt;/li&gt;
&lt;li&gt;what they care about&lt;/li&gt;
&lt;li&gt;what makes them click&lt;/li&gt;
&lt;li&gt;what makes them leave&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once those assumptions exist as files, I can review them, challenge them, version them, and improve them.&lt;/p&gt;

&lt;p&gt;That is the part I find genuinely exciting.&lt;/p&gt;

&lt;p&gt;LLMs are at their best when they help convert fuzzy intuition into inspectable intermediate artifacts. This project is a good example of that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The weird question: should we simulate people?
&lt;/h2&gt;

&lt;p&gt;This is the part I do not want to hide behind "it's just a tool."&lt;/p&gt;

&lt;p&gt;Simulating people is weird.&lt;/p&gt;

&lt;p&gt;On one hand, we already simulate users all the time, just with lower-resolution language:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ideal customer profiles&lt;/li&gt;
&lt;li&gt;conversion funnels&lt;/li&gt;
&lt;li&gt;audience segments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project is really just a more dynamic and more explicit version of that habit.&lt;/p&gt;

&lt;p&gt;The goal is not "how do I manipulate an audience better?"(But one day it will)&lt;/p&gt;

&lt;p&gt;The goal is "how do I pressure-test ideas before spending days making the wrong thing?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I am sharing it now
&lt;/h2&gt;

&lt;p&gt;Because this is exactly the kind of project I like seeing in public:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;small, easy to get&lt;/li&gt;
&lt;li&gt;opinionated&lt;/li&gt;
&lt;li&gt;technically legible&lt;/li&gt;
&lt;li&gt;obviously incomplete&lt;/li&gt;
&lt;li&gt;interesting enough to start a conversation&lt;/li&gt;
&lt;li&gt;crazy to some degree&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is what this repo is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discussion?
&lt;/h2&gt;

&lt;p&gt;The technical side is fun, but the bigger question is where this kind of thing goes next. I really want to dive deep here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If companies like Meta can collect enough data to build increasingly accurate simulations of people, does advertising become fundamentally more manipulative than it already is?&lt;/li&gt;
&lt;li&gt;Even if audience simulation works, where is the line between "making better decisions" and optimizing systems against people too effectively?&lt;/li&gt;
&lt;li&gt;And on the positive side: if we &lt;em&gt;can&lt;/em&gt; emulate human reactions well enough, could this become a genuinely useful tool for business, education, product design, and communication, not just marketing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you all,&lt;/p&gt;

&lt;p&gt;Subscribe:&lt;br&gt;
&lt;a href="https://www.youtube.com/@Mitrapunk" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>learning</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why AI Agents Need Managers</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Sat, 07 Mar 2026 22:49:51 +0000</pubDate>
      <link>https://dev.to/snowman647/why-ai-agents-need-managers-4cnf</link>
      <guid>https://dev.to/snowman647/why-ai-agents-need-managers-4cnf</guid>
      <description>&lt;p&gt;AI agents in business are running into the same problems humans have.&lt;/p&gt;

&lt;p&gt;For decades corporations have been solving one core problem.&lt;br&gt;
How to turn unpredictable, chaotic people into predictable business outcomes.&lt;/p&gt;

&lt;p&gt;The entire management stack exists for this.&lt;/p&gt;

&lt;p&gt;OKRs. Standups. Performance reviews. Operating procedures. Reporting templates. Approval chains. Org charts.&lt;/p&gt;

&lt;p&gt;All of this is scaffolding built around stochastic systems. Humans.&lt;/p&gt;

&lt;p&gt;The goal is simple. Produce stable results from unreliable components.&lt;/p&gt;

&lt;p&gt;Most of this work is tedious. Endless patching of holes in a messy system. But without it any company quickly turns into chaos.&lt;/p&gt;

&lt;p&gt;Now look at AI agents.&lt;/p&gt;

&lt;p&gt;They have the same problem.&lt;/p&gt;

&lt;p&gt;LLMs are stochastic by nature. The same input can produce different outputs. Reasoning drifts. Hallucinations appear.&lt;/p&gt;

&lt;p&gt;So what do we do?&lt;/p&gt;

&lt;p&gt;We build infrastructure around them.&lt;/p&gt;

&lt;p&gt;Orchestration layers.&lt;br&gt;
Validation pipelines.&lt;br&gt;
Self verification.&lt;br&gt;
Guardrails.&lt;br&gt;
Structured outputs.&lt;br&gt;
Retry logic.&lt;/p&gt;

&lt;p&gt;In other words we build scaffolding around another stochastic system.&lt;/p&gt;

&lt;p&gt;The parallels with human organizations are almost perfect.&lt;/p&gt;

&lt;p&gt;OKRs become goal definitions for agents.&lt;/p&gt;

&lt;p&gt;Standups become status checks and checkpoints.&lt;/p&gt;

&lt;p&gt;Operating procedures become prompt templates and runbooks.&lt;/p&gt;

&lt;p&gt;Peer review becomes self verification and cross validation between agents.&lt;/p&gt;

&lt;p&gt;Org charts become orchestration graphs.&lt;/p&gt;

&lt;p&gt;Performance reviews become evaluation benchmarks.&lt;/p&gt;

&lt;p&gt;But the solutions diverge in important ways.&lt;/p&gt;

&lt;p&gt;Humans need motivation, context, and culture.&lt;/p&gt;

&lt;p&gt;Agents need deterministic validation, retry logic, and structured memory.&lt;/p&gt;

&lt;p&gt;Failure modes are different too.&lt;/p&gt;

&lt;p&gt;Humans cut corners.&lt;/p&gt;

&lt;p&gt;Agents hallucinate.&lt;/p&gt;

&lt;p&gt;Humans get tired and lose focus.&lt;/p&gt;

&lt;p&gt;Agents never get tired. But they lose context because of context window limits.&lt;/p&gt;

&lt;p&gt;So if you are building agent systems, study something engineers usually ignore.&lt;/p&gt;

&lt;p&gt;Management.&lt;/p&gt;

&lt;p&gt;Management is a decades long experiment in orchestrating unreliable intelligent systems.&lt;/p&gt;

&lt;p&gt;Agents are not people.&lt;/p&gt;

&lt;p&gt;But the core problem is identical.&lt;/p&gt;

&lt;p&gt;How do you make a herd of cats behave predictably?&lt;/p&gt;

&lt;p&gt;Companies have been solving that for fifty years.&lt;/p&gt;

&lt;p&gt;Now we are doing it again. For machines.&lt;/p&gt;

&lt;p&gt;Subscribe for more &lt;a href="https://www.youtube.com/@Mitrapunk" rel="noopener noreferrer"&gt;youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>management</category>
    </item>
    <item>
      <title>Ship Less, Measure More</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Fri, 06 Mar 2026 22:07:43 +0000</pubDate>
      <link>https://dev.to/snowman647/ship-less-measure-more-58m4</link>
      <guid>https://dev.to/snowman647/ship-less-measure-more-58m4</guid>
      <description>&lt;p&gt;AI did not remove the engineering bottleneck. It moved it.&lt;/p&gt;

&lt;p&gt;Code is cheaper than it has ever been. Prototypes appear in hours. Complex systems that once took weeks can now be assembled in a few days. That sounds like progress, but in many teams it creates a new failure mode: shipping the wrong thing faster and mistaking motion for impact.&lt;/p&gt;

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

&lt;p&gt;When implementation gets cheaper, decision quality becomes more important, not less. If a team does not know exactly what problem it is solving and how success will be measured, AI becomes a force multiplier for confusion. It helps you produce more code, more architecture, more internal tooling, and more maintenance burden without increasing the odds that any of it matters.&lt;/p&gt;

&lt;p&gt;The discipline I keep returning to is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build for one measurable goal.&lt;/li&gt;
&lt;li&gt;Ship to remove ambiguity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those two rules sound almost trivial. In practice, they cut through a surprising amount of waste&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Made Overbuilding Easier
&lt;/h2&gt;

&lt;p&gt;Most engineers are not reckless. The problem is deeper than that.&lt;/p&gt;

&lt;p&gt;Good engineers are usually system-oriented. They like coherent designs, scalable abstractions, elegant mechanisms, and solutions that feel future-proof. Those are useful instincts. But AI turns those instincts into a liability when the goal is still unclear.&lt;/p&gt;

&lt;p&gt;Once the cost of implementation drops, overengineering becomes the default. It becomes easy to build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI pipelines for problems that are still hypothetical&lt;/li&gt;
&lt;li&gt;generalized systems before the narrow use case is proven&lt;/li&gt;
&lt;li&gt;adaptive experiences that are impossible to evaluate cleanly&lt;/li&gt;
&lt;li&gt;automation layers that create more operational burden than user value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The question stops being "can we build this?" because now the answer is almost always yes.&lt;/p&gt;

&lt;p&gt;The real questions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will this move the metric that matters?&lt;/li&gt;
&lt;li&gt;Can we prove that it moved it?&lt;/li&gt;
&lt;li&gt;Can we operate the system after the demo?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If those answers are unclear, speed is not helping. It is hiding the mistake until later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 1: Build for One Measurable Goal
&lt;/h2&gt;

&lt;p&gt;A team needs one scoreboard.&lt;/p&gt;

&lt;p&gt;Not "improve onboarding."&lt;br&gt;
Not "make the product smarter."&lt;br&gt;
Not "invest in AI capabilities."&lt;/p&gt;

&lt;p&gt;One measurable goal.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Activation = percentage of new users who reach the first success moment within 10 minutes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That definition does a lot of work immediately. It forces clarity. Every idea now has to answer a simple question: how does this move activation?&lt;/p&gt;

&lt;p&gt;If the answer is vague, it should not be built yet.&lt;/p&gt;

&lt;p&gt;This rule also removes a common failure mode: bundling multiple ideas into one release. The moment a team changes too many things at once, causality disappears. If results improve, nobody knows why. If results get worse, nobody knows what to undo. Teams end up replacing evidence with storytelling.&lt;/p&gt;

&lt;p&gt;There is another important part here: engineering should not define the target alone. Business, product, or whoever owns the outcome needs to sign off on the metric. That alignment is not bureaucracy. It is protection against teams wandering into technically impressive work that nobody actually needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 2: Ship to Remove Ambiguity
&lt;/h2&gt;

&lt;p&gt;Shipping is often framed as delivering value. Early in a project, that is incomplete.&lt;/p&gt;

&lt;p&gt;Early shipping is mostly about buying information.&lt;/p&gt;

&lt;p&gt;Every product team works inside ambiguity. People have opinions about what users want, where friction lives, and what kind of experience will unlock growth. Most of those opinions are partly wrong. The only reliable way to reduce uncertainty is to ship something small enough that the result teaches you something specific.&lt;/p&gt;

&lt;p&gt;That is why the second rule matters: ship to remove ambiguity.&lt;/p&gt;

&lt;p&gt;The release should be designed to answer a question, not to satisfy everyone's wishlist.&lt;/p&gt;

&lt;p&gt;If the team believes users are dropping out because account creation appears too early, the first release should test that idea as directly as possible. Not a redesign. Not a multi-quarter onboarding initiative. Just the smallest intervention that can confirm or reject the hypothesis.&lt;/p&gt;

&lt;p&gt;Code is not the product in that moment. Code is the receipt for the information you bought.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Concrete Example
&lt;/h2&gt;

&lt;p&gt;Imagine a team with a growth problem. Installs are healthy, but new users do not reach the first success moment. They open the app, hesitate, and disappear.&lt;/p&gt;

&lt;p&gt;The team defines the goal clearly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Activation = reaching the first success moment within 10 minutes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then they find the biggest drop-off: forced account creation before the user gets any value.&lt;/p&gt;

&lt;p&gt;There are two possible paths.&lt;/p&gt;

&lt;p&gt;The first path is boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;add "Continue without account"&lt;/li&gt;
&lt;li&gt;shorten the path to the first useful action&lt;/li&gt;
&lt;li&gt;defer signup until after value is visible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not glamorous. It is narrow, unattractive, and easy to dismiss. But it is a clean test of the hypothesis that friction before value is suppressing activation.&lt;/p&gt;

&lt;p&gt;The second path is seductive:&lt;/p&gt;

&lt;p&gt;"Give me three days and I'll build an AI onboarding concierge."&lt;/p&gt;

&lt;p&gt;Now the system will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;infer user intent&lt;/li&gt;
&lt;li&gt;personalize the flow&lt;/li&gt;
&lt;li&gt;rewrite copy dynamically&lt;/li&gt;
&lt;li&gt;adapt the experience by persona&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This sounds modern. It sounds strategic. It sounds like the kind of thing ambitious teams should be doing.&lt;/p&gt;

&lt;p&gt;It is also where many teams get trapped.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three-Day AI Promise
&lt;/h2&gt;

&lt;p&gt;The danger is not that the AI idea is impossible. The danger is that it is legible as impact before it is validated as impact.&lt;/p&gt;

&lt;p&gt;An AI onboarding system does not arrive alone. It brings hidden operational weight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evaluation complexity&lt;/li&gt;
&lt;li&gt;model drift&lt;/li&gt;
&lt;li&gt;latency&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;li&gt;privacy review&lt;/li&gt;
&lt;li&gt;cost uncertainty&lt;/li&gt;
&lt;li&gt;versioning problems&lt;/li&gt;
&lt;li&gt;support burden&lt;/li&gt;
&lt;li&gt;on-call responsibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What looked like a fast solution in a demo quietly becomes a long-term maintenance tax.&lt;/p&gt;

&lt;p&gt;And if activation does not improve, the team often learns less than it would have from the dumb fix. Too many moving parts. Too many explanations. Too much room for rationalization.&lt;/p&gt;

&lt;p&gt;That is the key point: AI makes it easier to create systems that are difficult to falsify.&lt;/p&gt;

&lt;p&gt;Simple changes fail cleanly. Complex AI systems fail noisily.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Organizations Still Choose the Wrong Path
&lt;/h2&gt;

&lt;p&gt;If the logic is this straightforward, why do teams still overbuild?&lt;/p&gt;

&lt;p&gt;Because most organizations are not optimized for clarity. They are optimized for ownership, visibility, and perceived impact.&lt;/p&gt;

&lt;p&gt;People do not just want to help the business. They want to own the thing that looks most important. And right now, few things look more important than an AI initiative.&lt;/p&gt;

&lt;p&gt;That creates a predictable system effect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;leadership wants AI on the roadmap&lt;/li&gt;
&lt;li&gt;performance systems reward visible AI work&lt;/li&gt;
&lt;li&gt;ambitious people gravitate toward AI-shaped projects&lt;/li&gt;
&lt;li&gt;skepticism gets mistaken for lack of vision&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that environment, the boring fix is not just boring. It is politically weak.&lt;/p&gt;

&lt;p&gt;The person arguing for a small, measurable experiment can easily be framed as someone who is "thinking too small" or "not embracing AI." Meanwhile, the person proposing a broad AI platform looks strategic, ambitious, and aligned with executive excitement.&lt;/p&gt;

&lt;p&gt;This is why the problem is not just technical judgment. It is incentive design.&lt;/p&gt;

&lt;p&gt;People are often responding rationally to the system around them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hard Part
&lt;/h2&gt;

&lt;p&gt;There is no clean personal immunity to this.&lt;/p&gt;

&lt;p&gt;I have fallen into the same trap. Not from incompetence, but from the same mix of ambition, curiosity, incentives, and genuine belief that a bigger AI solution might solve more than the narrow fix.&lt;/p&gt;

&lt;p&gt;That is what makes this problem worth taking seriously. It does not only capture careless teams. It captures capable people who want to do meaningful work.&lt;/p&gt;

&lt;p&gt;AI did not create bad judgment. It amplified the cost of unclear judgment.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better Standard
&lt;/h2&gt;

&lt;p&gt;Before building the bigger system, teams should earn the right to build it.&lt;/p&gt;

&lt;p&gt;That usually means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick one metric that matters.&lt;/li&gt;
&lt;li&gt;Identify the narrowest hypothesis connected to that metric.&lt;/li&gt;
&lt;li&gt;Ship the smallest change that can test it.&lt;/li&gt;
&lt;li&gt;Measure the result.&lt;/li&gt;
&lt;li&gt;Only add complexity if the simple version proves there is real lift to capture.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the simple fix works, great. You solved the problem cheaply.&lt;/p&gt;

&lt;p&gt;If the simple fix partially works, maybe a more advanced solution is justified.&lt;/p&gt;

&lt;p&gt;If the simple fix fails, that is also useful. You ruled out a hypothesis without dragging a large system into existence.&lt;/p&gt;

&lt;p&gt;This is what disciplined speed looks like. Not building everything faster, but reducing uncertainty faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure More, Ship Less
&lt;/h2&gt;

&lt;p&gt;The phrase sounds backward in a culture obsessed with output, but that is exactly why it matters.&lt;/p&gt;

&lt;p&gt;Measure more.&lt;br&gt;
Ship less.&lt;/p&gt;

&lt;p&gt;Not because shipping is bad, but because unmeasured shipping is expensive theater.&lt;/p&gt;

&lt;p&gt;AI does not change what wins. It changes what fails faster.&lt;/p&gt;

&lt;p&gt;So when implementation becomes cheap, the standard should rise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clearer goals&lt;/li&gt;
&lt;li&gt;smaller tests&lt;/li&gt;
&lt;li&gt;tighter feedback loops&lt;/li&gt;
&lt;li&gt;less narrative, more evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Speed is useful only when you have a map.&lt;/p&gt;

&lt;p&gt;Without that, you are not moving faster toward success.&lt;/p&gt;

&lt;p&gt;You are just accelerating toward a more complicated failure.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>management</category>
    </item>
    <item>
      <title>Single Source of Truth</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Wed, 02 Aug 2023 10:01:47 +0000</pubDate>
      <link>https://dev.to/snowman647/single-source-of-truth-d29</link>
      <guid>https://dev.to/snowman647/single-source-of-truth-d29</guid>
      <description>&lt;h2&gt;
  
  
  1. The Principle of Single Source of Truth (SPOT)
&lt;/h2&gt;

&lt;p&gt;The SPOT, or Single Point of Truth, principle is a better and more semantically-focused interpretation of DRY (Don't Repeat Yourself). The principle suggests that for any given piece of information, there should only be one authoritative location where that data is defined or set. For instance, if there's a rule that pizzas need at least one topping, there should be a single place in the code where that condition is articulated. By maintaining a single source of truth, it ensures that when changes need to be made, they aren't sporadically made in one place but not the others.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Significance of Code Locality
&lt;/h2&gt;

&lt;p&gt;A related concept to SPOT is code locality. Code locality refers to the organization of related code segments, with the goal of enabling humans to discover and remember related code easily. The idea is to keep related elements as close together as possible in the code, especially when multiple sources of truth are necessary. This organization strategy aids in code comprehension and enhances the efficiency of tracking and implementing changes in the codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Spatial Awareness in Code
&lt;/h2&gt;

&lt;p&gt;The saying, "if things tend to change together, they should be closer together," also aligns with the principle of code locality. Structuring the code in a way that elements likely to change simultaneously are placed together can significantly improve code maintainability. This approach, in contrast to using layers as a primary organizational method, prevents scattering related elements across different top-level directories.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Simple Over Complex Structures
&lt;/h2&gt;

&lt;p&gt;Another aspect of good coding practice that ties in with the SPOT principle is the preference for simpler structures. When structuring the codebase, linear arrangements, or 'lists,' are often more favorable than tree or graph structures. They are easier to understand, and they help prevent unnecessarily complex and convoluted code that could lead to difficulties in maintenance and comprehension.&lt;/p&gt;

&lt;p&gt;I'm &lt;a href="https://mitrapunk.com/about/" rel="noopener noreferrer"&gt;building a game about software development, incorporating real principles&lt;/a&gt; that have proven their usefulness throughout my 20+ years of career experience.&lt;/p&gt;

&lt;p&gt;I'm looking for feedback from Alpha version - &lt;a href="https://snowman647.itch.io/software-dev-tycoon?secret=nQPBSCFKYePI6pO897ADOx74" rel="noopener noreferrer"&gt;try game now&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The Principle of Least Power
&lt;/h2&gt;

&lt;p&gt;The principle of least power could be seen as an overarching guideline to the practices described above. This principle suggests that the simplest solution capable of effectively solving a problem is usually the best choice. As applied to code structures, while the graph data structure is highly versatile, it should only be used when simpler data structures fall short, minimizing complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The Advantage of Flat Data Over Tree Data
&lt;/h2&gt;

&lt;p&gt;While flat data are simpler to handle than tree data, the real distinction comes when processing the data. The reason for this is that trees invite recursion, and as the complexity of the logic increases, it can be increasingly difficult to understand what's going on. Conversely, processing lists iteratively can be less complex, and refactoring recursive code to iterative code can often reveal or solve hidden bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Understanding the Balance
&lt;/h2&gt;

&lt;p&gt;As a junior developer, understanding the balance between too much and too little abstraction is key. While the SPOT principle and related concepts can greatly aid in creating maintainable, efficient code, it's essential to know when to apply these principles. Overcomplicating a simple problem with unnecessary abstractions or prematurely refactoring can be as detrimental as not applying the principles at all. Ultimately, the goal is to write code that effectively addresses the core problem, while also being easy to maintain and understand.&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/snowman647" rel="noopener noreferrer"&gt;X(ex-Twitter)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>development</category>
      <category>designpatterns</category>
    </item>
    <item>
      <title>Why Software Development is Hard?</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Sat, 08 Jul 2023 08:23:50 +0000</pubDate>
      <link>https://dev.to/snowman647/why-software-development-is-hard-4abg</link>
      <guid>https://dev.to/snowman647/why-software-development-is-hard-4abg</guid>
      <description>&lt;h2&gt;
  
  
  1. The Power of Tool Use
&lt;/h2&gt;

&lt;p&gt;Building upon the notion that tools are &lt;a href="https://mitrapunk.com/tag/force-multiplier/" rel="noopener noreferrer"&gt;force multipliers&lt;/a&gt;, it's important to understand their intrinsic role in software engineering. Just as a hammer or a screwdriver amplifies the force exerted by a human, &lt;strong&gt;tools in software engineering augment the power of a developer's mind&lt;/strong&gt;. They extend the mental capacity and the effectiveness of problem-solving, enabling engineers to tackle complex tasks with increased efficiency and precision. These tools range from simple text editors and integrated development environments (IDEs) to more complex tools like version control systems and automated testing frameworks. Without these tools, we would be like a carpenter trying to drive a nail with bare hands - exerting a lot of effort, but achieving little.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Evolution of Tools
&lt;/h2&gt;

&lt;p&gt;Just as tools have evolved over time in the physical world, the same is true in the realm of software engineering. As problems become more complex, the &lt;a href="https://mitrapunk.com/workplace-evolution/" rel="noopener noreferrer"&gt;tools we use must evolve&lt;/a&gt; to meet those challenges. For instance, as software projects grow in size and complexity, the use of version control systems like Git has become a necessity rather than a luxury. &lt;br&gt;
These tools not only allow us to manage and track changes in our code, but also facilitate collaboration among teams. Much like the transition from a simple hammer to a power drill, these tools have become more sophisticated and powerful over time, greatly enhancing &lt;strong&gt;our ability to build and maintain complex software systems&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Learning Tools and Methods
&lt;/h2&gt;

&lt;p&gt;While having access to tools is vital, understanding how to effectively utilize them is equally important. Just as a carpenter needs to know how to wield a hammer or operate a saw, a software engineer must learn to use their tools to their full potential. This involves not just understanding the mechanics of the tool, but also the underlying principles and methods that the tool embodies. &lt;br&gt;
For instance, understanding Git is not just about learning commands, but also about grasping the concepts of version control and collaborative development. Thus, part of being a software engineer is constantly learning and adapting to new tools and techniques.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Creating Tools to Enhance Productivity
&lt;/h2&gt;

&lt;p&gt;Beyond just using existing tools, software engineers often create their own &lt;a href="https://mitrapunk.com/op-productivity-tools-for-developers-in-2023/" rel="noopener noreferrer"&gt;tools to further enhance their productivity&lt;/a&gt;. These can be simple scripts to automate mundane tasks, or more complex tools to solve specific problems that existing tools don't address. This is akin to a craftsman making their own unique tool to perform a task more efficiently. By creating their own tools, software engineers can tailor solutions to their specific needs, further multiplying their effectiveness and productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Tools for Learning and Creating Tools
&lt;/h2&gt;

&lt;p&gt;The last frontier in this journey of tool use and creation is the development of tools that help us learn existing tools and methods, or even create new ones. This could range from tutorials and documentation to interactive learning platforms, or even software that assists in developing other software. &lt;br&gt;
These meta-tools serve to &lt;a href="https://mitrapunk.com/unlocking-learning-potential/" rel="noopener noreferrer"&gt;accelerate the learning curve&lt;/a&gt; and make the process of tool creation more accessible. &lt;br&gt;
It's like having a guidebook on how to use a hammer, or a blueprint for creating your own unique tool. As we continue to build these tools for learning and creating, we push the boundaries of what we can achieve in software engineering, further extending the power and reach of our minds.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Gaming for Understanding and &lt;a href="https://mitrapunk.com/what-does-a-good-manager-do/" rel="noopener noreferrer"&gt;Management&lt;/a&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Another tool that has shown promise in both software development and software management is the use of simulation games. These games are designed to emulate the dynamics of an entire organization. &lt;/li&gt;
&lt;li&gt;By participating in these simulations, individuals can gain a deeper understanding of the interconnections and dependencies within an organization's workflow. &lt;/li&gt;
&lt;li&gt;More than a mere tool for visualization, these games can provide valuable insights into project management, team dynamics, and decision-making processes. 
4.They offer a risk-free environment to experiment with different strategies, fostering a better understanding of how to tackle real-world challenges in software development and management. &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;This unique approach combines learning and play, transforming the complex world of software engineering into an engaging and interactive experience.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_why_hard" rel="noopener noreferrer"&gt;Steam Wishlist for Mitrapunk: Engineering Game&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://twitter.com/snowman647" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>career</category>
      <category>leadership</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What Does a Great Manager Do?</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Thu, 06 Jul 2023 16:34:02 +0000</pubDate>
      <link>https://dev.to/snowman647/what-does-a-great-manager-do-35c4</link>
      <guid>https://dev.to/snowman647/what-does-a-great-manager-do-35c4</guid>
      <description>&lt;p&gt;Not all managers are created equal. A good manager elevates their team, fosters a positive environment, and &lt;strong&gt;leads by example&lt;/strong&gt;, while &lt;strong&gt;a 'normal' manager merely oversees operations&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;In this article I will provide insights into the traits and actions that separate good managers from the rest, compiled from the shared experiences of tech professionals and my own I have been earning as a manager for the last 4 years.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Good Manager is Not Just an Individual Contributor with Authority
&lt;/h2&gt;

&lt;p&gt;The best managers understand that their role is significantly different from that of an individual contributor (IC). Rather than assuming the role of "IC plus authority", they adopt a leadership stance that focuses on supporting and enabling their team to do their best work​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trust and Engagement
&lt;/h2&gt;

&lt;p&gt;Good managers trust their team, but they also stay engaged and aware enough to know when to ask the right questions. They provide the team with the autonomy to do their work while maintaining a supportive presence, stepping in to provide guidance when necessary​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shielding the Team
&lt;/h2&gt;

&lt;p&gt;A good manager runs interference for the team, shielding them from organizational politics when possible. They ensure that their team is focused on their work and not distracted by unnecessary bureaucracy or ad hoc requests from upper management​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Providing Necessary Resources
&lt;/h2&gt;

&lt;p&gt;Good managers make sure the team has the tools they need to succeed. If a necessary tool is missing, they relentlessly pursue a solution, demonstrating their commitment to the team's success​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fostering Relationships
&lt;/h2&gt;

&lt;p&gt;They establish good relationships with other teams and leaders within the organization. These relationships are leveraged to help the team, particularly when there are dependencies on other teams​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Elevating the Team
&lt;/h2&gt;

&lt;p&gt;Good managers consistently highlight the value of the team and its accomplishments. They don't take credit for the team's work; instead, they take pride in creating an environment that allows the work to thrive​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communication
&lt;/h2&gt;

&lt;p&gt;Communication is key to successful management. Good managers clearly communicate expectations and the reasons behind them. They also provide their team with enough context about the business to make their work more meaningful​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crisis Management
&lt;/h2&gt;

&lt;p&gt;Good managers excel in crisis management. They are willing to take the blame for failures publicly, then coach individuals privately. They are not afraid to speak truth to power, even when it affects their standing within the organization. If layoffs or similar challenges are on the horizon, they subtly prepare their team, ensuring they aren't caught off guard​​.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mitrapunk.com/software-engineer-as-a-force-multiplier/" rel="noopener noreferrer"&gt;Force multiplier software engineer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Consistent Values
&lt;/h2&gt;

&lt;p&gt;A good manager clearly states their values and sticks to them, which builds trust over time. This predictability provides a sense of stability and trust within the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regular Check-ins
&lt;/h2&gt;

&lt;p&gt;Effective managers have regular one-on-one meetings with their team members. These meetings serve as a platform for communication, coaching, and feedback. However, the frequency of these meetings should be adapted to the current needs of the team and the individual​​.&lt;/p&gt;

&lt;p&gt;How to become one of them?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_what_mngr_do" rel="noopener noreferrer"&gt;Mitrapunk: Engineering Game&lt;/a&gt; trains yourself in all aspects of software development, excluding the coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Empowering Team Members
&lt;/h2&gt;

&lt;p&gt;Good managers trust their team members to do their work. They don't impose unrealistic deadlines, and they respect their team's input. They also protect their team members from requests that would otherwise monopolize their time​.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;You can require any of those from your manager.&lt;/li&gt;
&lt;li&gt;You can start &lt;a href="https://mitrapunk.com/how-to-become-a-software-engineering-manager/" rel="noopener noreferrer"&gt;to be Good Engineering Manager&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good managers understand that their role goes beyond overseeing operations. They actively work to support their team, foster a positive environment, communicate effectively, and lead by example. Their actions and approach elevate them from 'normal' managers and make them leaders who inspire their teams to achieve great things.&lt;/p&gt;

&lt;p&gt;This article aims to provide reliable, trustworthy information based on real-world experiences. If you want more - &lt;a href="https://twitter.com/snowman647" rel="noopener noreferrer"&gt;follow me on twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have a good day!&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>learning</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Guide to Becoming a Senior Software Engineer</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Sun, 25 Jun 2023 20:41:23 +0000</pubDate>
      <link>https://dev.to/snowman647/guide-to-becoming-a-senior-software-engineer-3oj7</link>
      <guid>https://dev.to/snowman647/guide-to-becoming-a-senior-software-engineer-3oj7</guid>
      <description>&lt;h2&gt;
  
  
  Path to Seniority: Time and Experience
&lt;/h2&gt;

&lt;p&gt;Have you ever wondered, "How long does it take to become a senior developer?" This is a common question in the tech industry, and the answer can vary widely depending on several factors. The journey from a junior to a senior developer is not purely dictated by the number of years you've spent in the industry but rather by the breadth and depth of your experience. It's not unusual for this process to take anywhere from 3 to 10 years, with the median time being around 5 years. However, it's not just about putting in the time—it's about what you learn and achieve during that time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Importance of Technical Expertise
&lt;/h2&gt;

&lt;p&gt;Being a Senior Software Developer requires a high degree of technical expertise in a wide array of fields. Whether your path is becoming a senior JavaScript, Python, Android, PHP, or iOS developer, the need for a strong technical foundation is universal. This involves getting fluent in tools like GIT, Docker, Test-Driven Development, and more. A senior developer needs to be proficient in their core language(s) and relevant libraries, understand databases, and be familiar with front-end languages and tools. Knowledge of various software architecture and design patterns is also essential.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diving into Software Development Books
&lt;/h2&gt;

&lt;p&gt;To enhance your understanding of software development and design, consider investing time in seminal texts. Books such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Patterns of Enterprise Software Architecture&lt;/li&gt;
&lt;li&gt;Gang of Four Objected oriented design patterns&lt;/li&gt;
&lt;li&gt;Microservice Design Patterns&lt;/li&gt;
&lt;li&gt;Uncle Bob’s Clean Code&lt;/li&gt;
&lt;li&gt;SOLID Design patterns
provide valuable insights into patterns, techniques, and the jargon that experienced developers use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_625" rel="noopener noreferrer"&gt;Try a game that captures the complexity of software development&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Balance of Confidence and Humility
&lt;/h2&gt;

&lt;p&gt;While acquiring knowledge from books and other resources is crucial, it's equally important to approach this learning journey with humility. The tech industry is vast and continuously evolving, and there's always more to learn. Overconfidence in one's skills can become a roadblock to learning and growth. Humility enables you to learn from others, especially from seasoned developers who have been in the field for decades.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side Projects: The Playground of Skills
&lt;/h2&gt;

&lt;p&gt;A great way to apply and showcase your growing skills is through side projects. Choose projects that push you to learn and apply new concepts and technologies. By making your code public on platforms like GitHub, you not only demonstrate your technical skills but also show your ability to complete projects—an important trait of a senior developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond Code: Leadership and Communication
&lt;/h2&gt;

&lt;p&gt;As you progress in your career, the focus shifts from just writing code to solving complex problems, often involving people and processes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Senior developers need to have strong leadership skills and the ability to communicate effectively with others, including other developers, customers, and management. This may involve implementing new processes, creating proof of concepts, teaching, and more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Customer Focus: Understanding and Solving Problems
&lt;/h2&gt;

&lt;p&gt;A key skill that differentiates a senior developer from a junior developer is the ability to understand and solve the problems of the customer. This involves listening to and comprehending the challenges faced by the customer, conceptualizing solutions, and then implementing these solutions effectively. A senior developer is as much a problem solver as they are a coder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mitrapunk.com/software-engineer-as-a-force-multiplier/" rel="noopener noreferrer"&gt;Who is Force multiplier software engineer&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Becoming a senior software engineer is a journey of continuous learning and growth. It involves developing deep technical expertise, working on complex projects, enhancing your leadership and communication skills, and maintaining a focus on problem-solving. While the journey can be challenging, it is also rewarding and opens up new opportunities for career advancement. Whether you're just starting your career in software development or looking to make the leap to a senior role, there are several factors that could help you transition from a junior to a senior software developer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills:&lt;/strong&gt; A senior developer should be fluent in tools like Git, Docker, and practice Test-driven development. Decent skills in databases, front-end languages such as React, as well as other tools many developers meet like Spark are also recommended. The developer should also have a strong understanding of Python and its libraries. However, while focusing on technical skills, don't overlook the importance of soft skills like communication, problem-solving, leadership, and the ability to work well in a team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experience:&lt;/strong&gt; Working on complex, real-world projects can help you gain the experience you need. This might involve working on an ambitious side project or contributing to open source projects. Not only will this give you practical experience, but it will also help you demonstrate your skills to potential employers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Design Patterns:&lt;/strong&gt; Reading and understanding books like "Patterns of Enterprise Software Architecture", "Gang of Four Objected oriented design patterns", "Microservice Design Patterns", "Uncle Bob’s Clean Code", and "SOLID Design patterns" could also be beneficial. These books provide valuable insights into patterns and jargon that senior developers use. They also emphasize the importance of writing clean, understandable code that other developers can easily work with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning from Others:&lt;/strong&gt; It can be helpful to read and understand code written by other developers. This can give you insights into different ways of solving problems and help you improve your own coding skills. It's also important to learn from experienced developers and stay humble, recognizing that there's always more to learn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem Solving:&lt;/strong&gt; A senior developer is a problem solver. This not only involves solving coding problems but also involves understanding the problems clients are facing and coming up with effective solutions. As a senior developer, you will also likely need to engage in tasks like implementing new processes, speaking with non-developers, creating proof-of-concept projects, and teaching others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Progression in Current Role:&lt;/strong&gt; If you're currently working in a junior role, demonstrating leadership, growth potential, and the ability to complete projects on time can lead to increased responsibilities and potential promotion to a senior role.&lt;br&gt;
Becoming a senior developer isn't just about increasing your technical skills. It's about developing a broader understanding of software development, improving your ability to work with others, and becoming a more effective problem solver.&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://mitrapunk.com/" rel="noopener noreferrer"&gt;mitrapunk.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>leadership</category>
      <category>programming</category>
      <category>development</category>
    </item>
    <item>
      <title>10 Inspiring Development Facts</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Thu, 15 Jun 2023 18:26:15 +0000</pubDate>
      <link>https://dev.to/snowman647/10-inspiring-development-facts-311a</link>
      <guid>https://dev.to/snowman647/10-inspiring-development-facts-311a</guid>
      <description>&lt;h2&gt;
  
  
  Simplicity vs Complexity
&lt;/h2&gt;

&lt;p&gt;While questioning unnecessary complexity is important, it's equally important not to disregard the usefulness of tools like Docker in complex environments​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fighting Complexity
&lt;/h2&gt;

&lt;p&gt;In very large companies with complicated systems, it's crucial to fight unnecessary complexity at every opportunity​​.&lt;/p&gt;

&lt;p&gt;Development Focus&lt;br&gt;
&lt;a href="https://mitrapunk.com/the-essential-transition-from-developer-to-manager/" rel="noopener noreferrer"&gt;Managers are responsible for the growth and development of their team members&lt;/a&gt;. This means identifying strengths and weaknesses, providing constructive feedback, and finding opportunities for skill development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling Simplicity
&lt;/h2&gt;

&lt;p&gt;Simple techniques can often be scaled to handle large amounts of traffic, although they might lack high availability​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Value of 1x Programmers
&lt;/h2&gt;

&lt;p&gt;More organizations could potentially unlock more value by having a 1x programmer with well-defined objectives on staff​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple Scales Too
&lt;/h2&gt;

&lt;p&gt;Some 'simple' techniques like writing to a local disk or using a static binary can scale to handle thousands of queries per second, potentially providing enough capacity for many applications​.&lt;/p&gt;

&lt;h2&gt;
  
  
  In-house Programmer Value
&lt;/h2&gt;

&lt;p&gt;More organizations could potentially unlock value by having a 1x programmer with well-defined objectives on staff, rather than relying solely on SaaS solutions​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Programmer Manifesto
&lt;/h2&gt;

&lt;p&gt;The Stupid Programmer Manifesto outlines an approach to programming that emphasizes simplicity, readability, and maintainability over adherence to the latest trends and techniques​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoiding Overengineering
&lt;/h2&gt;

&lt;p&gt;A key principle of the Stupid Programmer Manifesto is to avoid overengineering whenever possible, breaking down tasks into smaller, manageable pieces instead​​.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplicity in Server Architecture
&lt;/h2&gt;

&lt;p&gt;Under the hood, the architecture of the Stupid Programmer Manifesto relies on a simple, single-threaded, event-driven server with all resources embedded in a single binary, highlighting the possibility of maintaining simplicity even in server architecture​.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mitrapunk.com/software-engineer-as-a-force-multiplier/" rel="noopener noreferrer"&gt;Who is Force multiplier software engineer&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>career</category>
    </item>
    <item>
      <title>Tech Genius Path</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Sun, 04 Jun 2023 19:35:24 +0000</pubDate>
      <link>https://dev.to/snowman647/tech-genius-path-5hg1</link>
      <guid>https://dev.to/snowman647/tech-genius-path-5hg1</guid>
      <description>&lt;p&gt;People suggest several key factors that might have contributed to the success achieved by tech geniuses like Steve Wozniak, Linus Torvalds, and Jeff Dean in the engineering game:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Engineering capabilities&lt;/strong&gt;: These individuals are not just theorists or researchers, but engineers who excel at seeing both the detailed aspects of a project and the bigger picture. They are able to assemble things in the correct order, creating something that has its own identity yet fits within a larger whole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterative approach&lt;/strong&gt;: They had the ability to build something and then continuously improve upon it based on feedback and experience. For example, Torvalds' initial work on Linux was based on Minix, and he refined and evolved it over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strong drive and persistence&lt;/strong&gt;: They were very prolific in their respective fields, whether it was writing code or producing hardware designs. They were also highly persistent and kept at their work even when faced with significant challenges. There are an article &lt;a href="https://devmanager.carrd.co/?post=quick-progress-in-software-development" rel="noopener noreferrer"&gt;about how to be productive&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Early exposure and support&lt;/strong&gt;: Having parents who were engineers or scientists, having the financial means to get a good education, and having access to resources like computers at an early age could all play a significant role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finding a clear goal early in life&lt;/strong&gt;: This helped them to tackle technical problems without excessive frustration. They also had the advantage of being born at a time when the computing field was relatively new and open to individual contributors and innovators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right place and time&lt;/strong&gt;: The achievements of these tech geniuses also involved being at the right place at the right time. For example, Torvalds' work on Linux coincided with the expansion of the internet and the development of open-source projects, while Wozniak's work on the Apple I and II came at a time when there was a need for affordable computers for the middle class.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understanding partners or no partners at all&lt;/strong&gt;: This might have allowed them more time to focus on their work and learning, as opposed to family needs and wants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Luck&lt;/strong&gt;: Despite all these factors, luck also plays a role, in terms of having access to the right tools, knowledge, and community, and getting an opportunity to apply everything they know.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Therefore, if you aspire to thrive in the world of technology, it is essential to recognize that learning the engineering game is just the beginning. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While honing your software engineering skills is crucial, understanding the broader landscape of &lt;strong&gt;management and business&lt;/strong&gt; is equally important. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This multifaceted approach will equip you with a holistic understanding of the industry and empower you to navigate its intricacies more effectively. By embracing a combination of &lt;a href="https://mitrapunk.com/the-essential-transition-from-developer-to-manager/" rel="noopener noreferrer"&gt;technical expertise and managerial acumen&lt;/a&gt;, you can position yourself to not only excel as an engineer but also make informed decisions that drive innovation, foster collaboration, and deliver impactful results.&lt;/p&gt;

&lt;p&gt;Success in the tech realm encompasses diverse pathways, and making a meaningful contribution to the field is within reach regardless of whether you achieve widespread recognition or not.&lt;/p&gt;

&lt;p&gt;Read More:&lt;br&gt;
&lt;a href="https://mitrapunk.com/software-engineer-as-a-force-multiplier/" rel="noopener noreferrer"&gt;Who is Force multiplier software engineer&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>learning</category>
      <category>leadership</category>
      <category>programming</category>
    </item>
    <item>
      <title>Engineering Game Manifest</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Sat, 03 Jun 2023 19:52:09 +0000</pubDate>
      <link>https://dev.to/snowman647/engineering-game-manifest-3i08</link>
      <guid>https://dev.to/snowman647/engineering-game-manifest-3i08</guid>
      <description>&lt;h2&gt;
  
  
  Blueprint of Our Future
&lt;/h2&gt;

&lt;p&gt;Our world is built by engineers, visionaries who transform the realm of imagination into tangible reality. In 2023, software engineers are at the forefront, crafting the blueprint of our future. The complexity and sophistication of their discipline are unparalleled, making it one of the most intricate fields in today's rapidly evolving world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gaming Industry: An Engineering Game Void
&lt;/h2&gt;

&lt;p&gt;Strangely enough, the gaming industry seems to be trailing behind in providing authentic and engaging engineering games. The market is awash with games of all genres and styles, yet a significant void exists when it comes to games focused on engineering, particularly software engineering. There is a distinct lack of hands-on, interactive experiences that effectively simulate the complex processes and challenges of engineering projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Filling the Gap
&lt;/h2&gt;

&lt;p&gt;This gap needs to be filled. The significance of engineering in our lives and its role in shaping our future underscores the importance of making this field more accessible, engaging, and comprehensible to a broader audience. This accessibility can be achieved through the medium of gaming, offering a platform that combines entertainment with education.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vision for an Authentic Engineering Game
&lt;/h2&gt;

&lt;p&gt;I envision a game that incorporates the core pillars of engineering – innovation, system simplification, and customer satisfaction. It will not just be a game about building structures or solving puzzles, but a comprehensive simulation of real-life engineering scenarios. Players will be immersed in the world of engineering, tackling the complexities of managing software projects, devising strategies to reduce system complexity, and brainstorming innovative solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Game's Goal
&lt;/h2&gt;

&lt;p&gt;Most importantly, this engineering game will aim to foster a deeper appreciation of software development among players. It will encourage them to think critically about the role engineering plays in our world today and its potential in the next fifty years. The ultimate goal is to inspire more individuals to explore engineering as a career, contributing to a future built on the backbone of sound and innovative engineering practices.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mitrapunk.com/engineering-game/" rel="noopener noreferrer"&gt;Original article&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_game" rel="noopener noreferrer"&gt;The Game on Steam&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>softwareengineering</category>
      <category>leadership</category>
      <category>learning</category>
    </item>
    <item>
      <title>Coding Game: Quick Code Reading</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Thu, 01 Jun 2023 17:21:28 +0000</pubDate>
      <link>https://dev.to/snowman647/coding-game-quick-code-reading-47id</link>
      <guid>https://dev.to/snowman647/coding-game-quick-code-reading-47id</guid>
      <description>&lt;p&gt;If you're into coding, you'll know that Leetcode challenges aren't much of a hurdle anymore. The real challenge nowadays is how fast you can pick up and understand your tasks as a software developer. It's about speed, agility, and the ability to absorb new information like a sponge.&lt;/p&gt;

&lt;p&gt;Being able to read code is the golden skill for today's developers. Why is it so valuable? Because the ability to decipher and understand pre-written code opens up limitless possibilities. And here's a heads up - this skill is set to become even more valuable in the future, especially when everyone starts using AI assistants like ChatGPT for coding help!&lt;/p&gt;

&lt;p&gt;You might ask, "Why is reading code becoming increasingly important?" Well, in our rapidly evolving tech world, the pace of work is only getting faster. Companies are constantly pushing for quicker development cycles and shorter time-to-market. They want to stay ahead of the competition, and that means developers need to keep up.&lt;/p&gt;

&lt;p&gt;In this high-speed environment, it's not just about writing code anymore. It's about quickly understanding and modifying existing code, integrating new components, and troubleshooting issues swiftly. This is where reading code comes in. Being proficient at interpreting code allows developers to adapt rapidly, making them invaluable assets in this fast-paced industry. So, the faster you can read and understand code, the more likely you are &lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_speed" rel="noopener noreferrer"&gt;to stay in the game&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Managing Complexity: The Role of the Engineer</title>
      <dc:creator>Mike Krop</dc:creator>
      <pubDate>Wed, 31 May 2023 11:24:30 +0000</pubDate>
      <link>https://dev.to/snowman647/managing-complexity-the-role-of-the-engineer-4lcc</link>
      <guid>https://dev.to/snowman647/managing-complexity-the-role-of-the-engineer-4lcc</guid>
      <description>&lt;p&gt;Software development dynamic recognizes that the evolution of software is often confined by two key factors: organizational stability and the understanding of the developers working within a system. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What this means is that the growth of a software system cannot outpace the ability of its developers to comprehend its intricacies or the organization's capacity to accommodate this evolution. When either factor lags, it creates a constraint, halting the progress of software evolution. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hence, software evolution becomes less about pure technological advancements and more about the people fueling those advancements and the environment in which they operate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When it comes to the complexity of software systems, an inherent truth is that they tend to increase over time and becomes an obstacle, hampering the smooth functioning of the software.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;However, one must recognize that managing this complexity does not necessitate a thorough understanding of the entire organization. Instead, it's about having trust in the system, believing that it's functioning as intended. Rather than attempting to comprehend the organization as a whole, focus should be placed on improving the system iteratively. It's about making incremental adjustments that elevate the system without undermining any of its core characteristics. This approach reduces complexity while ensuring the system remains effective.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;This leads us to the critical role of an engineer in the system. As an engineer, your task is to identify the key characteristics of the system and understand the factors influencing them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is essentially mapping the project, creating a comprehensive understanding of how the software system functions. With this map, an engineer can make calculated decisions to navigate the increasing complexity of the system, identifying areas for improvement while ensuring the core functionalities are preserved.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The best engineers are the ones who have the most accurate map of the project. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They are the ones who can navigate the complexities of the evolving system while maintaining its critical aspects. They are the ones who can effectively guide the evolution of software within the constraints of organizational stability and the collective understanding of the developers. These engineers are the true drivers of effective software evolution, skillfully balancing growth and complexity in a constant dance of innovation.&lt;/p&gt;

&lt;p&gt;Read More:&lt;br&gt;
&lt;a href="https://mitrapunk.com/software-engineer-as-a-force-multiplier/" rel="noopener noreferrer"&gt;Who is Force multiplier software engineer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you feel that's too complicated you can first try this in &lt;a href="https://store.steampowered.com/app/2436030?utm_campaign=dev_mc" rel="noopener noreferrer"&gt;form of game about software development organizations&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>career</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
