<?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: Sameer Qaiser</title>
    <description>The latest articles on DEV Community by Sameer Qaiser (@sameerqaisar17).</description>
    <link>https://dev.to/sameerqaisar17</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%2F4121118%2Ff750c0c3-9b33-4a7d-838d-4beebf83a76b.png</url>
      <title>DEV Community: Sameer Qaiser</title>
      <link>https://dev.to/sameerqaisar17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sameerqaisar17"/>
    <language>en</language>
    <item>
      <title>Python APIs: Making HTTP Requests for Beginners</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Fri, 02 Oct 2026 15:17:29 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/python-apis-making-http-requests-for-beginners-201d</link>
      <guid>https://dev.to/sameerqaisar17/python-apis-making-http-requests-for-beginners-201d</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Making HTTP requests in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who know functions and JSON&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Understand how to fetch data from the internet with Python&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Every app I used was pulling data from somewhere. Weather apps, social media, online stores — they all talk to servers. Then I learned about APIs and HTTP requests, and I could finally build programs that talk to the internet."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. What Is an API?
&lt;/h2&gt;

&lt;p&gt;An API (Application Programming Interface) is a way for two programs to talk to each other.&lt;/p&gt;

&lt;p&gt;When you open a weather app, it doesn't know the weather itself. It asks a server: &lt;em&gt;"What's the weather in Karachi?"&lt;/em&gt; The server responds with data. That's an API.&lt;/p&gt;

&lt;p&gt;Think of it as a waiter in a restaurant — you don't walk into the kitchen. You tell the waiter what you want. The waiter brings it back.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Problem (Without APIs)
&lt;/h2&gt;

&lt;p&gt;Imagine trying to get the weather manually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open a browser&lt;/li&gt;
&lt;li&gt;Go to a weather site&lt;/li&gt;
&lt;li&gt;Read the temperature&lt;/li&gt;
&lt;li&gt;Copy it down&lt;/li&gt;
&lt;li&gt;Repeat every hour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not scalable.&lt;/strong&gt; &lt;strong&gt;Not automatable.&lt;/strong&gt; You need a way for code to ask for data directly.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Solution (Using &lt;code&gt;requests&lt;/code&gt;)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;https://api.github.com/users/torvalds&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;public_repos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Linus&lt;/span&gt; &lt;span class="nx"&gt;Torvalds&lt;/span&gt;
&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;You just fetched&lt;/strong&gt; live data from &lt;em&gt;Github’s API&lt;/em&gt; in &lt;strong&gt;4 lines&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. How It Works (Line By Line)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Line 1:&lt;/strong&gt; &lt;code&gt;import requests&lt;/code&gt; — Loads the requests library (you may need to install it first with &lt;code&gt;pip install requests&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line 3:&lt;/strong&gt; &lt;code&gt;requests.get(url)&lt;/code&gt; — Sends an HTTP GET request to the URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line 4:&lt;/strong&gt; &lt;code&gt;.json()&lt;/code&gt; — Converts the response to a Python dictionary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line 6:&lt;/strong&gt; &lt;code&gt;data["name"]&lt;/code&gt; — Accesses a specific field.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  6. HTTP Status Codes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The server always tells you what happened:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;OK- everything worked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;404&lt;/td&gt;
&lt;td&gt;Not Found- The URL doesn't exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;Forbidden- you don’t have access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Server error- the server broke&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Always check the status code:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error: {response.status_code}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7. Real Example (Weather API)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt;

&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.open-meteo.com/v1/forecast&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;latitude&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;24.86&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;longitude&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;67.01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;current_weather&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Temperature: {data['current_weather']['temperature']}°C&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;32.4&lt;/span&gt;&lt;span class="err"&gt;°&lt;/span&gt;&lt;span class="nx"&gt;C&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  8. Common Mistakes Beginners Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mistake 1: Not installing requests&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mistake 2: Forgetting .json()&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
response is not the data — it's the response object. You need .json() to get the actual content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistake 3: Not handling errors&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Networks fail. URLs break. Always check status_code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistake 4: Hardcoding API keys&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If an API needs a key, store it in an environment variable, not in your code.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. What I learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;APIs let your code talk to the internet&lt;/li&gt;
&lt;li&gt;requests.get() sends a request&lt;/li&gt;
&lt;li&gt;.json() turns the response into a Python dictionary&lt;/li&gt;
&lt;li&gt;Status codes tell you what happened&lt;/li&gt;
&lt;li&gt;Always handle errors — networks are not reliable&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"APIs felt like magic when I first used one. Now they're just... tools. Small pieces of code that fetch data and give me back a dictionary. Once you build your first API call, you'll want to build twenty more.”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>api</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I'd Learn Python from Scratch (If I Started Today)</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Thu, 01 Oct 2026 07:58:05 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/how-id-learn-python-from-scratch-if-i-started-today-27bo</link>
      <guid>https://dev.to/sameerqaisar17/how-id-learn-python-from-scratch-if-i-started-today-27bo</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; A beginner-friendly roadmap for learning Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Anyone starting from zero&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Give a clear, honest roadmap based on real experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"I started learning Python three weeks ago. I've published 17 articles about it. If I had to start over today, here's exactly what I'd do differently."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. Week 1: The Absolute Basics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Don't skip these. No matter how boring they seem.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables and data types (int, str, float, bool)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;print()&lt;/code&gt; and &lt;code&gt;input()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;if&lt;/code&gt; / &lt;code&gt;elif&lt;/code&gt; / &lt;code&gt;else&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt; and &lt;code&gt;while&lt;/code&gt; loops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I'd do:&lt;/strong&gt; Write one tiny program each day. Not tutorials. Programs.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;A calculator that adds two numbers&lt;/li&gt;
&lt;li&gt;A script that asks your name and greets you&lt;/li&gt;
&lt;li&gt;A loop that prints numbers 1 to 10&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I'd skip:&lt;/strong&gt; Installing 10 libraries you don't need yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Week 2: Data Structures
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Dictionaries&lt;/li&gt;
&lt;li&gt;Sets and tuples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I'd do:&lt;/strong&gt; Build a small contact book. Store names and phone numbers in a dictionary. Add, look up, delete.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Data structures are how you organize information. Every real program uses them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd skip:&lt;/strong&gt; Advanced list comprehensions. You don't need them yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Week 3: Functions and Files
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Writing your own functions (&lt;code&gt;def&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Reading and writing files&lt;/li&gt;
&lt;li&gt;Error handling (&lt;code&gt;try&lt;/code&gt; / &lt;code&gt;except&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I'd do:&lt;/strong&gt; Build a to-do list that saves to a file. It should load existing todos when the program starts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Functions keep your code organized. Files let your programs remember things.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Week 4: Real Projects
&lt;/h2&gt;

&lt;p&gt;Now you're ready to build something real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project ideas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A weather app (uses an API)&lt;/li&gt;
&lt;li&gt;A password generator&lt;/li&gt;
&lt;li&gt;A budget tracker that saves to JSON&lt;/li&gt;
&lt;li&gt;A simple web scraper&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I'd do:&lt;/strong&gt; Pick one. Finish it. Publish it on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Nobody cares what you know. They care what you've built.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. I'd write about it sooner.&lt;/strong&gt;&lt;br&gt;
Writing about what I learn taught me more than reading about it. Every tutorial I published forced me to understand the concept deeply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. I'd stop waiting to feel ready.&lt;/strong&gt;&lt;br&gt;
You'll never feel ready. The first article was terrifying. The 17th was routine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. I'd ask for help earlier.&lt;/strong&gt;&lt;br&gt;
Struggling alone isn't noble. It's slow. Ask questions on Stack Overflow or Dev.to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. I'd focus on depth, not speed.&lt;/strong&gt;&lt;br&gt;
One concept understood beats five concepts skimmed.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What Actually Matters
&lt;/h2&gt;

&lt;p&gt;Here's the truth: the language doesn't matter as much as the habit.&lt;/p&gt;

&lt;p&gt;Python is a tool. Consistency is the skill.&lt;/p&gt;

&lt;p&gt;If you show up every day — even for 30 minutes — you'll learn more in a month than someone who binges tutorials on weekends and forgets everything by Tuesday.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"If I started over today, I'd learn less and build more. I'd ship imperfect things. I'd ask for help sooner. And I'd write about everything — because the writing is what made it stick."&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>career</category>
      <category>python</category>
    </item>
    <item>
      <title>What I've Learned from Pitching 7 Companies (And Getting 0 Replies)</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Thu, 01 Oct 2026 07:51:19 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/what-ive-learned-from-pitching-7-companies-and-getting-0-replies-a8l</link>
      <guid>https://dev.to/sameerqaisar17/what-ive-learned-from-pitching-7-companies-and-getting-0-replies-a8l</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; The reality of pitching companies as a beginner writer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Anyone trying to break into writing, freelancing, or any creative field&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Show that the silence is normal, not a verdict on your work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Over the past two weeks, I've sent pitches to 7 companies that pay for technical writing. I've followed up with 5 of them. So far, I've received zero replies. Here's what I've learned."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Companies pitched&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Follow-ups sent&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Closed doors (not accepting)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No reply yet&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Positive replies&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last number stings. But let me explain why I'm not panicking.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What Actually Happened
&lt;/h2&gt;

&lt;p&gt;Some pitches died immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One company said "not currently seeking authors"&lt;/li&gt;
&lt;li&gt;Another's submission form only had options for Elixir, Ruby, and JavaScript — no Python&lt;/li&gt;
&lt;li&gt;A third required a paid subscription just to submit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rest were sent into the void. No "we received your pitch." No timeline. Just silence.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Honest Part
&lt;/h2&gt;

&lt;p&gt;Here's what nobody tells you about pitching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Silence is normal.&lt;/strong&gt; Editors get hundreds of pitches. Yours is one of them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No response isn't a rejection.&lt;/strong&gt; It's just... nothing. Yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The waiting is harder than the writing.&lt;/strong&gt; Writing takes an hour. Waiting takes weeks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I checked my inbox every day for the first week. Then every other day. Now I check twice a week, because refreshing doesn't change anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. What I Got Right
&lt;/h2&gt;

&lt;p&gt;Looking back, my pitches were solid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I picked companies that actually pay&lt;/li&gt;
&lt;li&gt;I sent real writing samples&lt;/li&gt;
&lt;li&gt;I followed up professionally, not desperately&lt;/li&gt;
&lt;li&gt;I tracked everything in a spreadsheet&lt;/li&gt;
&lt;li&gt;I didn't lie about my experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pitches weren't the problem. The volume was. Seven pitches is not a lot. Seven is what you send before you understand the game.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What I'd Do Differently
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pitch more companies.&lt;/strong&gt; Ten isn't enough. Fifty is barely enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start smaller.&lt;/strong&gt; Big publications are harder to get into than smaller ones with the same pay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitch companies nobody's heard of.&lt;/strong&gt; DevTool startups need content too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Follow up one more time.&lt;/strong&gt; After two weeks of silence, one more nudge is fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't wait to write.&lt;/strong&gt; Keep publishing while pitches sit in inboxes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. The Part That Keeps Me Going
&lt;/h2&gt;

&lt;p&gt;I published 16 articles while waiting for replies. That's 16 pieces of proof that I can write. Every one of them makes the next pitch stronger.&lt;/p&gt;

&lt;p&gt;The companies that said no? They might say yes in six months. The companies that ignored me? They might reply next week. I don't know.&lt;/p&gt;

&lt;p&gt;What I do know is this: &lt;strong&gt;the only way I lose is if I stop pitching.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. If You're in the Same Spot
&lt;/h2&gt;

&lt;p&gt;You will send pitches that get ignored. You will follow up and hear nothing. You will wonder if you're wasting your time.&lt;/p&gt;

&lt;p&gt;You're not.&lt;/p&gt;

&lt;p&gt;Every "no" is data. Every silence is a chance to keep working. The people who eventually get paid aren't the ones who pitched once and got lucky — they're the ones who kept pitching while everyone else quit.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Zero replies doesn't mean zero chances. It means the story isn't finished yet. I'll let you know when it is."&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>writing</category>
      <category>mentalhealth</category>
      <category>freelance</category>
      <category>career</category>
    </item>
    <item>
      <title>Python Virtual Environments: What They Are and Why You Need Them</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Wed, 30 Sep 2026 07:55:38 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/python-virtual-environments-what-they-are-and-why-you-need-them-15cm</link>
      <guid>https://dev.to/sameerqaisar17/python-virtual-environments-what-they-are-and-why-you-need-them-15cm</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Virtual environments in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who've installed packages with pip and hit problems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Understand why virtual environments exist and how to use one&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"For my first two weeks of Python, I installed every package globally. Then I had two projects that needed two different versions of the same library — and everything broke. That's when I learned about virtual environments."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Problem (Installing Everything Globally)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;requests
pip &lt;span class="nb"&gt;install &lt;/span&gt;flask
pip &lt;span class="nb"&gt;install &lt;/span&gt;pandas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every package goes into your global Python installation.&lt;/p&gt;

&lt;p&gt;Problem: Project A needs requests==2.28, but Project B needs requests==2.31. You can only have one version installed globally. One project breaks.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Solution (A Virtual Environment Per Project)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;my_project&lt;/span&gt;

&lt;span class="nx"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;

&lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nx"&gt;Scripts&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nx"&gt;activate&lt;/span&gt;

&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;activate&lt;/span&gt;

&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now every project has its own isolated set of packages.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. How It Works
&lt;/h2&gt;

&lt;p&gt;A virtual environment is just a folder (&lt;code&gt;venv/&lt;/code&gt;) that contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its own copy of Python&lt;/li&gt;
&lt;li&gt;Its own pip&lt;/li&gt;
&lt;li&gt;Its own list of installed packages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you "activate" it, your terminal points to that folder instead of the global Python.&lt;/p&gt;

&lt;p&gt;Nothing you install inside can affect other projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. What You’ll See When It’s Active
&lt;/h2&gt;

&lt;p&gt;After activating, your terminal prompt changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nx"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nx"&gt;You&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nx"&gt;my_project&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That (venv) prefix means the environment is active. If you don't see it, you're using the global python.  &lt;/p&gt;




&lt;h2&gt;
  
  
  6. Real Examples (Two Projects, Two Versions)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;project_a&lt;/span&gt;
&lt;span class="nx"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;
&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;activate&lt;/span&gt;
&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.28&lt;/span&gt;

&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;project_b&lt;/span&gt;
&lt;span class="nx"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;
&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="nx"&gt;venv&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;activate&lt;/span&gt;
&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.31&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now both projects have the version they need. No conflict.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Saving Your Dependencies
&lt;/h2&gt;

&lt;p&gt;When you finish a project, save what you installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;freeze&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, on a new machine, restore everything with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="nx"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s how python projects share exact package versions. &lt;/p&gt;




&lt;h2&gt;
  
  
  8. Deactivating and Deleting
&lt;/h2&gt;

&lt;p&gt;To deactivate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;deactivate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To Delete: Just delete the venv/ folder. That's it. Nothing is left behind.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Common Mistakes Beginners Make
&lt;/h2&gt;

&lt;p&gt;Mistake 1: Forgetting to activate&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You install a package thinking you're in the environment, but you're not.&lt;/li&gt;
&lt;li&gt;Check for (venv) in your prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mistake 2: Committing venv/ to Git&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add venv/ to your .gitignore.&lt;/li&gt;
&lt;li&gt;It's huge and not meant to be committed.&lt;/li&gt;
&lt;li&gt;Commit requirements.txt instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mistake 3: Creating the environment in the wrong folder&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always cd into your project first.&lt;/li&gt;
&lt;li&gt;Then run python -m venv venv.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10.  What I learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Virtual environments&lt;/strong&gt; isolate packages per project&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;python -m venv venv&lt;/code&gt; creates one&lt;/li&gt;
&lt;li&gt;Activate it before installing anything with &lt;code&gt;pip&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(venv)&lt;/code&gt; in your prompt means it's active&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt; saves your dependencies&lt;/li&gt;
&lt;li&gt;Always add &lt;code&gt;venv/&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  11. Conclusion
&lt;/h2&gt;

&lt;p&gt;"Virtual environments felt like extra steps for no reason — until the day two projects broke each other. Now I create one for every project, every time. It's five seconds of setup for hours of saved debugging.”&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Python JSON: Working with Data Files</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Mon, 28 Sep 2026 08:09:13 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/python-json-working-with-data-files-48lj</link>
      <guid>https://dev.to/sameerqaisar17/python-json-working-with-data-files-48lj</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Working with JSON in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who know files and dictionaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Understand how to save and load structured data&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"I could write text to a file. But what if I needed to save a whole dictionary? A list of users? A config file? That's when I learned about JSON — and now it's how every one of my projects saves data."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Problem (Saving Complex Data to a Text File)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ali&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;age&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Karachi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What’s in the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ali&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Karachi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Problem: It’s ugly. It’s not standard. Other programs can’t read it easily.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Solution (JSON)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;

&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Karachi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;w&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What’s in the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Karachi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clean. Standard. Readable by almost any language.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Reading JSON Back
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;

&lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;r&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;   &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Ali&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;age&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;    &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Dictionary comes back exactly as it was saved.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. How It Works (Line By Line)
&lt;/h2&gt;

&lt;p&gt;import json — Loads Python’s built-in JSON module.&lt;/p&gt;

&lt;p&gt;json.dump(data, file) — Writes a Python object to a file as JSON.&lt;/p&gt;

&lt;p&gt;json.load(file) — Reads JSON from a file back into a Python object.&lt;/p&gt;

&lt;p&gt;json.dumps(data) — Converts a Python object to a JSON string (instead of writing to a file).&lt;/p&gt;

&lt;p&gt;json.loads(string) — Parses a JSON string into Python.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. JSON vs Python: What Maps to What
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;JSON&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dict&lt;/td&gt;
&lt;td&gt;Object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List&lt;/td&gt;
&lt;td&gt;Array&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;str&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;int/ float&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;True / False&lt;/td&gt;
&lt;td&gt;true / false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;null&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The names are different, but the structure is the same.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Real Example (My Practice)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;

&lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;score&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sara&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;score&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;92&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ahmed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;score&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scores.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;w&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scores.json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;r&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;loaded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;loaded&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{user['name']}: {user['score']}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ali&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt;
&lt;span class="nx"&gt;Sara&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;92&lt;/span&gt;
&lt;span class="nx"&gt;Ahmed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The indent=2 makes the file human-readable.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Common Mistakes Beginners Make
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Forgetting to import json
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Mistake 2: Confusing dump and dumps
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;json.dump(): writes to a file&lt;/li&gt;
&lt;li&gt;json.dumps(): returns a string&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Mistake 3: Trying to save non-JSON types
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;json&lt;/span&gt;
&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;date&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()})&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSON only supports basic types. Convert to strings first.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. What I learned
&lt;/h2&gt;

&lt;p&gt;-) JSON is the standard for saving structured data&lt;br&gt;
-) json.dump() writes to a file, json.load() reads from it&lt;br&gt;
-) json.dumps() and json.loads() work with strings&lt;br&gt;
-) indent=2 makes files human-readable&lt;br&gt;
-) Not everything can be saved — only dicts, lists, strings, numbers, booleans, and None&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Conclusion
&lt;/h2&gt;

&lt;p&gt;“JSON solved a problem I didn't know I had. Now every project I build saves its data as JSON — because it's readable, portable, and just works. Once you learn it, you'll never go back to saving dictionaries as text.”&lt;/p&gt;

</description>
      <category>json</category>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Python Classes: A Beginner's Guide to OOP</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Sun, 27 Sep 2026 08:58:31 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/article-14-python-classes-a-beginners-guide-to-oop-3i8i</link>
      <guid>https://dev.to/sameerqaisar17/article-14-python-classes-a-beginners-guide-to-oop-3i8i</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Classes and objects in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who know functions and dictionaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Understand why classes exist and how to write one&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"For weeks, I stored everything in dictionaries. Then I had 10 players in a game, each with a name, score, and level — and I had to update all of them manually. That's when I learned about classes."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Problem (Using Dictionaries for Everything)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;player1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ali&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;level&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;player2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sara&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;level&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;player3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ahmed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;level&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;points&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;player&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;points&lt;/span&gt;

&lt;span class="nf"&gt;add_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;player1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;player1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# 10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Problem: Every player is a plain dictionary. No structure. Easy to typo. Hard to scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The Solution (With Classes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;lass&lt;/span&gt; &lt;span class="nx"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_init_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;
        &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
        &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="nx"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;add_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;points&lt;/span&gt;

&lt;span class="nx"&gt;player1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;player2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sara&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;player1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;player1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;score&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;player2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;score&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   

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

&lt;/div&gt;



&lt;p&gt;Every Player is now a Player object with its own data and its own methods.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. How It Works (Line By Line)
&lt;/h2&gt;

&lt;p&gt;Line 1: class Player: — Defines a new class called Player.&lt;/p&gt;

&lt;p&gt;Line 2: def &lt;strong&gt;init&lt;/strong&gt;(self, name): — This runs automatically when you create a new player. It's called the constructor.&lt;/p&gt;

&lt;p&gt;Line 3-5: self.name = name — Stores data on the object. self refers to the specific instance.&lt;/p&gt;

&lt;p&gt;Line 7: def add_score(self, points): — A method that belongs to the class.&lt;/p&gt;

&lt;p&gt;Line 11: player1 = Player("Ali") — Creates an instance (an object) of the class.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. What is self?
&lt;/h2&gt;

&lt;p&gt;self is how Python knows which player you're talking about.&lt;/p&gt;

&lt;p&gt;When you write player1.add_score(10), Python translates it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;player1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So self = player1 in that call. It's the object the method was called on.&lt;/p&gt;

&lt;p&gt;Rule: Every method inside a class takes self as its first parameter. No exceptions.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Real Example (My Practice)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BankAccount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;owner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;owner&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;deposit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&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="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;withdraw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&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="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Insufficient funds.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;show_balance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BankAccount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ali&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deposit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;withdraw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show_balance&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Ali&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$120&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7. Class vs Instance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;species&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Canis familiaris&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;          

&lt;span class="n"&gt;dog1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rex&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dog2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dog1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;species&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dog2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;species&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dog1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dog2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Class attribute = shared by every instance.&lt;br&gt;
Instance attribute = unique to each instance.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. What I learned
&lt;/h2&gt;

&lt;p&gt;· Classes bundle data and behavior together&lt;br&gt;
· —init— runs when you create a new instance&lt;br&gt;
· Self is how methods know which instance they belong to&lt;br&gt;
· Class attributes are shared, instance attributes are unique&lt;br&gt;
· Classes make code easier to scale when you have many similar things&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;p&gt;"Classes felt like overkill when I had one player. But when I had ten, they saved me hours. Now I reach for classes whenever I have multiple things with the same shape — because managing them manually is how bugs get born."&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>oop</category>
      <category>programming</category>
    </item>
    <item>
      <title>What Nobody Tells You About Writing Online!</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Sat, 26 Sep 2026 16:42:14 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/what-nobody-tells-you-about-writing-online-2l6a</link>
      <guid>https://dev.to/sameerqaisar17/what-nobody-tells-you-about-writing-online-2l6a</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; The honest truth about starting to write online&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Anyone thinking about writing publicly but hasn't started&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Show what actually happens after you hit publish&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Two weeks ago, I published my first article. Twelve articles later, here's what I wish someone had told me before I started."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Advice You Always Hear
&lt;/h2&gt;

&lt;p&gt;"Just start."&lt;/p&gt;

&lt;p&gt;"Write every day."&lt;/p&gt;

&lt;p&gt;"Share your work."&lt;/p&gt;

&lt;p&gt;"Be consistent."&lt;/p&gt;

&lt;p&gt;All of it is true. None of it is the full story.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What Nobody Tells You
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nobody tells you the first article takes 3 hours.&lt;/strong&gt;&lt;br&gt;
Not because you're slow. Because you're learning how to &lt;em&gt;finish&lt;/em&gt; something. The second one takes 1 hour. The tenth takes 30 minutes. The speed comes from repetition, not talent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody tells you the fear doesn't go away.&lt;/strong&gt;&lt;br&gt;
Every single article I've published, I've had a moment where I almost didn't. The fear doesn't disappear — you just learn to act anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody tells you the silence is the hardest part.&lt;/strong&gt;&lt;br&gt;
Your first article might get 5 views. Your second might get 2. It's easy to think nobody cares — but the first 10 articles are for you. You're building a habit, not an audience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody tells you writing teaches you more than reading does.&lt;/strong&gt;&lt;br&gt;
I've learned more about Python from writing tutorials than from any course. When you have to explain something, you discover what you don't actually understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody tells you the "post it later" trap.&lt;/strong&gt;&lt;br&gt;
There will always be a reason to wait. The draft isn't ready. The topic isn't perfect. You need to research more. You don't. Publish the imperfect version.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What Actually Happens After You Publish
&lt;/h2&gt;

&lt;p&gt;Here's the honest version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nothing happens immediately.&lt;/strong&gt; No flood of readers, no comments, no DMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A few people read it.&lt;/strong&gt; Maybe one person likes it. That's still one person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You feel weirdly exposed.&lt;/strong&gt; Like you showed up to a party in the wrong outfit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You check the stats way too often.&lt;/strong&gt; Stop. It won't help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You write the next one anyway.&lt;/strong&gt; That's the only thing that matters.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. The Real Reward
&lt;/h2&gt;

&lt;p&gt;It's not views. It's not likes. It's not followers.&lt;/p&gt;

&lt;p&gt;The real reward is &lt;strong&gt;you become the kind of person who finishes things.&lt;/strong&gt; That identity — "I'm a writer" — changes how you see yourself. And it bleeds into everything else you do.&lt;/p&gt;

&lt;p&gt;You stop saying "I want to write someday" and start saying "I wrote something yesterday."&lt;/p&gt;

&lt;p&gt;That's the shift. That's what nobody tells you.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What I'd Tell Someone Starting Today
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Publish before you're ready.&lt;/strong&gt; Ready is a moving target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write about what you're learning.&lt;/strong&gt; You don't need to be an expert.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignore the stats for the first 30 days.&lt;/strong&gt; Focus on showing up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do it for yourself first.&lt;/strong&gt; An audience is a side effect, not the goal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep going when nobody's watching.&lt;/strong&gt; That's the whole skill.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  7. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Writing online isn't about being seen. It's about seeing yourself — you're thinking, your progress, your voice — for the first time. That's worth more than any number of views."&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>writing</category>
      <category>beginners</category>
      <category>mentalhealth</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Python Files: Reading and Writing for Beginners</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Fri, 25 Sep 2026 16:52:58 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/python-files-reading-and-writing-for-beginners-5b3m</link>
      <guid>https://dev.to/sameerqaisar17/python-files-reading-and-writing-for-beginners-5b3m</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Reading and writing files in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who know the basics but haven't worked with files yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Understand how to save data to a file and read it back&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"For weeks, every Python program I wrote forgot everything the moment it closed. Then I learned how to work with files — and suddenly my programs could remember."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. The Problem (Data Disappears)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s your name? &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it once, it works. Run it again tomorrow, it asks again.&lt;/p&gt;

&lt;p&gt;The data disappears the moment the program ends. Nothing is saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Solution (Writing to a File)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;names.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ali&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sara&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Ahmed&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Saved!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens: A file called names.txt is created with three names.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Reading From a File
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;names.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ali
Sara
Ahmed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The data is still there — even after the program closed.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. How It Works (Line by Line)
&lt;/h2&gt;

&lt;p&gt;Line 1: with open("names.txt", "w") as file: — Opens the file in write mode ("w").&lt;/p&gt;

&lt;p&gt;Line 2-4: file.write(...) — Writes each name, plus \n to start a new line.&lt;/p&gt;

&lt;p&gt;The with keyword: Automatically closes the file when you're done. You don't have to remember to close it.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The Three File Modes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;“r”&lt;/td&gt;
&lt;td&gt;Read only. Throws an error if the file doesn’t exist.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“w”&lt;/td&gt;
&lt;td&gt;Write. Erases the file if it already exists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“a”&lt;/td&gt;
&lt;td&gt;Append. Adds to the end without erasing.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Warning: "w" overwrites everything. Use "a" if you want to keep existing content.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Real Example (My Practise)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;scores.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;92&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;85&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;scores.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;92
85
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;line.strip() removes the extra newline character.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. What I Learned
&lt;/h2&gt;

&lt;p&gt;-) Files let data survive after the program ends&lt;br&gt;
-) "r" reads, "w" writes (and erases), "a" appends&lt;br&gt;
-) with open(...) handles closing for you — always use it&lt;br&gt;
-) .strip() cleans up extra whitespace&lt;br&gt;
-) Always check that a file exists before reading it.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;p&gt;"Files felt scary at first — I was worried I'd overwrite something important. But once I understood the three modes, files became one of the most useful tools in my Python toolbox. Programs that remember are programs people actually use."&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Python Error Handling: try/except for Beginners</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Thu, 24 Sep 2026 09:55:56 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/python-error-handling-tryexcept-for-beginners-4kd5</link>
      <guid>https://dev.to/sameerqaisar17/python-error-handling-tryexcept-for-beginners-4kd5</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Error handling in Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Beginners who've seen error messages but don't know how to handle them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Stop being scared of errors and start handling them gracefully&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"The first time I saw a red error message in Python, I panicked. Now I read them like a map. Here's how I stopped being scared of errors — and started using try/except to handle them properly."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. The Problem (When Code Crashes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter your age: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; years old&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens if the user types “Twenty”?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;invalid&lt;/span&gt; &lt;span class="nx"&gt;literal&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;twenty&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The whole program crashes. One wrong input and everything stops.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Solution (try/expect)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Enter your age: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are {age} years old&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;except&lt;/span&gt; &lt;span class="nx"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please enter a number, not text.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output (if user types “twenty”):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Please&lt;/span&gt; &lt;span class="nx"&gt;enter&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The program keeps running. No Crash.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How It Works (Line by Line)
&lt;/h2&gt;

&lt;p&gt;Line 1: try: — "Python, try running this code."&lt;/p&gt;

&lt;p&gt;Line 2-3: The code that might fail.&lt;/p&gt;

&lt;p&gt;Line 4: except ValueError: — "If a ValueError happens, do this instead."&lt;/p&gt;

&lt;p&gt;Line 5: The fallback message.&lt;/p&gt;

&lt;p&gt;If no error happens, the except block is skipped entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Catching Multiple Errors
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ZeroDivisionError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You can&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t divide by zero.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;TypeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Wrong type of value.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;You&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;t divide by zero.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. The finally Block
&lt;/h2&gt;

&lt;p&gt;finally runs no matter what- error or no error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;FileNotFoundError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;File not found.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Done trying to read the file.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output (if file missing):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;File&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;found&lt;/span&gt;
&lt;span class="nx"&gt;Done&lt;/span&gt; &lt;span class="nx"&gt;trying&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;read&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great for cleanup- closing files, releasing connections, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Common Beginner Mistakes
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Mistake 1: Catching everything
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# any code
&lt;/span&gt;&lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This hides real bugs. Catch specific exceptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 2: Using an empty &lt;code&gt;except&lt;/code&gt; block
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;  &lt;span class="c1"&gt;# silently ignores the error
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At minimum, print or log something. Never swallow errors silently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mistake 3: Using &lt;code&gt;try/except&lt;/code&gt; for control flow
&lt;/h2&gt;

&lt;p&gt;Don’t wrap every line in &lt;code&gt;try/except&lt;/code&gt; “just in case.” Only wrap code that might realistically fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Real Example (My Practise)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_number&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;try&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;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter a number: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;That&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s not a number. Try again.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_number&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You entered: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behavior: It keeps asking until the user types a valid number.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. What I Learned
&lt;/h2&gt;

&lt;p&gt;· Errors aren’t failures — they’re Python telling you what went wrong&lt;br&gt;
· &lt;code&gt;try/except&lt;/code&gt; lets your program recover instead of crashing&lt;br&gt;
· Catch specific exceptions, not everything&lt;br&gt;
· &lt;code&gt;finally&lt;/code&gt; runs whether or not there’s an error&lt;br&gt;
· Never silently swallow errors — always log or print something&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Conclusion
&lt;/h2&gt;

&lt;p&gt;"Error handling felt like extra work at first. Now I add it the same way I add comments — because I know future me will thank present me. A program that handles errors gracefully is a program people actually trust."&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why Every Developer Should Learn to Write</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Thu, 24 Sep 2026 09:25:01 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/why-every-developer-should-learn-to-write-2n8h</link>
      <guid>https://dev.to/sameerqaisar17/why-every-developer-should-learn-to-write-2n8h</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Why writing is a developer skill&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Developers who think writing isn't their job&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Show that writing = thinking, and thinking = better code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"I used to think writing was something 'other people' did. Then I started writing about code, and my code got better. Here's why."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Assumption I Used to Have
&lt;/h2&gt;

&lt;p&gt;For a long time, I thought writing and coding were two separate skills.&lt;/p&gt;

&lt;p&gt;Coders write code. Writers write words. Different people. Different jobs.&lt;/p&gt;

&lt;p&gt;I was wrong. And it took publishing 9 articles to see it.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What Writing Actually Does to Your Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Writing forces clarity.&lt;/strong&gt;&lt;br&gt;
When you have to explain &lt;code&gt;range(1, 6)&lt;/code&gt; to a beginner, you can't hand-wave. You have to actually know what it does, why it stops at 5, and where people get confused. Writing exposes the parts of your understanding that are still fuzzy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing catches bugs before they ship.&lt;/strong&gt;&lt;br&gt;
Half the bugs I've found in my own code came from writing about it. When you explain line by line, you notice the missing edge case. You notice the variable name that doesn't match what it's doing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing is thinking made visible.&lt;/strong&gt;&lt;br&gt;
If you can't explain it clearly, you don't understand it yet. Writing is the test.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Developer Who Can't Write
&lt;/h2&gt;

&lt;p&gt;Here's what happens when developers don't write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Their PR descriptions are one line: "fix bug"&lt;/li&gt;
&lt;li&gt;Their commit messages are "update"&lt;/li&gt;
&lt;li&gt;Their documentation is out of date or missing&lt;/li&gt;
&lt;li&gt;Their code reviews are vague: "this feels wrong"&lt;/li&gt;
&lt;li&gt;Their interviews go badly because they can't explain their own work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those are coding problems. All of them are writing problems.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The Developer Who Can Write
&lt;/h2&gt;

&lt;p&gt;Here's what happens when they do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Their PRs get merged faster because reviewers understand the intent&lt;/li&gt;
&lt;li&gt;Their commits tell a story&lt;/li&gt;
&lt;li&gt;Their docs actually help the next person&lt;/li&gt;
&lt;li&gt;Their code reviews lift the whole team&lt;/li&gt;
&lt;li&gt;Their interviews go well because they can talk about their work&lt;/li&gt;
&lt;li&gt;They get asked to write blog posts, give talks, and lead projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing is a &lt;strong&gt;force multiplier&lt;/strong&gt; on top of coding. It doesn't replace the skill — it amplifies it.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. The AI Era Makes This More True
&lt;/h2&gt;

&lt;p&gt;AI can write code now. It can't explain why the code matters.&lt;/p&gt;

&lt;p&gt;The people who win in the AI era won't be the ones who type the most code. They'll be the ones who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand what the code is supposed to do&lt;/li&gt;
&lt;li&gt;Can explain it to non-engineers&lt;/li&gt;
&lt;li&gt;Can write about decisions and trade-offs&lt;/li&gt;
&lt;li&gt;Can document systems that other people need to maintain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of those are writing skills.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. What I'd Tell a Developer Who Hates Writing
&lt;/h2&gt;

&lt;p&gt;You don't have to write blog posts. You don't have to publish articles.&lt;/p&gt;

&lt;p&gt;But you should write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear commit messages&lt;/strong&gt; — future you will thank present you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real PR descriptions&lt;/strong&gt; — explain &lt;em&gt;why&lt;/em&gt;, not just &lt;em&gt;what&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation that isn't just autogenerated&lt;/strong&gt; — add the "why"&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comments that explain decisions, not syntax&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start there. And if you find you enjoy it, write something public. Even one article changes how you see your own work.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Writing didn't make me a worse developer. It made me a better one — because it forced me to actually understand what I was doing. Every developer should write. Not to become a writer. To become a better developer."&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>writing</category>
      <category>career</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What 7 Articles in 7 Days Taught Me About Consistency</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Wed, 23 Sep 2026 07:25:56 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/what-7-articles-in-7-days-taught-me-about-consistency-749</link>
      <guid>https://dev.to/sameerqaisar17/what-7-articles-in-7-days-taught-me-about-consistency-749</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; What I learned from writing daily for a week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Anyone who wants to start writing but keeps waiting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Show that consistency beats motivation every time&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Seven days ago, I decided to publish one article every day for a week. I didn't know if I'd make it to day three. Here's what actually happened."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Challenge I Set for Myself
&lt;/h2&gt;

&lt;p&gt;I'm a beginner. I started learning Python, started writing online, and then decided to do something that sounded crazy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One article. Every day. For seven days.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No breaks. No "I'll do two tomorrow." Just show up, write, publish, repeat.&lt;/p&gt;

&lt;p&gt;I gave myself three rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Publish before midnight&lt;/li&gt;
&lt;li&gt;Don't skip a day&lt;/li&gt;
&lt;li&gt;Don't obsess over perfection&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. What I Expected
&lt;/h2&gt;

&lt;p&gt;I thought the hard part would be writing.&lt;/p&gt;

&lt;p&gt;I thought I'd run out of ideas by day three. I thought the articles would get worse as I got tired. I thought I'd quit somewhere in the middle.&lt;/p&gt;

&lt;p&gt;None of that happened — at least not the way I expected.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What Actually Happened
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Day 1:&lt;/strong&gt; Took 3 hours. Was terrified to hit publish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3:&lt;/strong&gt; Took 1 hour. Started finding my rhythm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 5:&lt;/strong&gt; Took 45 minutes. The ideas were coming easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 7:&lt;/strong&gt; Took 30 minutes. It felt normal.&lt;/p&gt;

&lt;p&gt;The writing didn't get harder. It got easier. The only thing that changed was &lt;strong&gt;I stopped treating it like a big deal.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The 3 Lessons I Actually Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Lesson 1: Consistency beats motivation.&lt;/strong&gt;&lt;br&gt;
Motivation is a feeling. Consistency is a decision. On day 4, I didn't feel like writing. I wrote anyway. That's the whole game.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson 2: Publish before perfect.&lt;/strong&gt;&lt;br&gt;
My first article took 3 hours because I kept rewriting it. My seventh took 30 minutes because I stopped polishing and just shipped. The seventh was better received than the first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson 3: Momentum compounds.&lt;/strong&gt;&lt;br&gt;
The first article felt impossible. The seventh felt routine. That gap — between impossible and routine — is what you get from showing up every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. What I'd Tell Someone Starting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Don't wait for the perfect idea. Start with what you know.&lt;/li&gt;
&lt;li&gt;Don't wait until you feel ready. You won't.&lt;/li&gt;
&lt;li&gt;Don't aim for perfect. Aim for published.&lt;/li&gt;
&lt;li&gt;Don't do it alone. Share your work, ask for feedback, keep going.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hardest article is always the first one.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"I set out to write 7 articles. I ended up learning 7 lessons that have nothing to do with writing. The consistency was the point. The articles were just proof."&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>discuss</category>
      <category>writing</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why I Started Writing Online (And What I Was Afraid Of)</title>
      <dc:creator>Sameer Qaiser</dc:creator>
      <pubDate>Sun, 20 Sep 2026 08:20:34 +0000</pubDate>
      <link>https://dev.to/sameerqaisar17/why-i-started-writing-online-and-what-i-was-afraid-of-47ib</link>
      <guid>https://dev.to/sameerqaisar17/why-i-started-writing-online-and-what-i-was-afraid-of-47ib</guid>
      <description>&lt;h2&gt;
  
  
  📌 Quick Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topic:&lt;/strong&gt; Why I started writing online&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target Audience:&lt;/strong&gt; Anyone thinking about starting but scared to&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Show that starting is the hardest part — and it's worth it&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"A week ago, I published my first article on the internet. Today I have eight. Here's why I started — and what almost stopped me."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. The Real Reason I Started
&lt;/h2&gt;

&lt;p&gt;I didn't start writing online because I thought I was an expert.&lt;/p&gt;

&lt;p&gt;I started because I was &lt;strong&gt;learning something&lt;/strong&gt; and I wanted to remember it.&lt;/p&gt;

&lt;p&gt;Every time I learned a new Python concept, I'd forget it a week later. Every time I figured out a bug, I'd hit the same bug three months later and have no idea how I fixed it.&lt;/p&gt;

&lt;p&gt;Writing was my way of &lt;strong&gt;keeping what I learned.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But if I'm honest, there was another reason too. I wanted to see if I could do it.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What I Was Actually Afraid Of
&lt;/h2&gt;

&lt;p&gt;I wasn't afraid of writing. I was afraid of being &lt;strong&gt;seen.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if someone smarter than me reads this and laughs?&lt;/li&gt;
&lt;li&gt;What if people think I'm pretending to be an expert?&lt;/li&gt;
&lt;li&gt;What if I write something wrong and someone calls me out?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I sat on my first article for &lt;strong&gt;three days&lt;/strong&gt; before publishing it.&lt;/p&gt;

&lt;p&gt;Three days of staring at it, tweaking the title, rewriting the intro, telling myself "it's not ready yet."&lt;/p&gt;

&lt;p&gt;It was ready. I wasn't.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What Actually Happened
&lt;/h2&gt;

&lt;p&gt;I hit publish.&lt;/p&gt;

&lt;p&gt;Then I waited for the comments. For the criticism. For someone to tell me I didn't belong.&lt;/p&gt;

&lt;p&gt;Here's what actually happened:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nobody was mean.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A few people read it.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One person said it helped them.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. That's all.&lt;/p&gt;

&lt;p&gt;The thing I was terrified of didn't happen. And the thing I hoped for — someone finding it useful — did.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The fear doesn't go away.&lt;/strong&gt; You just act anyway.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most people are kind.&lt;/strong&gt; The ones who aren't were never your audience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing is thinking.&lt;/strong&gt; I understand Python better now because I have to explain it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Momentum is real.&lt;/strong&gt; The first article took 3 days to publish. The seventh took 30 minutes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. If You're Thinking About Starting
&lt;/h2&gt;

&lt;p&gt;Start with something small. Start with something you're learning. Start before you feel ready.&lt;/p&gt;

&lt;p&gt;You don't need permission. You don't need credentials. You don't need to be an expert.&lt;/p&gt;

&lt;p&gt;You just need to be &lt;strong&gt;one step ahead&lt;/strong&gt; of the person you're writing for.&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"I started writing because I wanted to remember what I learned. I kept writing because it changed how I learn. And I'm still writing because — for the first time — I feel like I'm actually building something."&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>writing</category>
      <category>beginners</category>
      <category>mentalhealth</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
