<?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: Aaronjames Kashim</title>
    <description>The latest articles on DEV Community by Aaronjames Kashim (@aikrooz).</description>
    <link>https://dev.to/aikrooz</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%2F3830065%2Fb846a3c1-d235-4923-8399-930b42aa416f.png</url>
      <title>DEV Community: Aaronjames Kashim</title>
      <link>https://dev.to/aikrooz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aikrooz"/>
    <language>en</language>
    <item>
      <title>Backend Development Niches Explained (and What They Actually Do)</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Wed, 01 Apr 2026 07:26:24 +0000</pubDate>
      <link>https://dev.to/aikrooz/backend-development-niches-explained-and-what-they-actually-do-50o8</link>
      <guid>https://dev.to/aikrooz/backend-development-niches-explained-and-what-they-actually-do-50o8</guid>
      <description>&lt;p&gt;When people hear “backend developer,” they often think it’s just about APIs and databases. But backend development is way broader — there are multiple niches, each with its own role, tools, and challenges.&lt;/p&gt;

&lt;p&gt;Here’s a breakdown of the most important backend niches 👇&lt;/p&gt;




&lt;p&gt;🧠 1. API Development&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Design and build APIs that allow frontend apps and services to communicate.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating REST or GraphQL APIs&lt;/li&gt;
&lt;li&gt;Handling authentication &amp;amp; authorization&lt;/li&gt;
&lt;li&gt;Ensuring scalability and performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tech stack: Node.js, Django, Spring Boot, Express&lt;/p&gt;




&lt;p&gt;🗄️ 2. Database Engineering&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Design, optimize, and maintain databases.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema design&lt;/li&gt;
&lt;li&gt;Query optimization&lt;/li&gt;
&lt;li&gt;Data consistency and backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tech stack: PostgreSQL, MySQL, MongoDB, Redis&lt;/p&gt;




&lt;p&gt;⚙️ 3. DevOps / Backend Infrastructure&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Manage deployment, scaling, and system reliability.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Containerization (Docker, Kubernetes)&lt;/li&gt;
&lt;li&gt;Monitoring and logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why it matters:&lt;br&gt;
Without them, your backend might work… but not in production 😅&lt;/p&gt;




&lt;p&gt;🔐 4. Security Engineering&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Protect systems, APIs, and data from attacks.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing encryption&lt;/li&gt;
&lt;li&gt;Preventing vulnerabilities (SQL injection, XSS)&lt;/li&gt;
&lt;li&gt;Managing identity systems&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;📡 5. Distributed Systems Engineering&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Build systems that run across multiple servers.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microservices architecture&lt;/li&gt;
&lt;li&gt;Message queues (Kafka, RabbitMQ)&lt;/li&gt;
&lt;li&gt;Handling failures and consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Used in: Large-scale apps like Netflix, Uber, etc.&lt;/p&gt;




&lt;p&gt;🤖 6. Backend for AI/ML Systems&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Support machine learning models in production.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model deployment APIs&lt;/li&gt;
&lt;li&gt;Data pipelines&lt;/li&gt;
&lt;li&gt;Real-time inference systems&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💰 7. Fintech Backend Development&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Build systems for financial applications.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment processing&lt;/li&gt;
&lt;li&gt;Transaction systems&lt;/li&gt;
&lt;li&gt;Regulatory compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important: Requires strong focus on security and accuracy.&lt;/p&gt;




&lt;p&gt;🎮 8. Real-Time Backend (Gaming &amp;amp; Chat Apps)&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Handle live interactions between users.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebSockets &amp;amp; real-time messaging&lt;/li&gt;
&lt;li&gt;Low-latency systems&lt;/li&gt;
&lt;li&gt;Event-driven architecture&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧩 9. Enterprise Backend Systems&lt;/p&gt;

&lt;p&gt;What they do:&lt;br&gt;
Build large internal systems for organizations.&lt;/p&gt;

&lt;p&gt;Key responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ERP/CRM systems&lt;/li&gt;
&lt;li&gt;Integration with legacy systems&lt;/li&gt;
&lt;li&gt;High reliability and long-term maintenance&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧭 How to Choose a Niche?&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do I enjoy system design? → Distributed systems&lt;/li&gt;
&lt;li&gt;Do I like data? → Database engineering&lt;/li&gt;
&lt;li&gt;Do I enjoy security challenges? → Security engineering&lt;/li&gt;
&lt;li&gt;Do I like deployment and infrastructure? → DevOps&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧠 Final Thoughts&lt;/p&gt;

&lt;p&gt;Backend development isn’t one path — it’s a collection of specialized roles that power everything users don’t see.&lt;/p&gt;

&lt;p&gt;Pick a niche, go deep, and you’ll stand out way faster than trying to learn everything at once.&lt;/p&gt;




&lt;p&gt;💬 Which backend niche are you interested in? Drop it below!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>backenddevelopment</category>
      <category>coding</category>
    </item>
    <item>
      <title>A Developer Said His Database Was Slow… Here’s What We Found</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Mon, 30 Mar 2026 07:58:39 +0000</pubDate>
      <link>https://dev.to/aikrooz/a-developer-said-his-database-was-slow-heres-what-we-found-d5c</link>
      <guid>https://dev.to/aikrooz/a-developer-said-his-database-was-slow-heres-what-we-found-d5c</guid>
      <description>&lt;p&gt;I was helping a developer friend debug a slow e-commerce project recently…&lt;/p&gt;

&lt;p&gt;The complaint was simple:&lt;br&gt;
“The database is slow.”&lt;/p&gt;

&lt;p&gt;But when we looked closely, the database wasn’t the real problem.&lt;/p&gt;

&lt;p&gt;So we started checking step by step.&lt;/p&gt;

&lt;p&gt;First, we used Google PageSpeed Insights&lt;br&gt;
→ to understand how users experience the site&lt;/p&gt;

&lt;p&gt;Then Chrome DevTools (Network tab)&lt;br&gt;
→ to see which requests were taking time&lt;/p&gt;

&lt;p&gt;And finally Lighthouse&lt;br&gt;
→ to break down performance issues clearly&lt;/p&gt;

&lt;p&gt;Everything pointed to one thing…&lt;/p&gt;

&lt;p&gt;The backend was doing too much work per request.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same data was being fetched repeatedly&lt;/li&gt;
&lt;li&gt;No caching layer&lt;/li&gt;
&lt;li&gt;Queries were not optimized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing was “broken”…&lt;br&gt;
But everything was inefficient.&lt;/p&gt;

&lt;p&gt;That’s the part many developers miss.&lt;/p&gt;

&lt;p&gt;Sometimes the issue isn’t:&lt;br&gt;
“Your database is bad”&lt;/p&gt;

&lt;p&gt;It’s:&lt;br&gt;
“How you’re using it.”&lt;/p&gt;

&lt;p&gt;We made a few small changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced unnecessary queries&lt;/li&gt;
&lt;li&gt;Added basic caching&lt;/li&gt;
&lt;li&gt;Cleaned up how data was fetched&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the improvement was immediate.&lt;/p&gt;

&lt;p&gt;No rewrite.&lt;br&gt;
No new technology.&lt;br&gt;
Just better decisions.&lt;/p&gt;

&lt;p&gt;If you’re building something right now, remember:&lt;/p&gt;

&lt;p&gt;Your database is not slow.&lt;br&gt;
Your approach might be.&lt;/p&gt;

&lt;p&gt;What’s one backend issue you’ve struggled with recently?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Database Design Is Underrated — And It’s Why Many Developers Get Stuck</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Sat, 28 Mar 2026 07:34:04 +0000</pubDate>
      <link>https://dev.to/aikrooz/database-design-is-underrated-and-its-why-many-developers-get-stuck-5h6b</link>
      <guid>https://dev.to/aikrooz/database-design-is-underrated-and-its-why-many-developers-get-stuck-5h6b</guid>
      <description>&lt;p&gt;Most developers don’t struggle because they can’t code.&lt;/p&gt;

&lt;p&gt;They struggle because they don’t know how to think in systems.&lt;/p&gt;

&lt;p&gt;And nothing exposes that gap faster than database design.&lt;/p&gt;

&lt;p&gt;You’ve probably experienced it:&lt;br&gt;
You understand the idea. You can picture the app.&lt;br&gt;
But the moment you try to design the database… everything gets messy.&lt;/p&gt;

&lt;p&gt;Tables don’t make sense. Relationships feel confusing.&lt;br&gt;
You keep restarting.&lt;/p&gt;

&lt;p&gt;So here’s the truth:&lt;/p&gt;

&lt;p&gt;👉 You don’t need a more complex method.&lt;br&gt;
👉 You need a clear thinking strategy.&lt;/p&gt;

&lt;p&gt;This is the exact step-by-step approach that works consistently.&lt;/p&gt;

&lt;p&gt;The Real Problem&lt;/p&gt;

&lt;p&gt;Most people jump straight into tables.&lt;/p&gt;

&lt;p&gt;That’s the mistake.&lt;/p&gt;

&lt;p&gt;A database is not where you start.&lt;br&gt;
It’s where you arrive after understanding the system.&lt;/p&gt;

&lt;p&gt;The Strategy That Actually Works&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the Real-World Flow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before writing a single table, ask:&lt;/p&gt;

&lt;p&gt;“What actually happens in real life?”&lt;/p&gt;

&lt;p&gt;Forget code. Think like a storyteller.&lt;/p&gt;

&lt;p&gt;Example (Uber-like system):&lt;/p&gt;

&lt;p&gt;A rider opens the app&lt;br&gt;
Requests a ride&lt;br&gt;
System finds a driver&lt;br&gt;
Driver accepts&lt;br&gt;
Trip starts&lt;br&gt;
Trip ends&lt;br&gt;
Payment happens&lt;/p&gt;

&lt;p&gt;That’s your flow.&lt;/p&gt;

&lt;p&gt;👉 If you can’t explain the system in simple steps, you can’t design the database.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extract Entities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now pull out the “things” involved.&lt;/p&gt;

&lt;p&gt;From the flow above:&lt;/p&gt;

&lt;p&gt;User (Rider)&lt;br&gt;
Driver&lt;br&gt;
Ride&lt;br&gt;
Payment&lt;br&gt;
Location&lt;/p&gt;

&lt;p&gt;These are your entities → they become tables.&lt;/p&gt;

&lt;p&gt;👉 Rule: If it exists independently in the system, it’s probably an entity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define Relationships&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now ask:&lt;/p&gt;

&lt;p&gt;“How are these things connected?”&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;A user can request many rides&lt;br&gt;
A driver can complete many rides&lt;br&gt;
A ride belongs to one user and one driver&lt;br&gt;
A ride has one payment&lt;/p&gt;

&lt;p&gt;This gives you:&lt;/p&gt;

&lt;p&gt;One-to-many&lt;br&gt;
One-to-one&lt;br&gt;
Many-to-many&lt;/p&gt;

&lt;p&gt;👉 This step is where most confusion happens — but it becomes easy when tied to real-world logic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add States&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Real systems are not static.&lt;/p&gt;

&lt;p&gt;Things change over time.&lt;/p&gt;

&lt;p&gt;A ride isn’t just a ride. It has states:&lt;/p&gt;

&lt;p&gt;Requested&lt;br&gt;
Accepted&lt;br&gt;
In Progress&lt;br&gt;
Completed&lt;br&gt;
Cancelled&lt;/p&gt;

&lt;p&gt;So instead of just storing data, you store status.&lt;/p&gt;

&lt;p&gt;👉 This is what makes your system realistic and scalable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Track Events (Messages, Reads, Actions)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Modern systems don’t just store data — they track behavior.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Driver accepted ride at 10:05&lt;br&gt;
User cancelled ride at 10:07&lt;br&gt;
Notification sent&lt;br&gt;
Message read&lt;/p&gt;

&lt;p&gt;This means you may need:&lt;/p&gt;

&lt;p&gt;Logs&lt;br&gt;
Activity tables&lt;br&gt;
Message systems&lt;/p&gt;

&lt;p&gt;👉 This is how companies build features like notifications, analytics, and history.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Handle Many-to-Many Early&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a common trap.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Drivers can serve many locations&lt;br&gt;
Locations can have many drivers&lt;/p&gt;

&lt;p&gt;You can’t store this in one table.&lt;/p&gt;

&lt;p&gt;You need a junction table:&lt;/p&gt;

&lt;p&gt;driver_locations&lt;/p&gt;

&lt;p&gt;👉 If you ignore this early, your design breaks later.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Think About Failures&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is what separates beginners from real engineers.&lt;/p&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;p&gt;What if payment fails?&lt;br&gt;
What if driver cancels?&lt;br&gt;
What if user disconnects?&lt;/p&gt;

&lt;p&gt;Your database must handle:&lt;/p&gt;

&lt;p&gt;retries&lt;br&gt;
failed states&lt;br&gt;
logs&lt;/p&gt;

&lt;p&gt;👉 Systems don’t break because of success cases — they break because of failure cases.&lt;/p&gt;

&lt;p&gt;Putting It All Together (Uber Example)&lt;/p&gt;

&lt;p&gt;Let’s combine everything:&lt;/p&gt;

&lt;p&gt;Entities:&lt;/p&gt;

&lt;p&gt;users&lt;br&gt;
drivers&lt;br&gt;
rides&lt;br&gt;
payments&lt;/p&gt;

&lt;p&gt;Relationships:&lt;/p&gt;

&lt;p&gt;user → rides (1-to-many)&lt;br&gt;
driver → rides (1-to-many)&lt;br&gt;
ride → payment (1-to-1)&lt;/p&gt;

&lt;p&gt;States:&lt;/p&gt;

&lt;p&gt;ride_status (requested, accepted, completed…)&lt;/p&gt;

&lt;p&gt;Events:&lt;/p&gt;

&lt;p&gt;ride_events (accepted, cancelled, started…)&lt;/p&gt;

&lt;p&gt;Failure Handling:&lt;/p&gt;

&lt;p&gt;payment_status (pending, failed, successful)&lt;/p&gt;

&lt;p&gt;Now your system is no longer just data…&lt;/p&gt;

&lt;p&gt;It’s a living system.&lt;/p&gt;

&lt;p&gt;Who Needs This Skill?&lt;br&gt;
Backend developers → to build scalable systems&lt;br&gt;
Startup founders → to avoid rebuilding products&lt;br&gt;
Data engineers → to structure clean pipelines&lt;br&gt;
Product engineers → to design features that actually work&lt;/p&gt;

&lt;p&gt;👉 If you build anything real, you need this.&lt;/p&gt;

&lt;p&gt;How Companies Actually Use This&lt;/p&gt;

&lt;p&gt;Companies don’t “guess” database design.&lt;/p&gt;

&lt;p&gt;They:&lt;/p&gt;

&lt;p&gt;Map real-world flows&lt;br&gt;
Break systems into entities&lt;br&gt;
Carefully define relationships&lt;br&gt;
Track every important event&lt;br&gt;
Design for failure from day one&lt;/p&gt;

&lt;p&gt;That’s why their systems scale.&lt;/p&gt;

&lt;p&gt;Not because they use fancy tools —&lt;br&gt;
but because their thinking is structured.&lt;/p&gt;

&lt;p&gt;Tools You Can Use (Manual + Automatic)&lt;br&gt;
Manual Tools (Best for Thinking)&lt;br&gt;
Draw.io&lt;br&gt;
Whimsical&lt;br&gt;
Pen and paper (very underrated)&lt;/p&gt;

&lt;p&gt;👉 These force you to understand before building&lt;/p&gt;

&lt;p&gt;Automatic Tools (Best for Speed)&lt;br&gt;
dbdiagram.io&lt;br&gt;
Prisma ORM (auto schema generation)&lt;br&gt;
Django ORM (models → database)&lt;/p&gt;

&lt;p&gt;👉 These help you implement faster&lt;/p&gt;

&lt;p&gt;Final Insight&lt;/p&gt;

&lt;p&gt;Database design is not about tables.&lt;/p&gt;

&lt;p&gt;It’s about:&lt;/p&gt;

&lt;p&gt;understanding reality&lt;br&gt;
structuring complexity&lt;br&gt;
thinking in systems&lt;/p&gt;

&lt;p&gt;If you follow this process:&lt;/p&gt;

&lt;p&gt;Flow&lt;br&gt;
Entities&lt;br&gt;
Relationships&lt;br&gt;
States&lt;br&gt;
Events&lt;br&gt;
Many-to-many&lt;br&gt;
Failures&lt;/p&gt;

&lt;p&gt;You’ll never feel stuck again.&lt;/p&gt;

&lt;p&gt;If you want to improve as a backend engineer, don’t just practice coding.&lt;/p&gt;

&lt;p&gt;Practice thinking like this.&lt;/p&gt;

&lt;p&gt;That’s the real skill.&lt;br&gt;
An ER Diagram for a database desgin i made &lt;br&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.amazonaws.com%2Fuploads%2Farticles%2F1l9ibf3wg5h4gx1pgl4m.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.amazonaws.com%2Fuploads%2Farticles%2F1l9ibf3wg5h4gx1pgl4m.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>database</category>
      <category>api</category>
    </item>
    <item>
      <title>My Plan Before Coding</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Thu, 26 Mar 2026 08:13:25 +0000</pubDate>
      <link>https://dev.to/aikrooz/my-plan-before-coding-5cl2</link>
      <guid>https://dev.to/aikrooz/my-plan-before-coding-5cl2</guid>
      <description>&lt;p&gt;Many developers dive straight into git init, but the most critical work happens before the first line of code is written. Today, I’m walking you through my 7-step planning process using a Digital Marketplace backend as our case study.&lt;/p&gt;

&lt;p&gt;1️⃣ The Strategy (The "Ask")&lt;br&gt;
Before writing code, I define the "Why." Skipping this leads to feature creep and wasted hours.&lt;/p&gt;

&lt;p&gt;Three Critical Questions:&lt;/p&gt;

&lt;p&gt;Who is this for? (Target Audience)&lt;/p&gt;

&lt;p&gt;What exact problem am I solving? (Pain Points)&lt;/p&gt;

&lt;p&gt;What does success look like? (Definition of Done)&lt;/p&gt;

&lt;p&gt;Example Case: Digital Marketplace&lt;/p&gt;

&lt;p&gt;Users: Creators selling ebooks, courses, and digital assets.&lt;/p&gt;

&lt;p&gt;Problem: Manual payment verification and insecure file delivery.&lt;/p&gt;

&lt;p&gt;Success: A creator uploads a file, a user pays via local gateways (like Paystack), the product is delivered instantly, and earnings reflect in a dashboard.&lt;/p&gt;

&lt;p&gt;2️⃣ Defining the MVP&lt;br&gt;
What are the "must-have" features to get from zero to one? Focus on the core loop:&lt;/p&gt;

&lt;p&gt;[ ] Identity: Authentication with User &amp;amp; Creator roles.&lt;/p&gt;

&lt;p&gt;[ ] Management: File upload and storage for creators.&lt;/p&gt;

&lt;p&gt;[ ] Checkout: Integration with local payment gateways.&lt;/p&gt;

&lt;p&gt;[ ] Verification: Robust webhook handling for payment status.&lt;/p&gt;

&lt;p&gt;[ ] Delivery: Automated email/secure download links.&lt;/p&gt;

&lt;p&gt;[ ] Finances: A wallet system to track creator balances.&lt;/p&gt;

&lt;p&gt;3️⃣ System Design (High-Level Thinking)&lt;br&gt;
Visualizing data flow prevents bottlenecks later. Here is the logic for a purchase:&lt;/p&gt;

&lt;p&gt;User → API → Backend → Database&lt;br&gt;
                 ↓&lt;br&gt;
          Payment Gateway&lt;br&gt;
                 ↓&lt;br&gt;
          Webhook → Backend → Update DB → Deliver Product&lt;/p&gt;

&lt;p&gt;4️⃣ Database Design (The "Critical" Step)&lt;br&gt;
This is where most projects fail. Designing a solid schema early saves days of refactoring.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Click to view the SQL Schema Entities&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;User: id, email, password, role (creator/customer)&lt;/p&gt;

&lt;p&gt;Product: id, creator_id, title, price, file_url&lt;/p&gt;

&lt;p&gt;Order: id, user_id, product_id, status (pending, paid, failed)&lt;/p&gt;

&lt;p&gt;Transaction: id, order_id, amount, reference, status&lt;/p&gt;

&lt;p&gt;Wallet: creator_id, balance&lt;/p&gt;

&lt;p&gt;5️⃣ Offloading Background Tasks&lt;br&gt;
Not every process belongs in the main request-response cycle. To keep the API snappy, I use Celery + Redis for:&lt;/p&gt;

&lt;p&gt;Emails: Sending purchase confirmations.&lt;/p&gt;

&lt;p&gt;Retries: Handling failed payment verification pings.&lt;/p&gt;

&lt;p&gt;Security: Generating expiring, one-time-use download links.&lt;/p&gt;

&lt;p&gt;6️⃣ Security Thinking (Day Zero)&lt;br&gt;
Security isn't a "later" feature. It’s a foundation:&lt;/p&gt;

&lt;p&gt;Validation: Strict input sanitization to prevent injection.&lt;/p&gt;

&lt;p&gt;Auth: Protecting endpoints with JWT or session-based security.&lt;/p&gt;

&lt;p&gt;Storage: Using Signed URLs to ensure only paid users can access files.&lt;/p&gt;

&lt;p&gt;Rate Limiting: Protecting APIs from brute force or DDoS attempts.&lt;/p&gt;

&lt;p&gt;7️⃣ Infrastructure &amp;amp; Deployment&lt;br&gt;
Decide on your stack before you start to avoid "environment hell."&lt;/p&gt;

&lt;p&gt;Containerization: Docker for local development and production consistency.&lt;/p&gt;

&lt;p&gt;Hosting: Scalable providers like AWS or DigitalOcean.&lt;/p&gt;

&lt;p&gt;Storage: S3 or Cloudinary for reliable asset hosting.&lt;/p&gt;

&lt;p&gt;What do you think?&lt;br&gt;
Do you have a different planning process, or do you prefer to "build and break" as you go? Let’s discuss in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>architecture</category>
      <category>planing</category>
    </item>
    <item>
      <title>Still Trying To Break through Tutorial Hell !!!</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Wed, 25 Mar 2026 09:02:07 +0000</pubDate>
      <link>https://dev.to/aikrooz/still-trying-to-break-through-tutorial-hell--3odl</link>
      <guid>https://dev.to/aikrooz/still-trying-to-break-through-tutorial-hell--3odl</guid>
      <description>&lt;p&gt;There’s this quiet, slightly annoying feeling every developer knows—the moment you step away from that tutorial, course, or YouTube series that’s been holding your hand… and suddenly, you feel stuck.&lt;/p&gt;

&lt;p&gt;Like, &lt;em&gt;really&lt;/em&gt; stuck.&lt;/p&gt;

&lt;p&gt;You were flowing just fine while following along, building endpoints, wiring things together, maybe even feeling like a backend wizard. But the second you close that tab? Boom. Confusion.&lt;/p&gt;

&lt;p&gt;Here’s the truth most tutorials won’t tell you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution is NOT to go back to the tutorial.&lt;/strong&gt;&lt;br&gt;
Yeah, I said it.&lt;/p&gt;

&lt;p&gt;The real move is to step &lt;em&gt;away&lt;/em&gt; from your editor.&lt;/p&gt;

&lt;p&gt;Not to code. Not to debug.&lt;br&gt;
But to &lt;strong&gt;plan&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why You Feel Stuck (And It’s Not What You Think)
&lt;/h3&gt;

&lt;p&gt;You’re not stuck because you don’t understand the language.&lt;br&gt;
You’re not stuck because the framework is “too hard.”&lt;/p&gt;

&lt;p&gt;You’re stuck because you didn’t plan.&lt;/p&gt;

&lt;p&gt;Programming isn’t just typing code—it’s thinking before typing code.&lt;/p&gt;

&lt;p&gt;Most beginners assume coding is like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Open editor → start typing → figure it out along the way”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But in reality, experienced developers spend something like &lt;strong&gt;60–70% of their time planning&lt;/strong&gt;, and the funny part?&lt;/p&gt;

&lt;p&gt;That planning doesn’t even start in perfect technical language.&lt;/p&gt;




&lt;h3&gt;
  
  
  Let Me Explain With Something Simple 🍳
&lt;/h3&gt;

&lt;p&gt;Let’s say you want to make fried eggs.&lt;/p&gt;

&lt;p&gt;You don’t just walk into the kitchen, turn on the stove, and hope for the best.&lt;/p&gt;

&lt;p&gt;You naturally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Think about the &lt;strong&gt;goal&lt;/strong&gt; → “I want fried eggs”&lt;/li&gt;
&lt;li&gt;List what you need → eggs, onions, salt, seasoning&lt;/li&gt;
&lt;li&gt;Break it into steps:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Crack eggs into a bowl&lt;/li&gt;
&lt;li&gt;Chop onions&lt;/li&gt;
&lt;li&gt;Mix everything&lt;/li&gt;
&lt;li&gt;Heat oil&lt;/li&gt;
&lt;li&gt;Fry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine skipping that and just… throwing random things into a pan 😅&lt;/p&gt;

&lt;p&gt;That’s exactly what coding without planning feels like.&lt;/p&gt;




&lt;h3&gt;
  
  
  Programming Works the Same Way
&lt;/h3&gt;

&lt;p&gt;Before you write a single line of code, you should ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly am I building?&lt;/li&gt;
&lt;li&gt;What should the final result look like?&lt;/li&gt;
&lt;li&gt;What steps will get me there?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, building a backend API shouldn’t start with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Let me open my editor and create a server…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should start with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What endpoints do I need?&lt;/li&gt;
&lt;li&gt;What data will they handle?&lt;/li&gt;
&lt;li&gt;How should users interact with it?&lt;/li&gt;
&lt;li&gt;What happens step-by-step when a request comes in?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s your “recipe.”&lt;/p&gt;




&lt;h3&gt;
  
  
  And Yes… Your First Plan Will Be Ugly
&lt;/h3&gt;

&lt;p&gt;Let’s be honest.&lt;/p&gt;

&lt;p&gt;Your first plan might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;messy&lt;/li&gt;
&lt;li&gt;incomplete&lt;/li&gt;
&lt;li&gt;even a little “stupid”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s perfectly fine.&lt;/p&gt;

&lt;p&gt;Planning is not about perfection—it’s about direction.&lt;/p&gt;

&lt;p&gt;As you build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You’ll notice mistakes&lt;/li&gt;
&lt;li&gt;You’ll go back and adjust&lt;/li&gt;
&lt;li&gt;You’ll refine the idea&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the real workflow.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Planning Makes You Faster (Ironically)
&lt;/h3&gt;

&lt;p&gt;It feels like planning slows you down.&lt;/p&gt;

&lt;p&gt;But in reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You avoid random errors&lt;/li&gt;
&lt;li&gt;You reduce confusion&lt;/li&gt;
&lt;li&gt;You spend less time guessing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;code → error → Google → confusion → repeat&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You get:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;plan → build → adjust → done&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Much cleaner. Much faster.&lt;/p&gt;




&lt;h3&gt;
  
  
  One More Thing (Very Important)
&lt;/h3&gt;

&lt;p&gt;Be careful with how you use AI.&lt;/p&gt;

&lt;p&gt;AI is powerful, no doubt. But if you use it to replace your thinking instead of supporting it, you’re doing yourself a disservice.&lt;/p&gt;

&lt;p&gt;Don’t let it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plan everything for you&lt;/li&gt;
&lt;li&gt;solve everything for you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;guide&lt;/li&gt;
&lt;li&gt;clarify&lt;/li&gt;
&lt;li&gt;improve your ideas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your &lt;strong&gt;critical thinking&lt;/strong&gt; is still your greatest tool as a developer.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thought
&lt;/h3&gt;

&lt;p&gt;Always know the output you’re aiming for.&lt;br&gt;
Always break things into steps.&lt;br&gt;
And never ignore the small details—they matter more than you think.&lt;/p&gt;

&lt;p&gt;Because at the end of the day…&lt;/p&gt;

&lt;p&gt;Good code comes from good thinking.&lt;br&gt;
And good thinking starts with a plan.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Follow my next post to see how I made my plan for a project I am currently working on.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What actually happens when you click ‘Login’?</title>
      <dc:creator>Aaronjames Kashim</dc:creator>
      <pubDate>Wed, 18 Mar 2026 07:33:35 +0000</pubDate>
      <link>https://dev.to/aikrooz/what-actually-happens-when-you-click-login-inm</link>
      <guid>https://dev.to/aikrooz/what-actually-happens-when-you-click-login-inm</guid>
      <description>&lt;p&gt;Most people think login is simple.&lt;br&gt;
Enter email → enter password → access granted.&lt;/p&gt;

&lt;p&gt;But here’s what actually happens behind the scenes &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You click “Login”&lt;br&gt;
Your browser sends a request to the server (a powerful, specialised computer or software system that stores, manages, and delivers data, files, and services to other computers (clients) over a network).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The server receives your data&lt;br&gt;
(email + password)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The password is NOT compared directly&lt;br&gt;
It is hashed and then compared with the stored hash&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If it matches&lt;br&gt;
The server creates a session (represents a specific time period that a user spends on a website) or a token (It is a self-contained digital key that proves your identity without the server needing to look up your information in a database every time. )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;That token is sent back to your browser&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Every future request includes that token&lt;br&gt;
So the server knows it’s you&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it—but also not that simple.&lt;/p&gt;

&lt;p&gt;Because things can go wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong hashing method&lt;/li&gt;
&lt;li&gt;No token expiration&lt;/li&gt;
&lt;li&gt;Poor validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And suddenly your app is not secure.&lt;/p&gt;

&lt;p&gt;Tomorrow: I’ll explain the difference between authentication and authorization.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>beginners</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
