<?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: Sherdil IT Academy</title>
    <description>The latest articles on DEV Community by Sherdil IT Academy (@usman_sherdil_582e626a7db).</description>
    <link>https://dev.to/usman_sherdil_582e626a7db</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%2F3975910%2Fe3d2fa38-cd4b-4bda-8fa0-937bab4034c6.png</url>
      <title>DEV Community: Sherdil IT Academy</title>
      <link>https://dev.to/usman_sherdil_582e626a7db</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/usman_sherdil_582e626a7db"/>
    <language>en</language>
    <item>
      <title>How We Actually Calculate Our 95% Certification Success Rate</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Fri, 30 Oct 2026 07:56:20 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/how-we-actually-calculate-our-95-certification-success-rate-514n</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/how-we-actually-calculate-our-95-certification-success-rate-514n</guid>
      <description>&lt;p&gt;A "95% success rate" is a meaningless number without knowing what it's a percentage of. 95% of everyone who enrolled? 95% of everyone who finished the course? 95% of everyone who actually sat the exam? Each of those denominators tells a wildly different story, and most institutes that advertise a headline number never show you which one they used. So here's ours, with the actual calculation shown, not just the final figure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The calculation, in the open
&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;success_rate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;enrolled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;completed_course&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sat_exam&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;passed_exam&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Returns three different percentages depending on which denominator
    you choose, because they are not interchangeable, and quoting
    the most flattering one without saying which it is isn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t honest.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pass_rate_of_sat_exam&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;passed_exam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;sat_exam&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&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;if&lt;/span&gt; &lt;span class="n"&gt;sat_exam&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pass_rate_of_completers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;passed_exam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;completed_course&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&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;if&lt;/span&gt; &lt;span class="n"&gt;completed_course&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pass_rate_of_enrolled&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;passed_exam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;enrolled&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&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;if&lt;/span&gt; &lt;span class="n"&gt;enrolled&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# A real cohort's numbers (one certification track, one enrollment period)
&lt;/span&gt;&lt;span class="n"&gt;cohort&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;success_rate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;enrolled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;completed_course&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# some drop out before finishing, for reasons unrelated to the program
&lt;/span&gt;    &lt;span class="n"&gt;sat_exam&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;            &lt;span class="c1"&gt;# some who finish choose to delay their attempt
&lt;/span&gt;    &lt;span class="n"&gt;passed_exam&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;93&lt;/span&gt;&lt;span class="p"&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;cohort&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{'pass_rate_of_sat_exam': 94.9, 'pass_rate_of_completers': 89.4, 'pass_rate_of_enrolled': 77.5}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why the gap between these numbers matters
&lt;/h2&gt;

&lt;p&gt;Three defensible numbers, from the exact same cohort: 94.9%, 89.4%, 77.5%. All three are technically true. Only one of them, the pass rate of people who actually sat the exam, measures what most people assume a "success rate" measures: if you prepared and sat the exam with us, did you pass? The other two numbers answer different, also legitimate, questions, but they are not what the phrase "certification success rate" implies to a reader, and quoting the highest one without saying which denominator it uses is the exact pattern worth being suspicious of anywhere else you see this claim.&lt;/p&gt;

&lt;p&gt;The headline "95%" figure on our own site uses the sat-exam denominator, averaged across multiple cohorts and certification tracks rather than a single one, which is why it differs slightly from the single-cohort example above. The point of showing this calculation isn't to argue our specific number, it's to show the method, so you can ask any institute, including us, to show theirs the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a dishonest version of this looks like
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# The flattering-but-misleading version: pick whichever denominator is smallest,
# and never mention which one you used
&lt;/span&gt;&lt;span class="n"&gt;misleading_number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;passed_exam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;sat_exam&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;  &lt;span class="c1"&gt;# looks the strongest, stated with no context
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a hypothetical. It is the single most common pattern behind inflated certification claims: a correct calculation, against a denominator chosen for how good it looks rather than for what it actually measures, presented without the denominator ever being named.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question worth asking anyone who quotes you a number
&lt;/h2&gt;

&lt;p&gt;"Is that out of everyone who enrolled, everyone who finished, or everyone who sat the exam?" Any institute with a real, verifiable number can answer immediately, because they calculated it once and know exactly what it measures. An institute that has to think about the question, or that gives you a vague restatement of the original percentage instead of naming a denominator, is telling you something worth paying attention to.&lt;/p&gt;

&lt;p&gt;This is one specific piece of a larger pattern worth checking before you commit to any training provider, not just on the success-rate claim but across every claim on their homepage. &lt;a href="https://academy.sherdil.org/best-cloud-computing-training-institutes-pakistan-2025-2026-comparison/" rel="noopener noreferrer"&gt;If you're comparing institutes more broadly, here's a complete framework and scoring method for evaluating cloud training providers in Pakistan&lt;/a&gt;, built around exactly this kind of verifiable evidence rather than marketing copy.&lt;/p&gt;




&lt;p&gt;I wrote up the complete picture of what our certification success rate actually measures, how it's tracked, and why we publish the methodology rather than just the headline number, over here: &lt;a href="https://academy.sherdil.org/sherdil-it-academy-why-95-certification-success-rate-matters/" rel="noopener noreferrer"&gt;Sherdil IT Academy: Why a 95% Certification Success Rate Matters&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Has an institute ever actually shown you their denominator when you asked? What happened?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>career</category>
      <category>cloud</category>
      <category>transparency</category>
    </item>
    <item>
      <title>The One GCP IAM Feature AWS and Azure Still Don't Match</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Mon, 26 Oct 2026 10:45:23 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/the-one-gcp-iam-feature-aws-and-azure-still-dont-match-hik</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/the-one-gcp-iam-feature-aws-and-azure-still-dont-match-hik</guid>
      <description>&lt;p&gt;Most IAM concepts translate cleanly across AWS, Azure, and GCP: roles, policies, scopes, the vocabulary differs but the shape is the same. One GCP feature genuinely does not have a clean native equivalent on the other two: IAM Conditions, which let you attach an expression directly to a role binding so access is granted only when that expression evaluates true. Here's what it actually does, and when it's worth reaching for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem it solves
&lt;/h2&gt;

&lt;p&gt;Standard IAM grants access until someone remembers to revoke it. A contractor given temporary project access, an on-call engineer who needs elevated permissions only during an incident, a role that should only apply from a specific resource, all of these normally require either a manual revocation step someone has to remember, or a separate automation pipeline to enforce the restriction. IAM Conditions build the restriction into the binding itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Grant a role that automatically expires, no cleanup job required&lt;/span&gt;
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--member&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"user:contractor@example.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"roles/storage.objectViewer"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'expression=request.time &amp;lt; timestamp("2026-11-30T00:00:00Z"),title=contractor-access,description=Expires end of Nov 2026'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That binding simply stops granting access after the timestamp passes. No cron job, no reminder, no manual revoke step that someone forgets during a busy week.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Grant access scoped to a specific resource pattern, not the whole project&lt;/span&gt;
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--member&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"serviceAccount:ci-deploy@YOUR_PROJECT_ID.iam.gserviceaccount.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"roles/storage.objectAdmin"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'expression=resource.name.startsWith("projects/_/buckets/staging-"),title=staging-only,description=CI can only touch staging buckets'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the pattern that matters most in practice: a CI/CD service account that can write to staging buckets but is structurally incapable of touching anything named &lt;code&gt;prod-*&lt;/code&gt;, enforced by IAM itself rather than by hoping the pipeline code never has a bug.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking what's actually in effect
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud projects get-iam-policy YOUR_PROJECT_ID &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json | &lt;span class="se"&gt;\&lt;/span&gt;
  jq &lt;span class="s1"&gt;'.bindings[] | select(.condition != null)'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auditing conditional bindings is itself a skill worth having, because a condition silently narrows or time-bounds an otherwise broad-looking role, and a policy review that only reads role names without reading conditions will miss that nuance entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is worth knowing even if GCP isn't your main cloud
&lt;/h2&gt;

&lt;p&gt;AWS has some comparable building blocks (IAM policy conditions using context keys, time-based tags) and Azure has Conditional Access for identity sign-in scenarios, but neither bakes an arbitrary expression directly into a standard role binding at the resource-access layer the way GCP does. If your work is mostly AWS or Azure today, understanding this pattern is still useful: it's a clean mental model for "access that should not need a human to remember to revoke it," and recognizing where your current cloud makes you build that manually is a good prompt to go build it.&lt;/p&gt;

&lt;p&gt;Whichever cloud you end up specializing in, access-expiry and least-privilege patterns like this one show up constantly on the hands-on portion of most cloud certification exams. If Azure is the direction you're actually training toward, &lt;a href="https://academy.sherdil.org/azure-az-104-exam-cost-preparation-guide-for-pakistani-professionals/" rel="noopener noreferrer"&gt;the complete AZ-104 cost and preparation guide, including a lab plan built around exactly this kind of IAM scenario&lt;/a&gt;, is the place to pick that up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put together the complete 2026 picture for GCP certification in Pakistan, exam costs, job roles, and a realistic career path, over here: &lt;a href="https://academy.sherdil.org/gcp-certification-pakistan-2026-costs-jobs-career-path/" rel="noopener noreferrer"&gt;GCP Certification Pakistan 2026: Costs, Jobs, Career Path&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you used conditional IAM bindings for something other than time-bound access? What was the use case?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>googlecloud</category>
      <category>security</category>
      <category>cloud</category>
    </item>
    <item>
      <title>I Learned Two Cloud Topics Two Ways. One-Month Retention Test.</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Fri, 23 Oct 2026 06:27:19 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/i-learned-two-cloud-topics-two-ways-one-month-retention-test-2i1o</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/i-learned-two-cloud-topics-two-ways-one-month-retention-test-2i1o</guid>
      <description>&lt;p&gt;"Hands-on labs beat passive video" is repeated constantly in cloud training advice, including by me, in other posts, without ever being shown. So I ran a small test on myself: two cloud topics I had never touched before, roughly matched for difficulty, the same total study time on each, one learned entirely through video content and notes, the other entirely through hands-on labs. Then I quizzed myself at one week and again at one month, honestly, before looking anything up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caveat up front:&lt;/strong&gt; this is a sample size of one, run on myself, with all the bias that implies. It is not a controlled study. Treat it as one data point, not proof, and notice whether the pattern matches your own experience rather than taking the numbers as universal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Two topics, matched for approximate difficulty, 6 hours of study time each
&lt;/span&gt;&lt;span class="n"&gt;topics&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;Azure Virtual Networking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;method&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;video_course&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;hours&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Azure Storage &amp;amp; Access Control&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;method&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;hands_on_labs&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;hours&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Self-quiz: 20 practical questions per topic, scored honestly, no lookups
# Scored at two checkpoints: 1 week after study, 1 month after study
&lt;/span&gt;&lt;span class="n"&gt;results&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;Azure Virtual Networking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;week_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;month_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;   &lt;span class="c1"&gt;# out of 20
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Azure Storage &amp;amp; Access Control&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;week_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;month_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="c1"&gt;# out of 20
&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;topic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;decay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;week_1&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;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;month_1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;decay_pct&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;decay&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;week_1&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="mi"&gt;100&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;topic&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;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;week_1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/20 -&amp;gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;month_1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/20  (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;decay_pct&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% decay)&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Azure Virtual Networking: 15/20 -&amp;gt; 8/20  (47% decay)
Azure Storage &amp;amp; Access Control: 17/20 -&amp;gt; 15/20  (12% decay)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What actually happened
&lt;/h2&gt;

&lt;p&gt;The video-learned topic started slightly weaker at the one-week mark, which already hints at something, and then fell off a cliff by one month: nearly half of what I thought I knew at week one was gone a month later. The lab-learned topic started stronger and barely moved. By the one-month mark the gap was not subtle: 8 out of 20 versus 15 out of 20 on topics I had rated myself equally confident in at the one-week checkpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this probably isn't a fluke, even at n=1
&lt;/h2&gt;

&lt;p&gt;The honest mechanism, as far as I can tell from paying attention to my own recall during the quiz, was not that the video content was lower quality. It was that I could recall &lt;em&gt;facts&lt;/em&gt; about networking concepts without being able to reconstruct &lt;em&gt;how to do anything&lt;/em&gt; with them, while the lab-learned storage and access control material came back as procedure, not facts. Procedural memory built from actually typing commands and watching them succeed or fail seems to survive a month in a way that passively-absorbed facts do not. That matches a decent amount of general learning-science literature on the difference between declarative and procedural memory, for whatever that is worth here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd actually change based on this
&lt;/h2&gt;

&lt;p&gt;Not "never watch another video," that would overcorrect past what one data point supports. What I would change: use video for the initial orientation to a new concept, the first pass that gets the vocabulary and the shape of the problem into your head, then move to hands-on labs as fast as possible for anything you actually need to retain past a week. The video-only topic above was pure video with no lab component at all, which is probably the worst version of the comparison, and a more realistic recommendation is video-to-orient, labs-to-retain, not one or the other exclusively.&lt;/p&gt;

&lt;p&gt;If you want to see what this looks like applied to a real exam rather than an isolated topic, &lt;a href="https://academy.sherdil.org/azure-az-104-exam-cost-preparation-guide-for-pakistani-professionals/" rel="noopener noreferrer"&gt;the complete lab-first study plan I built for the AZ-104, six weeks of nothing but Azure CLI commands mapped to the actual exam domains&lt;/a&gt;, is the practical version of the argument this post is making in miniature.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put together the complete case for why hands-on training beats theory-first content for cloud specifically, with the research and the practical format that makes it work, over here: &lt;a href="https://academy.sherdil.org/hands-on-labs-vs-theory-practical-cloud-training-approach/" rel="noopener noreferrer"&gt;Hands-On Labs vs Theory: Practical Cloud Training Approach&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Has your own retention matched this pattern, or have you had a topic that stuck fine from video alone? Drop it in the comments.&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>career</category>
      <category>cloud</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>I Simulated 3 Training Paths to See Which Breaks Even Fastest</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Fri, 09 Oct 2026 07:05:31 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/i-simulated-3-training-paths-to-see-which-breaks-even-fastest-3fo</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/i-simulated-3-training-paths-to-see-which-breaks-even-fastest-3fo</guid>
      <description>&lt;p&gt;"Just do it yourself for free" and "pay for a structured program" get argued as if one is obviously right. Neither is, on its own, because they trade cost for time differently, and time has a cost too. Here's a small simulation that makes the tradeoff explicit instead of arguing about it in the abstract.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three paths, modeled
&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;months_to_breakeven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;upfront_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;months_to_hireable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opportunity_cost_per_month&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="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    upfront_cost:            cash spent on the path itself
    months_to_hireable:      realistic months until the new skill is job-ready
    monthly_salary_lift:     salary increase once hired/promoted into the role
    opportunity_cost_per_month: income foregone each month while training (0 if studying alongside a job)
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;total_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;upfront_cost&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opportunity_cost_per_month&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;months_to_hireable&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;monthly_salary_lift&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&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;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inf&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;months_to_hireable&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_cost&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;paths&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;Self-study (free resources, alongside a job)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;upfront_cost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;15_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;# practice exams, occasional paid resource
&lt;/span&gt;        &lt;span class="n"&gt;months_to_hireable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="c1"&gt;# slower without structure or accountability
&lt;/span&gt;        &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;35_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;opportunity_cost_per_month&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="c1"&gt;# studying evenings/weekends, no income lost
&lt;/span&gt;    &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Paid bootcamp (part-time, alongside a job)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;upfront_cost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;120_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;months_to_hireable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;35_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;opportunity_cost_per_month&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="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Employer-sponsored (full-time, company pays and schedules it)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;upfront_cost&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="c1"&gt;# employer pays
&lt;/span&gt;        &lt;span class="n"&gt;months_to_hireable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;# smaller lift: often a role change, not external offer
&lt;/span&gt;        &lt;span class="n"&gt;opportunity_cost_per_month&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="c1"&gt;# still salaried throughout
&lt;/span&gt;    &lt;span class="p"&gt;),&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;paths&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&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;name&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="nf"&gt;months_to_breakeven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; months total to break even&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Self-study (free resources, alongside a job): 10.4 months total to break even
Paid bootcamp (part-time, alongside a job): 7.4 months total to break even
Employer-sponsored (full-time, company pays and schedules it): 3.0 months total to break even
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the numbers are actually saying
&lt;/h2&gt;

&lt;p&gt;Employer-sponsored training wins by a wide margin whenever it is genuinely available, which is unsurprising, zero upfront cost and no income gap are hard to beat. The more interesting comparison is self-study against a paid bootcamp, because that is the decision most people are actually facing. In this model, the bootcamp breaks even three months sooner than self-study, purely because structure compresses the "months to hireable" number more than its PKR 120,000 fee costs in opportunity. That gap closes or reverses fast if you change one assumption: someone with strong self-discipline who can realistically hit a 5 or 6-month self-study timeline instead of 10 erases the bootcamp's advantage almost entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The assumption that decides the whole comparison
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;months_to_hireable&lt;/code&gt; is doing more work in this model than the fee is. Change it and the ranking flips:&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="c1"&gt;# Same self-study path, but with real discipline and a fixed weekly schedule
&lt;/span&gt;&lt;span class="n"&gt;disciplined_self_study&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;upfront_cost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;15_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;months_to_hireable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                               &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;35_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opportunity_cost_per_month&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;months_to_breakeven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;disciplined_self_study&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 5.4 months -&amp;gt; now beats the bootcamp
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the honest finding: the fee is not what decides whether paid training is worth it. Your own realistic timeline is. Paying for structure is really paying to compress that one number, and whether that purchase is worth it depends entirely on how honestly you can estimate your own self-study pace, not on comparing fees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it with your own numbers
&lt;/h2&gt;

&lt;p&gt;Swap in your actual cost, your actual estimated timeline for each path, and your actual expected salary lift. The model is deliberately simple so you can sanity-check every input instead of trusting a black box. If you want the certification-fee side of this filled in with real 2026 pricing, &lt;a href="https://academy.sherdil.org/cloud-certification-costs-pakistan-2026-investment-worth-it/" rel="noopener noreferrer"&gt;here's the complete breakdown of what cloud certifications actually cost in Pakistan, hidden costs included&lt;/a&gt;, which plugs directly into the &lt;code&gt;upfront_cost&lt;/code&gt; field above.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put together the complete ROI analysis for Pakistani professionals, the full methodology, and realistic timelines by specialization, over here: &lt;a href="https://academy.sherdil.org/cloud-training-roi-investment-analysis-for-pakistani-professionals/" rel="noopener noreferrer"&gt;Cloud Training ROI Investment Analysis for Pakistani Professionals&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run your own months_to_hireable estimate honestly. Did self-study or paid training come out ahead for you?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>python</category>
      <category>career</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>I Built a Calculator So I'd Stop Guessing at Certification ROI</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Tue, 06 Oct 2026 09:42:03 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/i-built-a-calculator-so-id-stop-guessing-at-certification-roi-2o1e</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/i-built-a-calculator-so-id-stop-guessing-at-certification-roi-2o1e</guid>
      <description>&lt;p&gt;Every certification ROI conversation I have ends up the same way: someone eyeballs a fee against a possible salary bump and calls it "probably worth it." That is not a calculation, it is a vibe. So I wrote a small calculator that forces the actual inputs onto the table, retake risk and study time included, instead of just the fee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model
&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;cert_total_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exam_fee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;retake_probability&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;study_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hourly_value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extras&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="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    exam_fee:           base exam fee, local currency
    retake_probability: 0-1, your honest odds of needing a second attempt
    study_hours:        realistic hours to prepare
    hourly_value:       what an hour of your time is worth to you (income, or opportunity cost)
    extras:              practice exams, lab credits, etc.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;expected_exam_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exam_fee&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;retake_probability&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;time_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;study_hours&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;hourly_value&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expected_exam_cost&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;time_cost&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;extras&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;payback_months&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&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;monthly_salary_lift&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&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;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inf&lt;/span&gt;&lt;span class="sh"&gt;"&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;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_cost&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function most people skip in their head is &lt;code&gt;retake_probability&lt;/code&gt;. A 30% chance of a second attempt is not a footnote, it is 30% more exam fee baked into the real cost before you have sat it once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running real numbers
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# AZ-104, moderate confidence, studying around a full-time job
&lt;/span&gt;&lt;span class="n"&gt;az104_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;cert_total_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;exam_fee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;46_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;       &lt;span class="c1"&gt;# PKR
&lt;/span&gt;    &lt;span class="n"&gt;retake_probability&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;study_hours&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;hourly_value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="c1"&gt;# PKR/hour opportunity cost
&lt;/span&gt;    &lt;span class="n"&gt;extras&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;# practice exams
&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;az104_cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="c1"&gt;# 97,500
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;payback_months&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;az104_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;35_000&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 2.8 months
&lt;/span&gt;
&lt;span class="c1"&gt;# A Professional-level GCP exam, same assumptions scaled up
&lt;/span&gt;&lt;span class="n"&gt;gcp_pro_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;cert_total_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;exam_fee&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;56_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;retake_probability&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;study_hours&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;hourly_value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;extras&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12_000&lt;/span&gt;&lt;span class="p"&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;gcp_pro_cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;        &lt;span class="c1"&gt;# 143,600
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;payback_months&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gcp_pro_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;monthly_salary_lift&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;45_000&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 3.2 months
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Professional-level exam costs almost 50% more once study time and retake risk are priced in, but the payback window only stretches by about half a month, because the salary lift scales with it. That is the entire point of running the number instead of comparing fees side by side: the sticker price alone would have made the gap between these two look much larger than it actually is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why &lt;code&gt;hourly_value&lt;/code&gt; is the variable worth arguing about
&lt;/h2&gt;

&lt;p&gt;This is the input people get wrong in both directions. Set it too low and every certification looks free. Set it to your full salary rate and even a cheap exam looks expensive, because you are implicitly assuming every study hour displaced an hour of paid work, which is rarely true for evening or weekend study. A reasonable middle ground for most people is somewhere between zero and your actual hourly rate, scaled by how much that time would otherwise have gone to something valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the calculator will not tell you
&lt;/h2&gt;

&lt;p&gt;It gives you a number, not a decision. It cannot tell you whether a certification's market demand is durable, or whether the skill underneath it is one you will actually enjoy using for the next few years. For a specific example of working through the certification-choice question with those non-financial factors included, &lt;a href="https://academy.sherdil.org/gcp-certification-pakistan-2026-costs-jobs-career-path/" rel="noopener noreferrer"&gt;here's how to decide which GCP certification to sit first, based on your actual role rather than the fee alone&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put the full cost breakdown in one place, exam by exam with 2026 pricing, hidden costs most people forget to budget, and the complete payback math by certification, over here: &lt;a href="https://academy.sherdil.org/cloud-certification-costs-pakistan-2026-investment-worth-it/" rel="noopener noreferrer"&gt;Cloud Certification Costs Pakistan 2026: Is the Investment Worth It?"&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run your own numbers through this. What's your honest retake_probability, and does the payback window surprise you?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>python</category>
      <category>career</category>
      <category>cloud</category>
      <category>certification</category>
    </item>
    <item>
      <title>I Deployed the Same App to AWS, Azure, and GCP. Here's What Transfers.</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Mon, 28 Sep 2026 10:24:44 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/i-deployed-the-same-app-to-aws-azure-and-gcp-heres-what-transfers-2dh6</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/i-deployed-the-same-app-to-aws-azure-and-gcp-heres-what-transfers-2dh6</guid>
      <description>&lt;p&gt;"&lt;strong&gt;Multi-cloud&lt;/strong&gt;" gets thrown around as if clouds were interchangeable once you know one. They are not, but they are also not as different as vendor marketing wants you to believe. The only way to find out where the real line sits is to deploy the same thing three times and pay attention to what actually transferred. So I took one containerized app and pushed it to AWS, Azure, and GCP in the same afternoon. Here is exactly what carried over and what did not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same container, three CLIs
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# AWS: push to ECR, deploy to App Runner&lt;/span&gt;
aws ecr create-repository &lt;span class="nt"&gt;--repository-name&lt;/span&gt; demo-app
docker push &amp;lt;account&amp;gt;.dkr.ecr.us-east-1.amazonaws.com/demo-app:v1
aws apprunner create-service &lt;span class="nt"&gt;--service-name&lt;/span&gt; demo-app &lt;span class="nt"&gt;--source-configuration&lt;/span&gt; file://source.json

&lt;span class="c"&gt;# Azure: push to ACR, deploy to Container Apps&lt;/span&gt;
az acr create &lt;span class="nt"&gt;--name&lt;/span&gt; demoacr &lt;span class="nt"&gt;--resource-group&lt;/span&gt; demo-rg &lt;span class="nt"&gt;--sku&lt;/span&gt; Basic
docker push demoacr.azurecr.io/demo-app:v1
az containerapp create &lt;span class="nt"&gt;--name&lt;/span&gt; demo-app &lt;span class="nt"&gt;--resource-group&lt;/span&gt; demo-rg &lt;span class="nt"&gt;--image&lt;/span&gt; demoacr.azurecr.io/demo-app:v1

&lt;span class="c"&gt;# GCP: push to Artifact Registry, deploy to Cloud Run&lt;/span&gt;
gcloud artifacts repositories create demo-repo &lt;span class="nt"&gt;--repository-format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;docker &lt;span class="nt"&gt;--location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;us-central1
docker push us-central1-docker.pkg.dev/PROJECT/demo-repo/demo-app:v1
gcloud run deploy demo-app &lt;span class="nt"&gt;--image&lt;/span&gt; us-central1-docker.pkg.dev/PROJECT/demo-app:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three completely different command syntaxes. If you only measure "how many new commands did I type," multi-cloud looks brutal. That is the wrong measurement.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually transferred
&lt;/h2&gt;

&lt;p&gt;The concepts did, almost entirely. Every one of these deployments needed the same mental checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A container registry, authenticated before push&lt;/li&gt;
&lt;li&gt;A managed compute layer that pulls from that registry and runs the container&lt;/li&gt;
&lt;li&gt;Environment variables and secrets injected at deploy time, not baked into the image&lt;/li&gt;
&lt;li&gt;A public endpoint with HTTPS handled for me&lt;/li&gt;
&lt;li&gt;Logs and basic metrics available without extra setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I had that checklist in my head from the AWS pass, the Azure and GCP passes were mostly "find the equivalent command," not "relearn the idea." The second cloud took under half the time of the first. The third took less than that.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did not transfer, and cost real time
&lt;/h2&gt;

&lt;p&gt;IAM was the honest exception. AWS IAM policies, Azure RBAC role assignments, and GCP IAM bindings are conceptually similar, permissions attached to identities, but the syntax, the scoping model, and the default-deny versus default-allow behavior differ enough that I made a real mistake on each cloud the first time through: an over-permissive service account here, a missing role binding there. Networking defaults were the second exception; what counts as "publicly reachable by default" is not the same answer on all three.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# The three IAM mental models, compressed&lt;/span&gt;
&lt;span class="c"&gt;# AWS: attach a policy document to a role, mostly allow-by-exception&lt;/span&gt;
&lt;span class="c"&gt;# Azure: assign a built-in or custom role to a principal at a scope (sub/RG/resource)&lt;/span&gt;
&lt;span class="c"&gt;# GCP: bind a role to a member on a resource, IAM is closer to the surface everywhere&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What this means for how you should actually train
&lt;/h2&gt;

&lt;p&gt;If a course teaches "AWS from scratch," "Azure from scratch," and "GCP from scratch" as three unrelated modules, it is teaching the syntax three times and the concepts zero times, which is the slow way to get multi-cloud competent. The efficient path is the opposite: learn the concepts once, deep, on whichever cloud your job actually uses, then treat every additional cloud as a syntax-and-IAM problem, not a fresh start. That is a very different training design than most bootcamps run, and it is worth knowing which kind of program you are signing up for before you pay.&lt;/p&gt;

&lt;p&gt;This distinction matters even more once you are past learning for yourself and into upskilling a whole team, where the cost of teaching three clouds as three separate courses multiplies fast. If that is the situation you are in, &lt;a href="https://academy.sherdil.org/corporate-cloud-training-upskilling-pakistani-development-teams/" rel="noopener noreferrer"&gt;how corporate cloud training for development teams in Pakistan actually approaches this differently&lt;/a&gt; is worth reading before you scope a training budget.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I wrote up the complete case for why multi-cloud training is where the market is heading, and what a well-designed multi-cloud curriculum actually looks like, over here: &lt;a href="https://academy.sherdil.org/why-multi-cloud-training-is-the-future-pakistans-cloud-academy-landscape/" rel="noopener noreferrer"&gt;Why Multi-Cloud Training Is the Future: Pakistan's Cloud Academy Landscape&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you've deployed to more than one cloud, was IAM the thing that tripped you up too, or was it something else? Drop it in the comments.&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>aws</category>
      <category>azure</category>
    </item>
    <item>
      <title>Stop Comparing Cloud Institutes by Vibes: A 20-Line Scoring Script</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Fri, 25 Sep 2026 11:29:32 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/stop-comparing-cloud-institutes-by-vibes-a-20-line-scoring-script-20fp</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/stop-comparing-cloud-institutes-by-vibes-a-20-line-scoring-script-20fp</guid>
      <description>&lt;p&gt;If you are choosing a cloud training institute in Pakistan, you have probably done the same thing most people do: visited a few websites, sat through a couple of sales calls, and picked the one that felt most convincing. The problem is that "felt convincing" is exactly what a sales call is engineered to produce. So here is a way to take your own judgment out of the sales room and put it on paper: a weighted scorecard, in about twenty lines of Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Pick the factors that actually predict a good outcome, decide how much each one matters to you, rate every institute on each factor from 0 to 5, and let arithmetic do the comparison. The weights are the important part, because they force you to admit what you actually care about before you see any brochure.&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="n"&gt;WEIGHTS&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;hands_on_labs&lt;/span&gt;&lt;span class="sh"&gt;"&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="c1"&gt;# share of class time spent in real environments
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instructor_current&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# still working in the field, not just teaching
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cert_alignment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# syllabus maps to the exam's published objectives
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mentor_ratio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;      &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# realistic student-to-mentor support
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;placement_support&lt;/span&gt;&lt;span class="sh"&gt;"&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="c1"&gt;# interview prep, referrals, portfolio review
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cost_transparency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# exam fees, retakes, extras stated up front
&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;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ratings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;ratings: each factor rated 0-5. Returns a score out of 100.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;WEIGHTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;ratings&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;WEIGHTS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;institute_a&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;hands_on_labs&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instructor_current&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cert_alignment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
               &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mentor_ratio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;placement_support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cost_transparency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;institute_b&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;hands_on_labs&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instructor_current&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cert_alignment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
               &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mentor_ratio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;placement_support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cost_transparency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&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="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;institute_a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 69.0
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;institute_b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 67.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The two institutes above are hypothetical, chosen to show a close call. On these weights, A edges out B by two points, mostly because it is lab-heavy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the weights matter more than the ratings
&lt;/h2&gt;

&lt;p&gt;Now change one thing: suppose you know you struggle without hands-on guidance, so you shift weight from labs to mentoring.&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="n"&gt;WEIGHTS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hands_on_labs&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mentor_ratio&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;institute_a&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 65.0
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;institute_b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# 71.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ranking flipped, and nothing about either institute changed. Only your priorities did. That is the whole point of the exercise: the "best" institute is not a fact about the institute, it is a fact about the match between the institute and you. Any published ranking, including ours, is answering someone else's weights.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to fill in the ratings honestly
&lt;/h2&gt;

&lt;p&gt;A score is only as good as the evidence behind it, so rate from things you can verify, not from things you were told.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hands-on labs:&lt;/strong&gt; ask for the syllabus and count lab sessions against lecture sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instructor current:&lt;/strong&gt; check their recent work history, not their five-year-old bio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cert alignment:&lt;/strong&gt; the syllabus should reference the exam's real domains by name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mentor ratio:&lt;/strong&gt; ask for the actual batch size and how many people answer questions, not the marketing number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Placement support:&lt;/strong&gt; ask for a specific recent example, a role and a timeline, not a percentage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost transparency:&lt;/strong&gt; get exam fees and retake costs in writing before you pay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an institute will not answer one of these, rate that factor a 0 or 1. Evasion is data.&lt;/p&gt;

&lt;h2&gt;
  
  
  One limit of any scorecard
&lt;/h2&gt;

&lt;p&gt;A spreadsheet cannot see delivery quality. Two institutes with identical syllabi can teach very differently, so treat the score as a way to shortlist two or three candidates, then sit in on a trial class before you decide. If you are shortlisting specifically in Karachi, &lt;a href="https://academy.sherdil.org/top-it-training-academies-karachi-what-to-look-for/" rel="noopener noreferrer"&gt;what to look for in a top IT training academy there, including the red flags worth walking away from&lt;/a&gt; pairs well with this script, since it covers the local details a generic rubric will miss.&lt;/p&gt;




&lt;p&gt;*I ran this kind of comparison across the cloud training market in Pakistan and wrote up the full findings, institute by institute, over here: &lt;a href="https://academy.sherdil.org/best-cloud-computing-training-institutes-pakistan-2025-2026-comparison/" rel="noopener noreferrer"&gt;&lt;strong&gt;Best Cloud Computing Training Institutes in Pakistan 2025-2026: Comparison&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What weight would you put on hands-on labs versus mentoring? Drop your numbers in the comments and see whose ranking changes.&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>python</category>
      <category>cloud</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Deployed a Model to Production. The ML Part Was the Easy 20%.</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Thu, 24 Sep 2026 10:53:27 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/i-deployed-a-model-to-production-the-ml-part-was-the-easy-20-3jim</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/i-deployed-a-model-to-production-the-ml-part-was-the-easy-20-3jim</guid>
      <description>&lt;p&gt;Training a model that scores well on a validation set takes an afternoon with the right tutorial. Getting that same model to serve real traffic, reliably, without quietly burning through a cloud budget, took me longer than the training did. That gap is not a machine learning problem. It is a cloud engineering checklist, and here is what is actually on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: containerize the model, not the notebook
&lt;/h2&gt;

&lt;p&gt;A notebook is not a deployable artifact. The first real step is packaging inference code into a container with a pinned, minimal dependency set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# A serving image should be small and boring, not a full training environment&lt;/span&gt;
docker build &lt;span class="nt"&gt;-t&lt;/span&gt; model-serve:v1 &lt;span class="nb"&gt;.&lt;/span&gt;
docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 model-serve:v1
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST localhost:8080/predict &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"input": [...]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your image is several gigabytes because it includes the full training toolchain, split it. Training and serving have almost nothing in common as workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: push it somewhere a scheduler can find it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Tag and push to a registry your cluster or managed service can pull from&lt;/span&gt;
docker tag model-serve:v1 gcr.io/your-project/model-serve:v1
docker push gcr.io/your-project/model-serve:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: deploy with resource limits set on purpose, not left default
&lt;/h2&gt;

&lt;p&gt;This is the step that separates a working demo from a production service. GPU and memory limits are not optional extras.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# GKE example: a deployment with explicit resource requests/limits&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; - &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
apiVersion: apps/v1
kind: Deployment
metadata:
  name: model-serve
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: model-serve
        image: gcr.io/your-project/model-serve:v1
        resources:
          requests: {cpu: "1", memory: "2Gi"}
          limits: {cpu: "2", memory: "4Gi", nvidia.com/gpu: "1"}
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Leave limits unset and one bad request, or one memory leak, can take down every other workload sharing the node. This is the single most common mistake in a first production deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: put autoscaling on both ends, not just replicas
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl autoscale deployment model-serve &lt;span class="nt"&gt;--min&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2 &lt;span class="nt"&gt;--max&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10 &lt;span class="nt"&gt;--cpu-percent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;70
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scaling replicas up under load is the easy half. The harder half is scaling back down aggressively when traffic drops, since idle GPU time is the line item that quietly wrecks a budget. Check your scale-down settings, not just the scale-up ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: monitor latency and cost as one dashboard, not two
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Vertex AI example: check endpoint metrics from the CLI&lt;/span&gt;
gcloud ai endpoints describe ENDPOINT_ID &lt;span class="nt"&gt;--region&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;us-central1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Watch p99 latency and hourly spend side by side. A model that is fast but expensive and a model that is cheap but slow both fail the same way in production: someone eventually turns them off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: have a rollback that takes one command
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl rollout undo deployment/model-serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If rolling back requires a manual process, it will not happen fast enough when it matters. Test the rollback before you need it, not during an incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this list actually is
&lt;/h2&gt;

&lt;p&gt;None of these six steps required a machine learning skill. They required cluster and infrastructure fundamentals applied to a workload that happens to serve a model instead of a web app. That is exactly the gap that is opening up in the market right now: plenty of people can train a model, and a shorter supply of people can be trusted to run one.&lt;/p&gt;

&lt;p&gt;If this checklist felt more familiar than the modeling itself, that is worth paying attention to. The roles built around exactly this skill set are growing faster than the general cloud job market right now, and knowing where they actually are matters more than knowing they exist. I mapped out where the current AI-adjacent cloud demand sits in Pakistan, sector by sector, over here: &lt;a href="https://academy.sherdil.org/cloud-computing-jobs-pakistan-2025-2026-where-opportunities-are/" rel="noopener noreferrer"&gt;what the cloud computing job market in Pakistan actually looks like right now&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put the complete picture together, the specific skills that map to each stage of an ML pipeline, realistic salary data for AI-adjacent cloud roles, and where demand is concentrated, over here: &lt;a href="https://academy.sherdil.org/ai-and-cloud-computing-in-pakistan-why-machine-learning-needs-cloud-engineers/" rel="noopener noreferrer"&gt;AI and Cloud Computing in Pakistan: Why Machine Learning Needs Cloud Engineers&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of these six steps have you actually had to debug at 2am? Drop it in the comments.&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>cloud</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>6 Weeks of Hands-On Azure CLI Labs to Pass the AZ-104</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Tue, 15 Sep 2026 10:08:31 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/6-weeks-of-hands-on-azure-cli-labs-to-pass-the-az-104-444a</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/6-weeks-of-hands-on-azure-cli-labs-to-pass-the-az-104-444a</guid>
      <description>&lt;p&gt;The AZ-104 is a performance-based exam. You are clicking through the actual Azure portal and typing real commands under a timer, not answering multiple choice about what a resource group is. Which makes it strange how much AZ-104 prep still consists of watching four-hour video courses and taking notes. Notes do not build the muscle memory the exam is actually testing.&lt;/p&gt;

&lt;p&gt;So here is the plan I would run instead: 6 weeks, entirely hands-on, built around the free-tier Azure sandbox and the Azure CLI, mapped directly to the exam's own skill domains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before week 1: set up the sandbox
&lt;/h2&gt;

&lt;p&gt;Use a free Azure account or the Microsoft Learn sandbox, not a shared work subscription. You need permission to break things.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az login
az account &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;--subscription&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;your-sub-id&amp;gt;"&lt;/span&gt;
az group create &lt;span class="nt"&gt;--name&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--location&lt;/span&gt; eastus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every week below assumes you are working inside this one resource group, and tearing pieces of it down as you go, which is itself part of the exam's skill set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 1-2: Identity and governance
&lt;/h2&gt;

&lt;p&gt;This domain is roughly 20% of the exam and the one people skip in video courses because it feels administrative. It is not administrative on exam day.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a user and assign a role at resource-group scope&lt;/span&gt;
az ad user create &lt;span class="nt"&gt;--display-name&lt;/span&gt; &lt;span class="s2"&gt;"Lab User"&lt;/span&gt; &lt;span class="nt"&gt;--user-principal-name&lt;/span&gt; labuser@yourtenant.onmicrosoft.com &lt;span class="nt"&gt;--password&lt;/span&gt; &lt;span class="s2"&gt;"TempPass123!"&lt;/span&gt;
az role assignment create &lt;span class="nt"&gt;--assignee&lt;/span&gt; labuser@yourtenant.onmicrosoft.com &lt;span class="nt"&gt;--role&lt;/span&gt; &lt;span class="s2"&gt;"Contributor"&lt;/span&gt; &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab

&lt;span class="c"&gt;# Apply a resource lock so you cannot accidentally delete the group mid-lab&lt;/span&gt;
az lock create &lt;span class="nt"&gt;--name&lt;/span&gt; dont-delete &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--lock-type&lt;/span&gt; CanNotDelete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of week 2, you should be able to explain the difference between a role assignment at subscription, resource-group, and resource scope without looking it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 3-4: Storage, compute, and networking
&lt;/h2&gt;

&lt;p&gt;The largest single chunk of the exam, and the one that rewards raw repetition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Storage: create an account and a container, then lock down public access&lt;/span&gt;
az storage account create &lt;span class="nt"&gt;--name&lt;/span&gt; az104labstorage &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--sku&lt;/span&gt; Standard_LRS
az storage container create &lt;span class="nt"&gt;--name&lt;/span&gt; lab-container &lt;span class="nt"&gt;--account-name&lt;/span&gt; az104labstorage &lt;span class="nt"&gt;--public-access&lt;/span&gt; off

&lt;span class="c"&gt;# Compute: spin up a VM and immediately resize it&lt;/span&gt;
az vm create &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vm &lt;span class="nt"&gt;--image&lt;/span&gt; Ubuntu2204 &lt;span class="nt"&gt;--generate-ssh-keys&lt;/span&gt;
az vm resize &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vm &lt;span class="nt"&gt;--size&lt;/span&gt; Standard_B2s

&lt;span class="c"&gt;# Networking: create a VNet and a subnet, then check effective routes&lt;/span&gt;
az network vnet create &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vnet &lt;span class="nt"&gt;--subnet-name&lt;/span&gt; lab-subnet
az network nic show-effective-route-table &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vmVMNic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do each of these commands at least three times across the two weeks, changing one parameter each time. The exam rewards fluency, not familiarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 5-6: Monitoring and troubleshooting
&lt;/h2&gt;

&lt;p&gt;The domain most people under-prepare for, because it is the hardest to fake with flashcards.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Enable diagnostic logging and query it back&lt;/span&gt;
az monitor diagnostic-settings create &lt;span class="nt"&gt;--name&lt;/span&gt; lab-diag &lt;span class="nt"&gt;--resource&lt;/span&gt; /subscriptions/&amp;lt;sub-id&amp;gt;/resourceGroups/az104-lab/providers/Microsoft.Compute/virtualMachines/lab-vm &lt;span class="nt"&gt;--logs&lt;/span&gt; &lt;span class="s1"&gt;'[{"category": "Administrative","enabled": true}]'&lt;/span&gt; &lt;span class="nt"&gt;--storage-account&lt;/span&gt; az104labstorage

&lt;span class="c"&gt;# Simulate a failure and practice reading it&lt;/span&gt;
az vm stop &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vm
az vm get-instance-view &lt;span class="nt"&gt;--resource-group&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--name&lt;/span&gt; lab-vm &lt;span class="nt"&gt;--query&lt;/span&gt; instanceView.statuses
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deliberately break something in your own sandbox during week 6, a wrong NSG rule, a stopped VM a dependent service expects to be running, and practice diagnosing it from the CLI output alone. That is a closer simulation of exam pressure than any video course gets you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tear it all down
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az group delete &lt;span class="nt"&gt;--name&lt;/span&gt; az104-lab &lt;span class="nt"&gt;--yes&lt;/span&gt; &lt;span class="nt"&gt;--no-wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do this at the end of every week, not just at the end of the plan. Rebuilding the resource group from scratch each time is itself repetition, and it keeps you from accumulating a messy sandbox that no longer reflects a clean exam-day state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not replace
&lt;/h2&gt;

&lt;p&gt;A lab plan gets you fluent with the tooling. It does not replace working through the official exam skills outline line by line, or sitting a few timed practice exams in the final week to get used to the two-hour pace. Treat this as the hands-on 80%, not the whole 100%.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put the complete picture in one place: the current 2026 exam fee in PKR, what a realistic study timeline actually looks like around a full-time job, and the free resources worth using before you pay for anything, over here: &lt;a href="https://academy.sherdil.org/azure-az-104-exam-cost-preparation-guide-for-pakistani-professionals/" rel="noopener noreferrer"&gt;Azure AZ-104 Exam Cost &amp;amp; Preparation Guide for Pakistani Professionals&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Once you pass, &lt;a href="https://academy.sherdil.org/azure-administrator-salary-pakistan-2026-az-104-certified-professionals/" rel="noopener noreferrer"&gt;what does the AZ-104 actually add to your paycheck as an Azure Administrator in Pakistan&lt;/a&gt;? Worth knowing before you commit six weeks to this.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which domain above is the one you'd need to lab the hardest? Drop it in the comments.&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>certification</category>
      <category>career</category>
    </item>
    <item>
      <title>The Kubernetes Exam Your Daily kubectl History Already Chose</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Mon, 31 Aug 2026 07:25:08 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/the-kubernetes-exam-your-daily-kubectl-history-already-chose-5518</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/the-kubernetes-exam-your-daily-kubectl-history-already-chose-5518</guid>
      <description>&lt;p&gt;Every syllabus comparison of the CKA and the CKAD tells you the same thing: one is broader, one is narrower, both are two hours, both need 66%, both are 100% hands-on. None of that actually tells you which one to sit. What tells you is far simpler and sitting right there in your shell history: the commands you already run against a cluster every week.&lt;/p&gt;

&lt;p&gt;Instead of another domain-by-domain breakdown, run this 5-command self-test. It takes less time than reading a syllabus PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  The self-test
&lt;/h2&gt;

&lt;p&gt;Open your shell history (&lt;code&gt;history | grep kubectl&lt;/code&gt;, or just think back to last week) and check off which of these five you actually typed, not which ones you know exist.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Node-level operations&lt;/span&gt;
kubectl drain node-3 &lt;span class="nt"&gt;--ignore-daemonsets&lt;/span&gt;
kubectl cordon node-3

&lt;span class="c"&gt;# 2. Cluster state backup/restore&lt;/span&gt;
etcdctl snapshot save /backup/etcd-snap.db

&lt;span class="c"&gt;# 3. Cluster-wide access control&lt;/span&gt;
kubectl create rolebinding dev-binding &lt;span class="nt"&gt;--role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dev-role &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;jane &lt;span class="nt"&gt;-n&lt;/span&gt; team-a

&lt;span class="c"&gt;# 4. Rolling out an application change&lt;/span&gt;
kubectl &lt;span class="nb"&gt;set &lt;/span&gt;image deployment/api &lt;span class="nv"&gt;api&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;myorg/api:v2.3
kubectl rollout status deployment/api

&lt;span class="c"&gt;# 5. Application-level debugging&lt;/span&gt;
kubectl describe pod api-7d9f8 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-A5&lt;/span&gt; Events
kubectl logs api-7d9f8 &lt;span class="nt"&gt;--previous&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Commands 1 through 3 are cluster-owner work: you are responsible for the machine underneath the workloads, not just the workloads. Commands 4 and 5 are the daily reality of shipping and debugging an application on infrastructure someone else keeps running.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scoring it
&lt;/h2&gt;

&lt;p&gt;If your real, honest history leans 1-2-3, that is a CKA profile. The exam's four domains, cluster architecture, workloads and scheduling, services and networking, and troubleshooting, are all written from the point of view of the person who owns the node, not just the pod running on it.&lt;/p&gt;

&lt;p&gt;If your history leans 4-5, that is a CKAD profile. Its domains, application design, deployment configuration, observability, and application environment, assume the cluster is a given and test how fast and correctly you can ship and fix what runs on top of it.&lt;/p&gt;

&lt;p&gt;Most engineers do not sit at either extreme. If you are close to even, the tiebreaker is not preference, it is the market: over 80% of Kubernetes job postings in Pakistan in 2026 name the CKA specifically, even for roles that lean closer to application deployment day-to-day. When the self-test is a genuine toss-up, that market data is the deciding vote, not a coin flip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats a syllabus comparison
&lt;/h2&gt;

&lt;p&gt;A syllabus tells you what is testable. It does not tell you what is natural. Two engineers can read the identical CKA domain list and one will find etcd restore drills intuitive because they have broken a cluster and fixed it before, while the other will find the same drills exhausting because their daily work never touches that layer. Preparation time roughly triples when you are studying a domain that is not already close to your muscle memory. The self-test above is really a proxy for that: it tells you which exam you can prepare for in 12 weeks without fighting your own instincts the whole way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The certification is one line item, not the whole plan
&lt;/h2&gt;

&lt;p&gt;Whichever exam the self-test points you to, it is worth remembering that a certification is a single, well-defined credential inside a much longer career arc, not a career plan by itself. If you are mapping out where a Kubernetes credential actually sits relative to the rest of the skill stack, from Linux fundamentals through to a lead or architect title, &lt;a href="https://academy.sherdil.org/devops-career-path-in-pakistan-2026-from-junior-to-lead/" rel="noopener noreferrer"&gt;the complete DevOps Career Guide for Pakistan&lt;/a&gt; lays out the full seven-to-ten-year path and exactly where a CKA or CKAD pays off most along it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I put the full comparison in one place: the 2026 PKR pricing for both exams, role-based recommendations, and the salary premium each certification carries in the Pakistani market, over here: &lt;a href="https://academy.sherdil.org/kubernetes-certification-pakistan-cka-vs-ckad/" rel="noopener noreferrer"&gt;Kubernetes Certification Pakistan: CKA vs CKAD&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ran the self-test. Which side did your real history land on, and did the exam you sat match it?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>certification</category>
      <category>career</category>
    </item>
    <item>
      <title>A Free 16-Week Cloud and DevOps Syllabus for Karachi (2026)</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Mon, 17 Aug 2026 08:21:08 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/a-free-16-week-cloud-and-devops-syllabus-for-karachi-2026-342n</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/a-free-16-week-cloud-and-devops-syllabus-for-karachi-2026-342n</guid>
      <description>&lt;p&gt;Every free resource you need to go from zero to a genuinely hireable cloud or DevOps skill set already exists, and most of it is free. The problem was never access. The problem is that nobody hands you an order, so people bounce between AWS Skill Builder, random YouTube tutorials, and a Udemy course they never finish, and eight months later they still could not tell you what job they are qualified for.&lt;/p&gt;

&lt;p&gt;So here is a fixed syllabus. Sixteen weeks, entirely free resources, no ambiguity about what to do next. Follow it in order.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 1 to 3: Linux and the command line
&lt;/h2&gt;

&lt;p&gt;Nothing else on this list works without this foundation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;freeCodeCamp's Linux fundamentals content&lt;/strong&gt; (YouTube) for the core commands, file permissions, and process management&lt;/li&gt;
&lt;li&gt;Practice daily in a free-tier virtual machine or WSL, not just by watching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of week 3 you should be comfortable navigating a server with no GUI, editing files in vim or nano, and managing basic services with &lt;code&gt;systemctl&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Daily practice habit, not optional&lt;/span&gt;
ssh into your VM every day, even &lt;span class="k"&gt;for &lt;/span&gt;ten minutes
systemctl status &amp;lt;any-service&amp;gt;
journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; &amp;lt;any-service&amp;gt; &lt;span class="nt"&gt;--since&lt;/span&gt; today
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Weeks 4 to 6: Git and one programming language
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;freeCodeCamp&lt;/strong&gt; again, this time for Python or JavaScript fundamentals&lt;/li&gt;
&lt;li&gt;Git and GitHub, practiced by committing something daily, not just reading about branches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By week 6 you should have a GitHub profile with actual commit history, not a blank green square.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 7 to 10: Pick one cloud, go deep
&lt;/h2&gt;

&lt;p&gt;This is the point where people scatter across AWS, Azure, and GCP at once and slow themselves down. Pick one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Skill Builder&lt;/strong&gt; (free tier) if you are targeting the widest local hiring base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Skills Boost&lt;/strong&gt; if your target companies run GCP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Learn&lt;/strong&gt; if you already know you are heading into a bank or an Azure shop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whichever you pick, do the hands-on labs, not just the reading modules. Deploy something real: a static site, a small API, a database-backed app. Screenshot it working and write a short note on what you built and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 11 to 13: Containers and Kubernetes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KodeKloud's free YouTube content&lt;/strong&gt; for Docker and Kubernetes fundamentals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TechWorld with Nana&lt;/strong&gt; for the conceptual explanations that make Kubernetes click&lt;/li&gt;
&lt;li&gt;Build a local cluster (Minikube or Kind) and deploy your week 7 to 10 project into it
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Minimum viable proof you understand the basics&lt;/span&gt;
kubectl get pods
kubectl describe pod &amp;lt;pod-name&amp;gt;
kubectl logs &amp;lt;pod-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of week 13, you should be able to explain what a Pod, a Deployment, and a Service each do, and why you would use one over another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weeks 14 to 16: CI/CD and one real end-to-end project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; documentation and examples (free, and the most commonly used CI/CD tool for portfolio projects)&lt;/li&gt;
&lt;li&gt;Wire your containerized app from weeks 11 to 13 into a pipeline: commit triggers build, build triggers deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the single most important project on the whole syllabus. One complete pipeline, end to end, on your GitHub, proves more than every certificate of completion combined.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this syllabus does not include, on purpose
&lt;/h2&gt;

&lt;p&gt;It does not include every free resource that exists. DigiSkills, NAVTTC, and the other government programs are worth exploring, but they overlap heavily with what is already listed here, and running two curricula at once is how people stall. Pick this syllabus or a government program, not both at the same time.&lt;/p&gt;

&lt;p&gt;It also does not end with a certification, deliberately. This sequence builds the skill. What you do with it next, whether that is applying for jobs directly or adding a formal certification like the CKA to make the skill legible to recruiters, is a separate decision. If you finish this syllabus and want the credential that makes 80% of local Kubernetes job postings take you seriously, &lt;a href="https://academy.sherdil.org/kubernetes-cka-certification-guide-for-pakistani-engineers/" rel="noopener noreferrer"&gt;the full CKA certification prep guide for Pakistani engineers&lt;/a&gt; picks up exactly where week 16 leaves off.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest timeline
&lt;/h2&gt;

&lt;p&gt;Following this syllabus at a genuine 10 to 12 hours a week, sixteen weeks gets you to a real, demonstrable skill level, not a finished career. Expect another few months of job searching and interview practice after that. It is slower than a paid bootcamp, and it costs nothing but the hours you put in.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This 16-week path is one route through it. I put together the complete list of every genuinely useful free program available in Karachi in 2026, government and vendor programs included, along with honest notes on where each one is weak, over here: "&lt;a href="https://academy.sherdil.org/free-it-courses-in-karachi/" rel="noopener noreferrer"&gt;free IT courses in Karachi&lt;/a&gt;".&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where are you on this syllabus right now, and which phase has taken longer than you expected?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>7 Questions to Ask Before Paying for an IT Course in Karachi</title>
      <dc:creator>Sherdil IT Academy</dc:creator>
      <pubDate>Mon, 03 Aug 2026 07:18:20 +0000</pubDate>
      <link>https://dev.to/usman_sherdil_582e626a7db/7-questions-to-ask-before-paying-for-an-it-course-in-karachi-oa5</link>
      <guid>https://dev.to/usman_sherdil_582e626a7db/7-questions-to-ask-before-paying-for-an-it-course-in-karachi-oa5</guid>
      <description>&lt;p&gt;Karachi does not have a shortage of IT courses. It has a shortage of good ones, buried inside a much larger pile of institutes selling outdated slide decks at bootcamp prices. With fees running anywhere from PKR 40,000 to 180,000 depending on the specialization, picking wrong is not a small mistake. It is months of time and real money.&lt;/p&gt;

&lt;p&gt;I get asked "which institute should I join" often enough that I built a fixed checklist. It is not about brand names. It is seven questions that expose the difference between a course built for outcomes and a course built to fill seats.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Who is teaching, and are they still doing the work?
&lt;/h2&gt;

&lt;p&gt;Ask for the instructor's current job title, not their job title from five years ago. Cloud, DevOps, and security move fast, and an instructor who has not touched a production system recently is teaching from memory, not from practice. A quick LinkedIn check settles this in two minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Is the curriculum hands-on or slide-based?
&lt;/h2&gt;

&lt;p&gt;Ask what percentage of class time is lab work versus lecture. For technical fields like AWS, Kubernetes, or cloud security, anything below 60 percent hands-on is a red flag. You are not paying to watch slides; you can get slides for free. You are paying for guided practice on real environments with someone there to unblock you when something breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What do graduates actually build?
&lt;/h2&gt;

&lt;p&gt;Ask to see finished student projects, not marketing testimonials. A real program produces a portfolio: a deployed app, a hardened cluster, a CI/CD pipeline someone can point to in an interview. If the institute cannot show you specific student work, they likely are not producing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Does the fee include the certification exam?
&lt;/h2&gt;

&lt;p&gt;Certification vouchers (AWS, CKA, AZ-500) cost real money on top of the course itself. Some providers bundle the exam fee; many do not, and only mention that after you have paid. Get this in writing before you enroll, because it can add tens of thousands of rupees to what looked like a fixed price.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Is there any placement or interview support?
&lt;/h2&gt;

&lt;p&gt;A course that ends the day the class ends is teaching, not career support. Ask specifically what happens after: mock interviews, resume review, referrals, or a portfolio review session. Programs that treat placement as part of the product, not an afterthought, tend to be run by people who actually track outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What is the batch size, and who answers questions?
&lt;/h2&gt;

&lt;p&gt;A 60-person batch with one instructor means you are mostly on your own. Ask the actual student-to-mentor ratio, not the marketing number. This single detail predicts more about your experience than almost anything else on this list.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Can they show you a hiring outcome, specifically?
&lt;/h2&gt;

&lt;p&gt;Not "our students get placed." Ask for a specific example: a name, a company, a rough timeline from course completion to offer. Vague claims are cheap to make. Specific, checkable ones are not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading the answers together
&lt;/h2&gt;

&lt;p&gt;No single answer disqualifies a provider on its own. But if you ask all seven and get vague or dodged answers on more than two or three, that is your answer. The Karachi IT training market has genuinely strong providers in it. It also has a lot of noise. This checklist is how you tell them apart before you pay, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this actually leads
&lt;/h2&gt;

&lt;p&gt;The reason to be this careful is that the destination is real. Cloud, DevOps, and especially cloud security remain some of the most underserved technical niches in Pakistan's job market right now, and the pay gap between a well-trained engineer and a self-taught one closes fast once you can prove hands-on skill. If security is the direction you are weighing, it is worth understanding [what the cloud security career path actually looks like in Pakistan][INTERNAL] before you pick a course, since the right training decision depends on which of those roles you are actually aiming for.&lt;/p&gt;




&lt;p&gt;*I put the full picture together in one place: fee ranges by specialization, the specific in-demand courses for 2026, and a deeper breakdown of free versus paid options, over here: &lt;a href="https://academy.sherdil.org/it-courses-in-karachi-2026/" rel="noopener noreferrer"&gt;IT courses in Karachi for 2026&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of these seven questions have you never thought to ask before enrolling somewhere?&lt;/strong&gt; Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>career</category>
      <category>cloud</category>
      <category>devops</category>
      <category>it</category>
    </item>
  </channel>
</rss>
