<?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: Blessed Emmanuel John chidera</title>
    <description>The latest articles on DEV Community by Blessed Emmanuel John chidera (@blessloaded).</description>
    <link>https://dev.to/blessloaded</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4126950%2F5a60ebae-a82d-4e09-b575-520e96ca68a7.jpg</url>
      <title>DEV Community: Blessed Emmanuel John chidera</title>
      <link>https://dev.to/blessloaded</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blessloaded"/>
    <language>en</language>
    <item>
      <title>PROGRAMMER, QUICK QUESTION:</title>
      <dc:creator>Blessed Emmanuel John chidera</dc:creator>
      <pubDate>Thu, 24 Sep 2026 17:42:27 +0000</pubDate>
      <link>https://dev.to/blessloaded/programmer-quick-question-jfk</link>
      <guid>https://dev.to/blessloaded/programmer-quick-question-jfk</guid>
      <description>&lt;p&gt;You could be one of the most talented developers in the room...&lt;/p&gt;

&lt;h4&gt;
  
  
  but if nobody knows you're in the room, who exactly is going to choose you?
&lt;/h4&gt;

&lt;p&gt;Think about that.&lt;/p&gt;

&lt;p&gt;You can learn C#.&lt;/p&gt;

&lt;p&gt;You can learn JavaScript.&lt;/p&gt;

&lt;p&gt;You can learn Python.&lt;/p&gt;

&lt;p&gt;You can learn React, .NET, databases, cloud, AI...&lt;/p&gt;

&lt;p&gt;You can collect certificates.&lt;/p&gt;

&lt;p&gt;You can build projects.&lt;/p&gt;

&lt;p&gt;You can have ten brilliant ideas sitting inside your head.&lt;/p&gt;

&lt;p&gt;But if all of that stays hidden...&lt;/p&gt;

&lt;h4&gt;
  
  
  who knows?
&lt;/h4&gt;

&lt;p&gt;And more importantly:&lt;/p&gt;

&lt;h4&gt;
  
  
  who can trust that you can actually do it?
&lt;/h4&gt;

&lt;p&gt;Let me show you something.&lt;/p&gt;

&lt;p&gt;You are reading this post right now.&lt;/p&gt;

&lt;p&gt;You probably didn't know me before you saw it.&lt;/p&gt;

&lt;p&gt;You didn't know what I was thinking.&lt;/p&gt;

&lt;p&gt;You didn't know that I had this idea.&lt;/p&gt;

&lt;p&gt;But I wrote it.&lt;/p&gt;

&lt;p&gt;I put it out there.&lt;/p&gt;

&lt;p&gt;And now...&lt;/p&gt;

&lt;p&gt;you've seen it.&lt;/p&gt;

&lt;p&gt;You now know that someone called ##John Kode / ##BlexonDev exists and is thinking about programming, building, learning, and the future of developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  That is exactly what I mean by putting yourself out there.
&lt;/h3&gt;

&lt;p&gt;This post is the example.&lt;/p&gt;

&lt;p&gt;I didn't keep the idea in my head.&lt;/p&gt;

&lt;p&gt;I didn't say:&lt;/p&gt;

&lt;p&gt;_"I'll post it when I'm better."&lt;/p&gt;

&lt;p&gt;"I'll post it when I have more followers."&lt;/p&gt;

&lt;p&gt;"I'll post it when I'm an expert."_&lt;/p&gt;

&lt;p&gt;I brought it into the lobby.&lt;/p&gt;

&lt;p&gt;And you saw it.&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; ###Think about an audition.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;There is an arena.&lt;/p&gt;

&lt;p&gt;Inside that arena, there are halls.&lt;/p&gt;

&lt;p&gt;There are passages.&lt;/p&gt;

&lt;p&gt;There are rooms.&lt;/p&gt;

&lt;p&gt;There is the compound.&lt;/p&gt;

&lt;p&gt;And then there is the main lobby.&lt;/p&gt;

&lt;p&gt;The lobby is where people are arriving.&lt;/p&gt;

&lt;p&gt;People are meeting.&lt;/p&gt;

&lt;p&gt;People are introducing themselves.&lt;/p&gt;

&lt;p&gt;People are showing what they can do.&lt;/p&gt;

&lt;p&gt;People are being noticed.&lt;/p&gt;

&lt;p&gt;Now imagine two programmers.&lt;/p&gt;

&lt;p&gt;Both are talented.&lt;/p&gt;

&lt;p&gt;Both can build.&lt;/p&gt;

&lt;p&gt;Both have good ideas.&lt;/p&gt;

&lt;p&gt;Both have spent years learning.&lt;/p&gt;

&lt;p&gt;But one stays somewhere inside the building, quietly working on his projects.&lt;/p&gt;

&lt;p&gt;The other walks into the lobby.&lt;/p&gt;

&lt;p&gt;He starts talking to people.&lt;/p&gt;

&lt;p&gt;He shows his projects.&lt;/p&gt;

&lt;p&gt;He shares what he's learning.&lt;/p&gt;

&lt;p&gt;He contributes to communities.&lt;/p&gt;

&lt;p&gt;He puts his work online.&lt;/p&gt;

&lt;p&gt;He connects with other developers.&lt;/p&gt;

&lt;p&gt;He allows people to discover what he can do.&lt;/p&gt;

&lt;p&gt;Which one has given opportunity a chance to find him?&lt;/p&gt;

&lt;p&gt;That's the difference I'm talking about.&lt;/p&gt;




&lt;p&gt;Programming isn't only about learning programming languages.&lt;/p&gt;

&lt;p&gt;At some point, you have to ask:&lt;/p&gt;

&lt;h4&gt;
  
  
  Can I use what I've learned?
&lt;/h4&gt;

&lt;p&gt;Can I build something?&lt;/p&gt;

&lt;p&gt;Can I solve a problem?&lt;/p&gt;

&lt;p&gt;Can I turn an idea into a working system?&lt;/p&gt;

&lt;p&gt;Can I explain what I built?&lt;/p&gt;

&lt;p&gt;Can I show my process?&lt;/p&gt;

&lt;p&gt;Can I work with other people?&lt;/p&gt;

&lt;p&gt;Can I contribute?&lt;/p&gt;

&lt;p&gt;Because your skill needs evidence.&lt;/p&gt;

&lt;p&gt;Don't just say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I know C#."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Show the C# project.&lt;/p&gt;

&lt;p&gt;Don't just say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I'm learning web development."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Build the website.&lt;/p&gt;

&lt;p&gt;Don't just say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I understand Git."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Show the repository.&lt;/p&gt;

&lt;p&gt;Don't just say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I want to become a software engineer."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Start engineering something.&lt;/p&gt;

&lt;p&gt;Let your work speak for you.&lt;/p&gt;

&lt;p&gt;And once you have something to show...&lt;/p&gt;

&lt;p&gt;put it in the lobby.&lt;/p&gt;

&lt;p&gt;GitHub.&lt;/p&gt;

&lt;p&gt;LinkedIn.&lt;/p&gt;

&lt;p&gt;Dev.to.&lt;/p&gt;

&lt;p&gt;Medium.&lt;/p&gt;

&lt;p&gt;YouTube.&lt;/p&gt;

&lt;p&gt;Facebook.&lt;/p&gt;

&lt;p&gt;Your portfolio.&lt;/p&gt;

&lt;p&gt;Open-source communities.&lt;/p&gt;

&lt;p&gt;Developer communities.&lt;/p&gt;

&lt;p&gt;Networking events.&lt;/p&gt;

&lt;p&gt;Real conversations.&lt;/p&gt;

&lt;p&gt;Real projects.&lt;/p&gt;

&lt;p&gt;Real contributions.&lt;/p&gt;

&lt;p&gt;These aren't just places to collect followers.&lt;/p&gt;

&lt;p&gt;They're places where **your work can be discovered.&lt;/p&gt;




&lt;p&gt;But there's another side to this.&lt;/p&gt;

&lt;h4&gt;
  
  
  Being visible without having anything to show isn't enough either.
&lt;/h4&gt;

&lt;p&gt;You can walk into the lobby and announce:&lt;/p&gt;

&lt;p&gt;_"I know C#."&lt;/p&gt;

&lt;p&gt;"I know JavaScript."&lt;/p&gt;

&lt;p&gt;"I have five certificates."&lt;/p&gt;

&lt;p&gt;"I have ten ideas."_&lt;/p&gt;

&lt;p&gt;And someone can simply ask:&lt;/p&gt;

&lt;p&gt;"Show me."&lt;/p&gt;

&lt;p&gt;That's where your projects matter.&lt;/p&gt;

&lt;p&gt;Your GitHub matters.&lt;/p&gt;

&lt;p&gt;Your portfolio matters.&lt;/p&gt;

&lt;p&gt;Your documentation matters.&lt;/p&gt;

&lt;p&gt;Your ability to explain what you built matters.&lt;/p&gt;

&lt;p&gt;Your ability to solve problems matters.&lt;/p&gt;

&lt;p&gt;Your consistency matters.&lt;/p&gt;

&lt;p&gt;Because the goal isn't to look like a programmer.&lt;/p&gt;

&lt;p&gt;The goal is to become one and have evidence to prove what you can do.&lt;/p&gt;

&lt;p&gt;So don't misunderstand me.&lt;/p&gt;

&lt;p&gt;I'm not saying:&lt;/p&gt;

&lt;p&gt;"Stop learning and start posting."&lt;/p&gt;

&lt;p&gt;I'm saying:&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Build.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Break.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Debug.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Document.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Share.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Connect.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Contribute.
&lt;/h3&gt;

&lt;p&gt;And repeat.&lt;/p&gt;

&lt;p&gt;Because there is a difference between having potential and giving people an opportunity to discover your potential.&lt;/p&gt;

&lt;p&gt;Your talent can be hidden.&lt;/p&gt;

&lt;p&gt;Your ideas can be hidden.&lt;/p&gt;

&lt;p&gt;Your skills can be hidden.&lt;/p&gt;

&lt;p&gt;Your projects can be hidden.&lt;/p&gt;

&lt;p&gt;But opportunities cannot interact with what they cannot see.&lt;/p&gt;

&lt;p&gt;So, programmer...&lt;/p&gt;

&lt;p&gt;Don't spend your entire career waiting inside the building.&lt;/p&gt;

&lt;p&gt;Step into the lobby.&lt;/p&gt;

&lt;p&gt;Put your work where people can see it.&lt;/p&gt;

&lt;p&gt;Let people discover you.&lt;/p&gt;

&lt;p&gt;Let your projects introduce you before you even enter the room.&lt;/p&gt;

&lt;p&gt;Let your work create conversations.&lt;/p&gt;

&lt;p&gt;Let those conversations create connections.&lt;/p&gt;

&lt;p&gt;Let those connections create opportunities.&lt;/p&gt;

&lt;p&gt;And remember:&lt;/p&gt;

&lt;p&gt;You don't have to be the best programmer in the room to enter the lobby.&lt;/p&gt;

&lt;p&gt;You just have to be willing to **show up, build something real, and let people see it.&lt;/p&gt;

&lt;p&gt;Because maybe...&lt;/p&gt;

&lt;p&gt;**the opportunity you're waiting for isn't coming to find you.&lt;/p&gt;

&lt;p&gt;Maybe you need to make yourself findable.&lt;/p&gt;




&lt;p&gt;So, what are you building?&lt;/p&gt;

&lt;p&gt;Don't just tell me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show me.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Programming #SoftwareDevelopment #Developers #BuildInPublic #GitHub #TechCommunity #blexondev #johnKode
&lt;/h1&gt;

</description>
      <category>career</category>
      <category>development</category>
      <category>programmers</category>
    </item>
    <item>
      <title>AI &amp; The Programmer: A Manifesto for Developers Who Refuse to Be Replaced</title>
      <dc:creator>Blessed Emmanuel John chidera</dc:creator>
      <pubDate>Tue, 22 Sep 2026 17:59:58 +0000</pubDate>
      <link>https://dev.to/blessloaded/ai-the-programmer-a-manifesto-for-developers-who-refuse-to-be-replaced-1i74</link>
      <guid>https://dev.to/blessloaded/ai-the-programmer-a-manifesto-for-developers-who-refuse-to-be-replaced-1i74</guid>
      <description>&lt;p&gt;There's a quiet question spreading through the developer world:&lt;/p&gt;

&lt;p&gt;"If AI can write code, what happens to programmers?"&lt;/p&gt;

&lt;p&gt;Some respond with denial — believing AI is simply hype and that software development will remain unchanged.&lt;/p&gt;

&lt;p&gt;Others respond with surrender — accepting that AI will do the work, while developers simply describe what they want, copy the output, and hope it works.&lt;/p&gt;

&lt;p&gt;I believe both responses miss the real question.&lt;/p&gt;

&lt;p&gt;The question isn't:&lt;/p&gt;

&lt;p&gt;"Will AI replace programmers?"&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;p&gt;"What kind of programmer will you become when AI can do more of the work?"&lt;/p&gt;

&lt;p&gt;Because AI is not simply something happening to programmers.&lt;/p&gt;

&lt;p&gt;It is becoming something programmers can work with.&lt;/p&gt;

&lt;p&gt;And that changes our responsibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;This is for the beginner writing their first program and wondering whether learning to code still matters.&lt;/p&gt;

&lt;p&gt;It is for the developer who has become faster with AI but sometimes wonders whether they are becoming weaker at thinking.&lt;/p&gt;

&lt;p&gt;It is for the experienced engineer designing systems, reviewing code, mentoring others, and trying to understand how AI changes the craft.&lt;/p&gt;

&lt;p&gt;It is for the self-taught developer building alone.&lt;/p&gt;

&lt;p&gt;It is for students, professionals, freelancers, architects, creators, and anyone who wants to use AI without surrendering their ability to think.&lt;/p&gt;

&lt;p&gt;Because this is where the conversation should begin:&lt;/p&gt;

&lt;p&gt;AI should make you more capable—not less capable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Believe
&lt;/h2&gt;

&lt;p&gt;We believe AI is one of the most powerful tools ever placed in the hands of a programmer.&lt;/p&gt;

&lt;p&gt;We also believe that powerful tools can become dangerous shortcuts when the person using them stops thinking.&lt;/p&gt;

&lt;p&gt;We believe the value of AI isn't simply how much code it can generate.&lt;/p&gt;

&lt;p&gt;Its value is in how effectively a developer can use it to learn, reason, build, investigate, test, review, and improve.&lt;/p&gt;

&lt;p&gt;We believe programming fundamentals still matter.&lt;/p&gt;

&lt;p&gt;Perhaps more than ever.&lt;/p&gt;

&lt;p&gt;Generating code is becoming easier.&lt;/p&gt;

&lt;p&gt;Understanding what that code should do, whether it is correct, secure, maintainable, appropriate, and worth shipping remains an engineering responsibility.&lt;/p&gt;

&lt;p&gt;We believe copy-pasting code you don't understand is not the same as learning to program.&lt;/p&gt;

&lt;p&gt;You may have borrowed a solution.&lt;/p&gt;

&lt;p&gt;You haven't necessarily developed the ability to solve the problem yourself.&lt;/p&gt;

&lt;p&gt;We believe AI shouldn't only answer our questions.&lt;/p&gt;

&lt;p&gt;It should challenge our assumptions.&lt;/p&gt;

&lt;p&gt;Expose weaknesses in our reasoning.&lt;/p&gt;

&lt;p&gt;Present alternatives.&lt;/p&gt;

&lt;p&gt;Help us investigate.&lt;/p&gt;

&lt;p&gt;Help us learn.&lt;/p&gt;

&lt;p&gt;Help us become better thinkers.&lt;/p&gt;

&lt;p&gt;And we believe BY MY SELF does not mean without help.&lt;/p&gt;

&lt;p&gt;It means with ownership.&lt;/p&gt;

&lt;p&gt;I can use AI.&lt;/p&gt;

&lt;p&gt;I can use documentation.&lt;/p&gt;

&lt;p&gt;I can use books.&lt;/p&gt;

&lt;p&gt;I can use mentors.&lt;/p&gt;

&lt;p&gt;I can use communities.&lt;/p&gt;

&lt;p&gt;I can use every tool available to me.&lt;/p&gt;

&lt;p&gt;But I must still understand what I am building and take responsibility for the decisions I make.&lt;/p&gt;

&lt;p&gt;The goal isn't to become a programmer who never uses AI.&lt;/p&gt;

&lt;p&gt;The goal is to become a programmer who can use AI without becoming dependent on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Seven Principles
&lt;/h2&gt;

&lt;p&gt;These seven principles form the spine of AI &amp;amp; The Programmer.&lt;/p&gt;

&lt;p&gt;Every article, lesson, project, experiment, and BY MY SELF progress update can connect to one or more of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. From Code Generation to Problem Solving
&lt;/h3&gt;

&lt;p&gt;AI can generate code.&lt;/p&gt;

&lt;p&gt;But software development begins before the code.&lt;/p&gt;

&lt;p&gt;Understand the problem.&lt;/p&gt;

&lt;p&gt;Define the requirements.&lt;/p&gt;

&lt;p&gt;Identify the constraints.&lt;/p&gt;

&lt;p&gt;Break the problem down.&lt;/p&gt;

&lt;p&gt;Consider possible solutions.&lt;/p&gt;

&lt;p&gt;Then use AI to accelerate the work.&lt;/p&gt;

&lt;p&gt;Don't begin with:&lt;/p&gt;

&lt;p&gt;"What code should I write?"&lt;/p&gt;

&lt;p&gt;Begin with:&lt;/p&gt;

&lt;p&gt;"What problem am I actually solving?"&lt;/p&gt;

&lt;h3&gt;
  
  
  2. From AI as an Answer Machine to AI as a Thinking Partner
&lt;/h3&gt;

&lt;p&gt;The easiest way to use AI is to ask it for answers.&lt;/p&gt;

&lt;p&gt;The more valuable way is to use it to improve your thinking.&lt;/p&gt;

&lt;p&gt;Ask it to explain.&lt;/p&gt;

&lt;p&gt;Challenge your assumptions.&lt;/p&gt;

&lt;p&gt;Review your design.&lt;/p&gt;

&lt;p&gt;Find weaknesses.&lt;/p&gt;

&lt;p&gt;Generate alternatives.&lt;/p&gt;

&lt;p&gt;Argue against your solution.&lt;/p&gt;

&lt;p&gt;Give you hints instead of solutions.&lt;/p&gt;

&lt;p&gt;AI becomes more valuable when the conversation becomes deeper than:&lt;/p&gt;

&lt;p&gt;"Write this for me."&lt;/p&gt;

&lt;h3&gt;
  
  
  3. From AI Assistance to Human Ownership
&lt;/h3&gt;

&lt;p&gt;Using AI doesn't remove responsibility from the developer.&lt;/p&gt;

&lt;p&gt;If AI generated the code, you still need to understand it.&lt;/p&gt;

&lt;p&gt;If AI proposed the architecture, you still need to evaluate it.&lt;/p&gt;

&lt;p&gt;If AI suggested the fix, you still need to verify it.&lt;/p&gt;

&lt;p&gt;If AI made the decision easier, you still need to own the decision.&lt;/p&gt;

&lt;p&gt;BY MY SELF means the outcome is mine—even when the assistance wasn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. From Copy-Paste to Understanding
&lt;/h3&gt;

&lt;p&gt;Fast code isn't necessarily good code.&lt;/p&gt;

&lt;p&gt;Working code isn't necessarily understood code.&lt;/p&gt;

&lt;p&gt;Generated code isn't automatically production-ready code.&lt;/p&gt;

&lt;p&gt;If I cannot explain it, test it, modify it, debug it, or defend the decision behind it, then I don't truly own it yet.&lt;/p&gt;

&lt;p&gt;Use AI to accelerate understanding—not to bypass it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. From Accepting AI's Output to Verifying It
&lt;/h3&gt;

&lt;p&gt;AI can be useful.&lt;/p&gt;

&lt;p&gt;AI can also be wrong.&lt;/p&gt;

&lt;p&gt;It can misunderstand requirements, make incorrect assumptions, invent APIs, produce insecure code, introduce unnecessary complexity, or recommend something inappropriate for the system.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;p&gt;Generate → Inspect → Question → Test → Verify.&lt;/p&gt;

&lt;p&gt;Never confuse confidence with correctness.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. From Learning With AI to Becoming Capable Without It
&lt;/h3&gt;

&lt;p&gt;AI should increase your capabilities, not hide your weaknesses.&lt;/p&gt;

&lt;p&gt;Learn the fundamentals.&lt;/p&gt;

&lt;p&gt;Practice without assistance.&lt;/p&gt;

&lt;p&gt;Build from scratch.&lt;/p&gt;

&lt;p&gt;Debug your own mistakes.&lt;/p&gt;

&lt;p&gt;Then bring AI into the process.&lt;/p&gt;

&lt;p&gt;The goal isn't to prove that you can work without AI every minute.&lt;/p&gt;

&lt;p&gt;The goal is to know that:&lt;/p&gt;

&lt;p&gt;AI is helping you—not carrying you.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. From Programmer to AI-Augmented Engineer
&lt;/h3&gt;

&lt;p&gt;The future isn't simply about writing code faster.&lt;/p&gt;

&lt;p&gt;It is about thinking at a higher level.&lt;/p&gt;

&lt;p&gt;Understanding requirements.&lt;/p&gt;

&lt;p&gt;Designing systems.&lt;/p&gt;

&lt;p&gt;Making trade-offs.&lt;/p&gt;

&lt;p&gt;Reviewing implementations.&lt;/p&gt;

&lt;p&gt;Understanding architecture.&lt;/p&gt;

&lt;p&gt;Testing assumptions.&lt;/p&gt;

&lt;p&gt;Managing complexity.&lt;/p&gt;

&lt;p&gt;Communicating decisions.&lt;/p&gt;

&lt;p&gt;Using AI throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;The developer of the future isn't merely someone who knows how to prompt.&lt;/p&gt;

&lt;p&gt;It is someone who knows:&lt;/p&gt;

&lt;p&gt;what to ask, why to ask it, how to evaluate the answer, and what to do with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The BY MY SELF Principle
&lt;/h2&gt;

&lt;p&gt;This is the foundation underneath everything I am building.&lt;/p&gt;

&lt;h3&gt;
  
  
  LEARN
&lt;/h3&gt;

&lt;p&gt;Understand the concept before rushing to implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  THINK
&lt;/h3&gt;

&lt;p&gt;Attempt to reason through the problem yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  BUILD
&lt;/h3&gt;

&lt;p&gt;Turn your understanding into something real.&lt;/p&gt;

&lt;h3&gt;
  
  
  BREAK
&lt;/h3&gt;

&lt;p&gt;Allow yourself to encounter mistakes and unexpected behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  DEBUG
&lt;/h3&gt;

&lt;p&gt;Investigate instead of immediately searching for a replacement answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  UNDERSTAND
&lt;/h3&gt;

&lt;p&gt;Find out why the solution works.&lt;/p&gt;

&lt;h3&gt;
  
  
  DOCUMENT
&lt;/h3&gt;

&lt;p&gt;Record what you learned so the experience becomes reusable knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  REPEAT
&lt;/h3&gt;

&lt;p&gt;Every project becomes another opportunity to become more capable.&lt;/p&gt;

&lt;p&gt;AI belongs inside this cycle.&lt;/p&gt;

&lt;p&gt;It does not replace the cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  My AI Operating Principle
&lt;/h2&gt;

&lt;p&gt;I don't believe there is a universal percentage that every developer must follow.&lt;/p&gt;

&lt;p&gt;But I have a personal rule:&lt;/p&gt;

&lt;p&gt;Think more than you delegate.&lt;/p&gt;

&lt;p&gt;My goal is to spend more of my effort understanding the problem, reasoning about the solution, making decisions, and verifying results than simply producing output.&lt;/p&gt;

&lt;p&gt;If AI is doing all the thinking, I'm not becoming a better developer.&lt;/p&gt;

&lt;p&gt;If AI is accelerating work I understand and can evaluate, then it is making me more capable.&lt;/p&gt;

&lt;p&gt;AI should accelerate my hands—not replace my mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Commitment
&lt;/h2&gt;

&lt;p&gt;I am not writing this from the position of someone who has already mastered everything.&lt;/p&gt;

&lt;p&gt;I'm writing it as a developer in motion.&lt;/p&gt;

&lt;p&gt;I'm learning programming.&lt;/p&gt;

&lt;p&gt;I'm building projects.&lt;/p&gt;

&lt;p&gt;I'm making mistakes.&lt;/p&gt;

&lt;p&gt;I'm debugging.&lt;/p&gt;

&lt;p&gt;I'm experimenting with AI.&lt;/p&gt;

&lt;p&gt;And I'm documenting what happens.&lt;/p&gt;

&lt;p&gt;My goal is to become a confident, independent developer who can build real software, explain what I build, understand the decisions behind it, and take responsibility for the work I produce.&lt;/p&gt;

&lt;p&gt;I'm building under the name Blessed Codes.&lt;/p&gt;

&lt;p&gt;I'm laying the foundation for something bigger called BlexonDevco.&lt;/p&gt;

&lt;p&gt;And I'm doing it through one principle:&lt;/p&gt;

&lt;h2&gt;
  
  
  BY MY SELF.
&lt;/h2&gt;

&lt;p&gt;Not alone.&lt;/p&gt;

&lt;p&gt;Not unaided.&lt;/p&gt;

&lt;p&gt;But with ownership.&lt;/p&gt;

&lt;p&gt;The thinking is mine.&lt;/p&gt;

&lt;p&gt;The decisions are mine.&lt;/p&gt;

&lt;p&gt;The mistakes are mine.&lt;/p&gt;

&lt;p&gt;The growth is mine.&lt;/p&gt;

&lt;p&gt;The work carries my name.&lt;/p&gt;

&lt;p&gt;AI can help me build it.&lt;/p&gt;

&lt;h4&gt;
  
  
  But AI cannot become me.
&lt;/h4&gt;

&lt;h3&gt;
  
  
  The Invitation
&lt;/h3&gt;

&lt;p&gt;If you're a beginner, learn with me.&lt;/p&gt;

&lt;p&gt;If you're an intermediate developer, challenge the ideas.&lt;/p&gt;

&lt;p&gt;If you're experienced, challenge the standard.&lt;/p&gt;

&lt;p&gt;If you're an architect, challenge the assumptions.&lt;/p&gt;

&lt;p&gt;If you're building alone, know that independence does not require isolation.&lt;/p&gt;

&lt;p&gt;And if you use AI every day, ask yourself:&lt;/p&gt;

&lt;p&gt;Is AI making me better—or merely making me faster?&lt;/p&gt;

&lt;p&gt;Because faster isn't always better.&lt;/p&gt;

&lt;p&gt;A faster developer who understands less isn't necessarily becoming a stronger engineer.&lt;/p&gt;

&lt;p&gt;The goal is capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Future
&lt;/h3&gt;

&lt;p&gt;The developers who thrive alongside AI will not necessarily be those who resist it.&lt;/p&gt;

&lt;p&gt;Nor will they necessarily be those who surrender everything to it.&lt;/p&gt;

&lt;p&gt;They will be the developers who learn to think with AI while remaining capable of thinking beyond it.&lt;/p&gt;

&lt;p&gt;They will know when to ask.&lt;/p&gt;

&lt;p&gt;When to investigate.&lt;/p&gt;

&lt;p&gt;When to challenge.&lt;/p&gt;

&lt;p&gt;When to verify.&lt;/p&gt;

&lt;p&gt;When to reject an answer.&lt;/p&gt;

&lt;p&gt;And when to put the AI aside and solve the problem themselves.&lt;/p&gt;

&lt;p&gt;That is the kind of developer I am working to become.&lt;/p&gt;

&lt;p&gt;And this series is the record of that journey.&lt;/p&gt;

&lt;p&gt;"I'm no longer just preparing to become a developer. I'm becoming one."&lt;/p&gt;

&lt;h4&gt;
  
  
  Welcome to AI &amp;amp; The Programmer.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Welcome to BY MY SELF.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Welcome to the work.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  — John Kodes
&lt;/h4&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>We Reinvented OOP by Making a Sandwich (Before Writing Any Code)</title>
      <dc:creator>Blessed Emmanuel John chidera</dc:creator>
      <pubDate>Sat, 19 Sep 2026 22:28:18 +0000</pubDate>
      <link>https://dev.to/blessloaded/we-reinvented-oop-by-making-a-sandwich-before-writing-any-code-19hb</link>
      <guid>https://dev.to/blessloaded/we-reinvented-oop-by-making-a-sandwich-before-writing-any-code-19hb</guid>
      <description>&lt;p&gt;A weak developer stares at an empty &lt;code&gt;.cs&lt;/code&gt; file and starts typing syntax until the red squiggly lines go away.&lt;/p&gt;

&lt;p&gt;A software engineer designs the system before touching a compiler.&lt;/p&gt;

&lt;p&gt;Most programming tutorials rush straight into syntax:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Here is an &lt;code&gt;int&lt;/code&gt;. Here is a &lt;code&gt;for&lt;/code&gt; loop. Here is &lt;code&gt;public static void Main&lt;/code&gt;. Good luck!"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The result? Beginners hit tutorial hell. The second they face a blank screen, their brain locks up. They know the keywords, but they don't know &lt;strong&gt;how to decompose a problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Inside our engineering mentorship program (&lt;strong&gt;BY MY SELF&lt;/strong&gt;), we ran an experiment with an apprentice named John: &lt;strong&gt;Build the entire conceptual foundation of Object-Oriented Programming (OOP) without writing a single line of C# first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the step-by-step breakdown of how it unfolded—and how it will sharpen your problem-solving skills.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Sandwich Challenge: Computers Have Zero Context
&lt;/h2&gt;

&lt;p&gt;To a human, &lt;em&gt;"Make me a cup of coffee"&lt;/em&gt; is simple. Your brain automatically fills in the gaps: find a mug, boil water, add grounds, pour.&lt;/p&gt;

&lt;p&gt;A computer doesn't know what "make" is. It doesn't know what "coffee" is. It has zero implied context.&lt;/p&gt;

&lt;p&gt;We gave our apprentice his first challenge:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Challenge:&lt;/strong&gt;&lt;br&gt;
You are programming an autonomous robot with zero real-world knowledge. &lt;br&gt;
It has: &lt;strong&gt;Bread, Butter, a Knife, a Plate, and Cheese.&lt;/strong&gt;&lt;br&gt;
Write an algorithm that gives step-by-step instructions to assemble a cheese sandwich.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here was his first attempt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Name the items:
   A = Bread, B = Butter, C = Knife, D = Plate, E = Cheese
2. Place A on D
3. Using C take B = F
4. Then F is placed on A
5. E is placed on F
6. A + B + E = G
7. G + D = result
8. result = Sandwich
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks reasonable to a human. But let's run an engineering audit on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Debugging Human Logic
&lt;/h2&gt;

&lt;p&gt;When we reviewed the algorithm like a senior engineer reviewing a Pull Request, three major bugs surfaced:&lt;br&gt;
🐛 Bug 1 : Undefined Verbs ("Take")&lt;br&gt;
&lt;code&gt;Using C take B = F&lt;/code&gt;&lt;br&gt;
What does "take" mean to a mechanical robot actuator? Does it slice the butter? Scoop it? Stab the block? At what angle? How many grams?&lt;br&gt;
Engineering Rule: Ambiguity in requirements creates defects in production.&lt;br&gt;
🐛 Bug 2 : Commutativity Fallacy&lt;br&gt;
&lt;code&gt;A + B + E = G (Bread + Butter + Cheese = Sandwich)&lt;/code&gt;&lt;br&gt;
In algebra, addition is commutative:&lt;br&gt;
&lt;code&gt;A + B == B + A&lt;/code&gt;&lt;br&gt;
Does physical assembly work that way? No!&lt;br&gt;
If you put butter under the bread, you get a greasy plate and a structural catastrophe. You cannot use mathematical operators to hide unstated physical actions.&lt;br&gt;
🐛 Bug 3 : Container Leak&lt;br&gt;
&lt;code&gt;G + D = result (where D = Plate)&lt;/code&gt;&lt;br&gt;
If you eat the sandwich, do you eat the plate?&lt;br&gt;
The plate is an execution environment / container (like memory allocation). &lt;br&gt;
The sandwich is the data payload. Conflating your data with your runtime infrastructure leads to memory leaks and dirty architecture.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Inventing a Mini-Language: The Birth of "State"
&lt;/h2&gt;

&lt;p&gt;For attempt #2, the apprentice separated ingredients from tools and containers, defining operational verbs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entities: Bread, Butter, Cheese&lt;/li&gt;
&lt;li&gt;Tools: Knife&lt;/li&gt;
&lt;li&gt;Container: Plate&lt;/li&gt;
&lt;li&gt;Operations:&lt;/li&gt;
&lt;li&gt;     SCOOP: Engage knife at an angle to collect butter.&lt;/li&gt;
&lt;li&gt;     SPREAD: Distribute scooped material evenly over a surface.&lt;/li&gt;
&lt;li&gt;     LAY: Place an entity onto a base.
Then he wrote:
&lt;code&gt;SPREAD(Butter, Bread) -&amp;gt; Stack 1&lt;/code&gt;
Look closely at what happened here.
When butter is spread onto bread, the bread doesn't vanish into a completely new element. The bread simply undergoes a state transition:
&lt;code&gt;[ Bread (Plain) ] ── SPREAD(Butter) ──&amp;gt; [ Bread (Buttered) ]&lt;/code&gt;
This is one of the most critical ideas in computer science:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;State is the condition or configuration of an entity at a specific 
point in time. Actions don't just "do things"—they trigger state 
transitions.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  4. The Bank Test: Command-Query Separation
&lt;/h2&gt;

&lt;p&gt;To ensure this model wasn't just about physical objects, we tested it against pure information: a Bank Account.&lt;br&gt;
Given an account with Balance = $5,000 and Status = Active, we analyzed four operations:&lt;/p&gt;

&lt;p&gt;DEPOSIT($1,000)&lt;br&gt;
WITHDRAW($500)&lt;br&gt;
CHECK_BALANCE()&lt;br&gt;
CLOSE_ACCOUNT()&lt;br&gt;
When looking at CHECK_BALANCE(), the apprentice noticed something crucial:&lt;br&gt;
State Before: Balance = $4,500&lt;br&gt;
Action:       CHECK_BALANCE()&lt;br&gt;
State After:  Balance = $4,500 (Unchanged!)&lt;br&gt;
Output:       $4,500&lt;/p&gt;

&lt;p&gt;He had just independently discovered Command-Query Separation (CQS):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OPERATIONS
                        │
         ┌──────────────┴──────────────┐
         ↓                             ↓
     COMMANDS                       QUERIES
   (Mutations)                  (Observations)
   - Change State                - Read State
   - Produce Side Effects        - Zero Side Effects
   - e.g., WITHDRAW()            - e.g., CHECK_BALANCE()

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An action doesn't always mutate an entity. Some actions simply inspect and return data.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The 100-Cars Dilemma: Why Classes Exist
&lt;/h2&gt;

&lt;p&gt;Finally, we hit him with a scalability problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Imagine you're building a racing simulation. A car has Speed, Fuel, and an Engine. It can Accelerate(), Brake(), and Refuel(). Now imagine you need 100 cars on the track. How do you design this without writing Accelerate() 100 separate times?"&lt;br&gt;
His response:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"You create a single car template.
The template defines what every car HAS and what every car DOES.
Then you stamp out 100 individual cars from that template, 
each holding its own numbers."

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without reading a single programming textbook, he had just defined the relationship between a Class and an Object Instance&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CAR CLASS (The Blueprint)
                 ┌───────────────────────────┐
                 │ State:                    │
                 │   Speed, Fuel, Engine     │
                 │ Behavior:                 │
                 │   Accelerate(), Brake()   │
                 └─────────────┬─────────────┘
                               │
                      Instantiate with `new`
                               │
         ┌─────────────────────┴─────────────────────┐
         ↓                                           ↓
     car1 (Object)                               car2 (Object)
  ┌─────────────────┐                         ┌─────────────────┐
  │ Speed = 120 km/h│                         │ Speed = 0 km/h  │
  │ Fuel  = 30 L    │                         │ Fuel  = 80 L    │
  └─────────────────┘                         └─────────────────┘

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. The Rosetta Stone: From Mental Model to C
&lt;/h2&gt;

&lt;p&gt;Here is how our apprentice's first-principles thinking maps directly to professional C#:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Conceptual Model     │Software Engineering     │C# Syntax
                        │Concept                │
Car Template            │Class                    │public class Car 
                        │                       │{ ... }
Individual Stamped Car  │Instance / Object    │Car car1 = new 
                        │                       │Car(0, 50);
Speed, Fuel, Status │Properties / Fields  │public double Speed 
                        │                       │{ get; set; }
Accelerate, Brake   │Methods (Behaviors)  │public void 
                        │                       │Accelerate(double 
                        │                       │amount)
Input Value (20 km/h)   │Parameters / Arguments   │(double amount)
Car(speed, fuel)       │Constructor           │public Car(double 
                        │                       │speed, double fuel)   
                        │                       │
Query (CheckSpeed)  │Return Value         │return this.Speed;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now look at that exact model written in clean, idiomatic C#:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Properties (State)&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;Speed&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;Fuel&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;IsEngineRunning&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Constructor: Defining initial state upon creation&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;initialSpeed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;initialFuel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Speed&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;initialSpeed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;Fuel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;initialFuel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;IsEngineRunning&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Command (State Mutation with Business Logic)&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Accelerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Guard clause: Cannot accelerate if the engine is off!&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;IsEngineRunning&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="n"&gt;Speed&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Command&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;StartEngine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;IsEngineRunning&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Query (State Observation)&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="nf"&gt;CheckSpeed&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Speed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the guard clause&lt;br&gt;
&lt;code&gt;if (!IsEngineRunning) return;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;Syntax is just typing. AI tools and IDE autocompletion can generate syntax for you in seconds.&lt;br&gt;
&lt;strong&gt;Engineering is the architecture of thought.&lt;/strong&gt;&lt;br&gt;
Before you write your next class, method, or function, step away from the keyboard and ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What are the core Entities?&lt;/li&gt;
&lt;li&gt;What is their State at any point in time?&lt;/li&gt;
&lt;li&gt;Is this method a Command (mutating state) or a Query (reading state)?&lt;/li&gt;
&lt;li&gt;What rules prevent this entity from entering an invalid state?
&lt;strong&gt;💬 Discussion Question for the Comments&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next up in our curriculum is Memory &amp;amp; Variables:&lt;br&gt;
If we run:&lt;br&gt;
code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;speed&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;speed&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;speed&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What physically happens to the previous value of &lt;code&gt;100&lt;/code&gt; in memory?
&lt;/h3&gt;

&lt;p&gt;How would you explain variables and assignment to a complete beginner without using the word "variable"?&lt;br&gt;
Drop your best explanations below! 👇&lt;br&gt;
Now look at that exact model written in clean, idiomatic C#:&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>beginners</category>
      <category>oop</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Why I Stopped Letting Screens Talk to the Database</title>
      <dc:creator>Blessed Emmanuel John chidera</dc:creator>
      <pubDate>Wed, 16 Sep 2026 18:35:48 +0000</pubDate>
      <link>https://dev.to/blessloaded/why-i-stopped-letting-screens-talk-to-the-database-530o</link>
      <guid>https://dev.to/blessloaded/why-i-stopped-letting-screens-talk-to-the-database-530o</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8tpaui1wrubn44l24xxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8tpaui1wrubn44l24xxy.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of us start a new front-end project the same way: open the template, rename &lt;code&gt;MainPage&lt;/code&gt;, and start dropping controls. It feels productive. It is also how a lot of apps end up with business logic living inside XAML (or React, or whatever) and database calls scattered across pages.&lt;/p&gt;

&lt;p&gt;I recently spent a focused session on the Management side of a real system. We deliberately did almost no feature work. Instead we decided &lt;em&gt;where&lt;/em&gt; every future responsibility would live and how the pieces would be allowed to talk to each other. The result is a small set of rules I now treat as non-negotiable.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The front office is not the records department
&lt;/h2&gt;

&lt;p&gt;The Management application is the place staff actually work. The API and the database are a different building. The only legal communication between them is HTTP + JSON.&lt;/p&gt;

&lt;p&gt;That single rule has three practical consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Management project never references the infrastructure or data-access projects.&lt;/li&gt;
&lt;li&gt;If the database later moves from SQLite to PostgreSQL (or anything else), the Management app does not care.&lt;/li&gt;
&lt;li&gt;Every piece of data that reaches a screen has already passed through an explicit service boundary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, this is forbidden:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ChildRegistrationPage → AtipDbContext → SQLite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ChildRegistrationPage
→ ChildRegistrationViewModel
→ AtipApiClient
→ HTTP
→ ATIP.Api
→ ChildService
→ AtipDbContext
→ Database

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Screens are rooms; ViewModels are the people who run them
&lt;/h2&gt;

&lt;p&gt;A page (&lt;code&gt;View&lt;/code&gt;) decides what the room looks like. The corresponding ViewModel decides what happens when someone presses a button, what data is valid, and when the UI should show a spinner or an error.&lt;/p&gt;

&lt;p&gt;Keeping the two separate is classic MVVM, but the discipline is easy to abandon once a deadline appears. The test I now use is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I cannot unit-test the decision logic without spinning up a real page, the logic is in the wrong place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. Not every data shape belongs in the domain
&lt;/h2&gt;

&lt;p&gt;Domain entities live in a shared Core library. They represent the truth of the business. The Management UI often needs thinner or differently shaped objects — a list item that only shows four fields, a dashboard summary, a search filter. Those belong in the Management project’s own &lt;code&gt;Models&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Mixing the two creates either leaky abstractions or awkward mapping code later.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Navigation is architecture, not an afterthought
&lt;/h2&gt;

&lt;p&gt;We made the application open into a Shell whose first content is a Dashboard, not a registration form. That forces an explicit user journey:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dashboard
└── Children
├── List
├── Register
└── Profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creating the navigation skeleton &lt;em&gt;before&lt;/em&gt; the individual rooms is one of the highest-leverage early decisions you can make. In MAUI terms it looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- AppShell.xaml --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;Shell&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ShellContent&lt;/span&gt;
      &lt;span class="na"&gt;Title=&lt;/span&gt;&lt;span class="s"&gt;"Dashboard"&lt;/span&gt;
      &lt;span class="na"&gt;ContentTemplate=&lt;/span&gt;&lt;span class="s"&gt;"{DataTemplate views:DashboardPage}"&lt;/span&gt;
      &lt;span class="na"&gt;Route=&lt;/span&gt;&lt;span class="s"&gt;"dashboard"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Shell&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the startup chain is simply:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;App → CreateWindow() → new AppShell() → DashboardPage&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Create the rooms you need, not the ones that look professional
&lt;/h2&gt;

&lt;p&gt;We created six folders:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Views
ViewModels
Services
Models
Components
Converters
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We did not create empty classes inside them “just in case.” Architecture is not the number of folders; it is the consistent placement of responsibility. Empty scaffolding that never gets used is noise.&lt;br&gt;
The real payoff&lt;br&gt;
When the first real feature arrives, the only new code that needs to be written is:&lt;/p&gt;

&lt;p&gt;a page in Views&lt;br&gt;
its ViewModel&lt;br&gt;
the calls inside the already-planned API client&lt;/p&gt;

&lt;p&gt;Everything else already has a home. That is the quiet win of spending a session on architecture before the first line of feature code.&lt;br&gt;
I still have to prove the empty Shell actually launches. After that, the next phase is the concrete AtipApiClient. But the hard part — deciding who is allowed to talk to whom — is already done.&lt;br&gt;
Three questions before you write the first page&lt;br&gt;
If you are about to start a new client application, try forcing yourself to answer these three questions first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the single entry point the user will see?&lt;/li&gt;
&lt;li&gt;Which project is allowed to know about the database?&lt;/li&gt;
&lt;li&gt;Where will UI-specific shapes live, and how will they stay separate from domain entities?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answers tend to save more time than any amount of clever code later.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What rules do you refuse to break on the client side? I’m curious what others have settled on after a few projects.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>maui</category>
      <category>cleanarchitecture</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>One GET Method, Not Ten: The Architecture Lesson That Rewired How I Think</title>
      <dc:creator>Blessed Emmanuel John chidera</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:10:12 +0000</pubDate>
      <link>https://dev.to/blessloaded/one-get-method-not-ten-the-architecture-lesson-that-rewired-how-i-think-2gic</link>
      <guid>https://dev.to/blessloaded/one-get-method-not-ten-the-architecture-lesson-that-rewired-how-i-think-2gic</guid>
      <description>&lt;p&gt;This week I had one of those moments as a developer where a single sentence from a mentor rearranged how I see code.&lt;/p&gt;

&lt;p&gt;I was building a feature — nothing fancy. I needed to retrieve data from my database based on different enums I had created. My plan was straightforward:&lt;/p&gt;

&lt;p&gt;One method per enum. Clean. Organized. Done.&lt;/p&gt;

&lt;p&gt;I was proud of it. Then my mentor looked at my code and said:&lt;/p&gt;

&lt;p&gt;"You can actually create one HTTP GET method and use the enum type as the argument."&lt;/p&gt;

&lt;p&gt;One sentence. Everything changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem With "One Method, One Job"&lt;/strong&gt;&lt;br&gt;
I want to be clear — I wasn't being lazy. I was being naive about architecture.&lt;/p&gt;

&lt;p&gt;I thought writing more methods = writing better code. I thought verbosity meant thoroughness. But here's what I missed:&lt;/p&gt;

&lt;p&gt;If you're copy-pasting methods that differ only by a parameter, you're not architecting — you're repeating.&lt;/p&gt;

&lt;p&gt;Here's roughly what my instinct told me to write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"status/active"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IActionResult&lt;/span&gt; &lt;span class="nf"&gt;GetActiveItems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"status/pending"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IActionResult&lt;/span&gt; &lt;span class="nf"&gt;GetPendingItems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"status/archived"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IActionResult&lt;/span&gt; &lt;span class="nf"&gt;GetArchivedItems&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three methods. Three routes. Three places to update when the logic changes.&lt;/p&gt;

&lt;p&gt;Then my mentor showed me what it should look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"items/{status}"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;IActionResult&lt;/span&gt; &lt;span class="nf"&gt;GetItemsByStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ItemStatus&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_repository&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetByStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One method. One route. One source of truth.&lt;/p&gt;

&lt;p&gt;The enum does the branching. The parameter does the work. The architecture stays clean.&lt;/p&gt;

&lt;p&gt;Why This Matters Beyond the Code&lt;br&gt;
This wasn't just a refactor. It was a lesson in software architecture principles:&lt;/p&gt;

&lt;p&gt;DRY (Don't Repeat Yourself) — if the logic is the same, the method should be the same.&lt;/p&gt;

&lt;p&gt;Single Responsibility, done right — one method can handle multiple cases if the variation is data, not logic.&lt;/p&gt;

&lt;p&gt;Open/Closed Principle — adding a new enum value doesn't require a new method. The system extends without modification.&lt;/p&gt;

&lt;p&gt;Less surface area — fewer endpoints means fewer bugs, fewer tests, fewer things to break.&lt;/p&gt;

&lt;p&gt;The biggest takeaway? Architecture isn't built in big design docs. It's built in the small decisions you make when nobody's watching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PUT vs PATCH: The Assumption That Humble Me&lt;/strong&gt;&lt;br&gt;
Same week, same project — I learned something else that embarrassed me a little.&lt;/p&gt;

&lt;p&gt;I had been using PUT and PATCH as if they were interchangeable. I assumed they both just meant "update." I never questioned it.&lt;/p&gt;

&lt;p&gt;They are not the same.&lt;/p&gt;

&lt;p&gt;Method  What it does                      When to use it&lt;br&gt;
PUT Replaces the entire resource      Full updates — send the&lt;br&gt;&lt;br&gt;
                                          whole object&lt;br&gt;
PATCH   Updates only the fields you send  Partial updates — &lt;br&gt;
                                          change one field, leave &lt;br&gt;
                                          the rest&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;# PUT — replaces the entire resource
PUT /api/users/1
{
  "name": "John",
  "email": "john@example.com",
  "role": "admin"
}

# PATCH — updates only what you send
PATCH /api/users/1
{
  "email": "newemail@example.com"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With PUT, if you omit a field, it gets wiped. With PATCH, omitted fields stay untouched.&lt;/p&gt;

&lt;p&gt;Small words. Completely different behavior. And I had been throwing them around casually as if the difference didn't matter.&lt;/p&gt;

&lt;p&gt;Lesson: The things we assume we know are often the things we understand the least.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub + Visual Studio: The Quiet Win&lt;/strong&gt;&lt;br&gt;
Not everything this week was a philosophical breakthrough. I also finally connected GitHub to Visual Studio so I can push my work straight from the IDE to my remote repo.&lt;/p&gt;

&lt;p&gt;On paper, it's a few clicks. In practice, it removed friction from my daily workflow — and friction is what kills momentum.&lt;/p&gt;

&lt;p&gt;Here's the quick version if you haven't done it yet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Or from the terminal inside VS:
&lt;span class="go"&gt;git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/yourname/yourrepo.git
git push -u origin main
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Now every commit goes from my editor to GitHub without leaving the IDE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Three Lessons I'm Walking Away With&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Simplicity is a skill, not a shortcut.&lt;br&gt;
Anyone can write more code. Real discipline is writing less and making it mean more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assumptions are the enemy of growth.&lt;br&gt;
The moment you stop questioning what you "already know" is the moment you stop growing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Small wins compound.&lt;br&gt;
A mentor's sentence. A corrected assumption. A connected tool. None feel big in the moment — but stacked, they build the developer you're becoming.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Your Turn&lt;/strong&gt;&lt;br&gt;
I'm curious:&lt;/p&gt;

&lt;p&gt;What's one "small decision" that quietly changed how you write code?&lt;/p&gt;

&lt;p&gt;Was it a mentor's correction? A refactor you resisted? A tool you finally set up? Drop it in the comments — I'm learning in public and I want to learn from you too.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm a developer learning in public — sharing real lessons from real projects. Follow me here on Dev.to, or connect on [LinkedIn] and [X]. Let's grow together.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>api</category>
      <category>architecture</category>
      <category>database</category>
    </item>
  </channel>
</rss>
