<?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>Forem: sohana khan</title>
    <description>The latest articles on Forem by sohana khan (@sohanaakbar7).</description>
    <link>https://forem.com/sohanaakbar7</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%2F3878706%2Fb026acb6-e832-44ba-9999-2c0e44f18218.jpg</url>
      <title>Forem: sohana khan</title>
      <link>https://forem.com/sohanaakbar7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sohanaakbar7"/>
    <language>en</language>
    <item>
      <title>Why I Chose DevOps Along with Frontend (Weird Combo but Works)</title>
      <dc:creator>sohana khan</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:35:17 +0000</pubDate>
      <link>https://forem.com/sohanaakbar7/why-i-chose-devops-along-with-frontend-weird-combo-but-works-55hi</link>
      <guid>https://forem.com/sohanaakbar7/why-i-chose-devops-along-with-frontend-weird-combo-but-works-55hi</guid>
      <description>&lt;p&gt;I build UIs and debug Kubernetes. No, I'm not confused.&lt;/p&gt;

&lt;p&gt;The Problem&lt;br&gt;
As a frontend dev, I got tired of:&lt;/p&gt;

&lt;p&gt;"It works on my machine"&lt;/p&gt;

&lt;p&gt;"CI is failing, ask someone else"&lt;/p&gt;

&lt;p&gt;"Can't deploy until ops is free"&lt;/p&gt;

&lt;p&gt;So I learned DevOps anyway.&lt;/p&gt;

&lt;p&gt;What Changed&lt;br&gt;
Before  After&lt;br&gt;
Handoff to ops  I own the pipeline&lt;br&gt;
Broken builds? Not my problem   Preview envs per PR&lt;br&gt;
Deploy once a week  Ship 5x/day&lt;br&gt;
"Network issue" I check logs myself&lt;br&gt;
The Superpower&lt;br&gt;
Frontend + DevOps = no blind spots.&lt;/p&gt;

&lt;p&gt;I see the whole path: code → container → CDN → user.&lt;/p&gt;

&lt;p&gt;That means faster debugging, real ownership, and zero handoff delays.&lt;/p&gt;

&lt;p&gt;The Truth&lt;br&gt;
You don't need to pick a lane. Weird combos work because you connect the dots no one else sees.&lt;/p&gt;

&lt;p&gt;Frontend + DevOps isn't a mistake. It's a cheat code.&lt;/p&gt;

&lt;p&gt;🚀 Ship faster. Own everything.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>5 Things I Wish I Knew Before Learning React</title>
      <dc:creator>sohana khan</dc:creator>
      <pubDate>Thu, 16 Apr 2026 12:50:07 +0000</pubDate>
      <link>https://forem.com/sohanaakbar7/5-things-i-wish-i-knew-before-learning-react-2jkl</link>
      <guid>https://forem.com/sohanaakbar7/5-things-i-wish-i-knew-before-learning-react-2jkl</guid>
      <description>&lt;p&gt;When I first jumped into React, I thought it was just "HTML inside JavaScript." I was wrong.&lt;/p&gt;

&lt;p&gt;After banging my head against the keyboard for months, here are the 5 hard truths I wish someone had told me from day one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You Actually Need to Know JavaScript First (For Real)
I thought I could learn React and ES6 at the same time. Big mistake.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;React is not a separate language; it's 100% JavaScript with a twist. If you don't understand:&lt;/p&gt;

&lt;p&gt;map(), filter(), reduce()&lt;/p&gt;

&lt;p&gt;Destructuring (const { name } = props)&lt;/p&gt;

&lt;p&gt;The spread operator (...array)&lt;/p&gt;

&lt;p&gt;Async/await&lt;/p&gt;

&lt;p&gt;...you will spend 80% of your time Googling basic JS errors instead of learning React.&lt;/p&gt;

&lt;p&gt;Learn modern JS first. Your future self will thank you.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;State Updates Are Not Instant
I remember writing setCount(count + 1) and then immediately logging count—only to see the old value. I thought React was broken.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Reality: State updates are asynchronous. React batches them for performance.&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
const handleClick = () =&amp;gt; {&lt;br&gt;
  setCount(count + 1);&lt;br&gt;
  console.log(count); // Still the old value!&lt;br&gt;
};&lt;br&gt;
Use useEffect or the updater function form if you need the new value.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Props Drilling Is a Trap
Passing data from grandparent → parent → child → grandchild works... until it doesn't.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you rename a prop in the middle component, everything breaks. You'll find yourself passing setUser through three levels just so a deep button can click it.&lt;/p&gt;

&lt;p&gt;The fix: Learn Context API or Zustand/Redux early. Not for every app, but once you feel the pain of props drilling, you'll know when you need them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don't Memorize Hooks — Understand the Rules
I tried memorizing useEffect dependency arrays like a recipe. That fails.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The core rules:&lt;/p&gt;

&lt;p&gt;Only call hooks at the top level (not inside loops/conditions).&lt;/p&gt;

&lt;p&gt;Only call hooks from React functions.&lt;/p&gt;

&lt;p&gt;Once I understood why the rules exist (React needs a stable order of hooks), everything clicked. useEffect isn't a lifecycle method—it's a synchronization tool.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You Will Struggle With Keys and Re-renders
Your app will re-render constantly. Sometimes 50 times a second. Sometimes the whole page when you type one letter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem is almost always:&lt;/p&gt;

&lt;p&gt;Missing or bad key props in lists (don't use index!)&lt;/p&gt;

&lt;p&gt;Not memoizing components (React.memo, useCallback, useMemo)&lt;/p&gt;

&lt;p&gt;Golden rule: If you're passing a function down to a child component, wrap it in useCallback. Otherwise, that child re-renders every single time.&lt;/p&gt;

&lt;p&gt;Final Takeaway&lt;br&gt;
React is a tool, not a religion. It's okay to not know everything on day one. But mastering vanilla JavaScript first? That's non-negotiable.&lt;/p&gt;

&lt;p&gt;What’s one thing you wish you knew before learning React? Drop it in the comments 👇&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My VS Code Setup for 2026 No fluff. Just the extensions, theme, and settings I actually use.</title>
      <dc:creator>sohana khan</dc:creator>
      <pubDate>Wed, 15 Apr 2026 12:59:18 +0000</pubDate>
      <link>https://forem.com/sohanaakbar7/my-vs-code-setup-for-2026-no-fluff-just-the-extensions-theme-and-settings-i-actually-use-4m51</link>
      <guid>https://forem.com/sohanaakbar7/my-vs-code-setup-for-2026-no-fluff-just-the-extensions-theme-and-settings-i-actually-use-4m51</guid>
      <description>&lt;p&gt;I stopped tweaking my editor and started shipping code. Here's my lean, mean 2026 setup.&lt;/p&gt;

&lt;p&gt;Theme &amp;amp; UI&lt;br&gt;
Theme: Aether Dark v3 (glass-morphism, dynamic contrast)&lt;/p&gt;

&lt;p&gt;Icons: Material Icon Theme (2026 edition)&lt;/p&gt;

&lt;p&gt;Font: JetBrains Mono 13.5px with ligatures&lt;/p&gt;

&lt;p&gt;Essential Extensions (Only 6)&lt;br&gt;
GitHub Copilot Agent v5 – Workspace-aware AI that refactors across files&lt;/p&gt;

&lt;p&gt;Rust Analyzer – Incremental type checking&lt;/p&gt;

&lt;p&gt;PyPy Native – Rust-powered Python (+ Jupyter)&lt;/p&gt;

&lt;p&gt;Docker Compose Graph – Visualize and edit compose.yml&lt;/p&gt;

&lt;p&gt;Live Share – Cursor trails + voice chat&lt;/p&gt;

&lt;p&gt;Continue.dev – Local LLM fallback&lt;/p&gt;

&lt;p&gt;What I Removed&lt;br&gt;
Prettier (native formatting is faster)&lt;/p&gt;

&lt;p&gt;GitLens (built-in now)&lt;/p&gt;

&lt;p&gt;Bracket Pair Colorizer (native since '23)&lt;/p&gt;

&lt;p&gt;Key Settings&lt;br&gt;
json&lt;br&gt;
"editor.fontFamily": "'JetBrains Mono', monospace",&lt;br&gt;
"editor.fontSize": 13.5,&lt;br&gt;
"github.copilot.commitMessageGeneration": "always"&lt;br&gt;
3 Workflow Tricks&lt;br&gt;
Profiles: Default / Presentation / Low-Power (battery saver)&lt;/p&gt;

&lt;p&gt;Pre-commit: Format → Lint → Typecheck (green check = good)&lt;/p&gt;

&lt;p&gt;Agent shortcut: Cmd+Shift+A → "Refactor this to async"&lt;/p&gt;

&lt;p&gt;That's it. No bloat. Just code.&lt;/p&gt;

&lt;p&gt;What's in your 2026 setup? Drop a comment 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>vscode</category>
    </item>
    <item>
      <title>"I'm 18, know Frontend + DevOps, and have no idea how to make money. Here's my 30-day journey."</title>
      <dc:creator>sohana khan</dc:creator>
      <pubDate>Tue, 14 Apr 2026 13:23:59 +0000</pubDate>
      <link>https://forem.com/sohanaakbar7/im-18-know-frontend-devops-and-have-no-idea-how-to-make-money-heres-my-30-day-4aaf</link>
      <guid>https://forem.com/sohanaakbar7/im-18-know-frontend-devops-and-have-no-idea-how-to-make-money-heres-my-30-day-4aaf</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Skills ≠ money. Strategy = money. Here's the roadmap I wish someone gave me.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;You learn React. You learn AWS. You can build a full app and deploy it.&lt;/p&gt;

&lt;p&gt;Then you stare at your screen and think:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Okay... now what? Where does the money come from?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've been there. I'm &lt;em&gt;still&lt;/em&gt; there. But here's what I figured out in 30 days of failing, crying, and trying again.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Skills without visibility = $0.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nobody cares what you know. They care what you can &lt;em&gt;do for them&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And at 18? You have no portfolio, no connections, no "trust factor."&lt;/p&gt;

&lt;p&gt;So here's the 4-step system I'm using right now:&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Stop Learning. Start Shipping.
&lt;/h2&gt;

&lt;p&gt;You already know enough. Seriously.&lt;/p&gt;

&lt;p&gt;I had to tell myself: &lt;em&gt;"No more tutorials. No more courses. Build something real."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I built a &lt;strong&gt;task manager app&lt;/strong&gt; — not fancy, but functional. Then I deployed it on AWS free tier.&lt;/p&gt;

&lt;p&gt;Took 3 days. Ugly as hell. But it was &lt;em&gt;mine&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn:&lt;/strong&gt; Pick ONE small project. Finish it. Deploy it. Break it. Fix it. Repeat.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Document Everything (Building in Public)
&lt;/h2&gt;

&lt;p&gt;This changed everything.&lt;/p&gt;

&lt;p&gt;I started posting on X (Twitter):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day 1: "I broke my server lol"&lt;/li&gt;
&lt;li&gt;Day 3: "Finally fixed the CORS error after 6 hours 😭"&lt;/li&gt;
&lt;li&gt;Day 7: "Someone asked me for a quote. I charged $50. They said yes??"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People love the struggle. They love the wins. They love &lt;em&gt;real&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do this:&lt;/strong&gt; Post 1 thing daily. Even if it's "I did nothing today because I was tired."&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Offer Value Before Asking for Money
&lt;/h2&gt;

&lt;p&gt;I stopped thinking "how do I earn" and started thinking "how do I help."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helped a friend deploy their portfolio → they paid me $30&lt;/li&gt;
&lt;li&gt;Wrote a thread about fixing Docker errors → 2 people DM'd for help&lt;/li&gt;
&lt;li&gt;Made a simple landing page for a local cafe → $80 one-time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Money follows value. Always.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Price Low. Then Raise.
&lt;/h2&gt;

&lt;p&gt;Shameful confession: My first freelance project was $15.&lt;/p&gt;

&lt;p&gt;Yes, $15. For 8 hours of work.&lt;/p&gt;

&lt;p&gt;But guess what? That client gave me a testimonial. And the next client paid $50. And the next paid $150.&lt;/p&gt;

&lt;p&gt;You don't start at $1000. You start at &lt;em&gt;something&lt;/em&gt;. Anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm Doing Next (30-Day Plan)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Finish portfolio + write 2 articles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Apply to 10 freelance gigs (Fiverr/Upwork)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Reach out to 5 local businesses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Land first paid client ($100+ target)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I'll post updates every week. Follow along if you're also trying to figure this out.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Truth Nobody Tells You
&lt;/h2&gt;

&lt;p&gt;At 18, you have &lt;em&gt;time&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You can afford to fail. You can afford to charge $15. You can afford to look stupid.&lt;/p&gt;

&lt;p&gt;But you can't afford to do nothing.&lt;/p&gt;

&lt;p&gt;So start today. Write that post. Send that DM. Build that ugly project.&lt;/p&gt;

&lt;p&gt;Future you will thank you.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you're also young and confused about money + code — DM me on X. Let's suffer together. ✨&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Liked this? Follow for weekly posts about frontend, devops, and trying to make money as a teen dev.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
