<?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: Jitendra Balla</title>
    <description>The latest articles on DEV Community by Jitendra Balla (@jkballa).</description>
    <link>https://dev.to/jkballa</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%2F4023061%2F17eb46a5-78e9-4dc8-ba82-c7388a83c521.png</url>
      <title>DEV Community: Jitendra Balla</title>
      <link>https://dev.to/jkballa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jkballa"/>
    <language>en</language>
    <item>
      <title>The API docs pipeline that runs itself (week 1 recap)</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Wed, 15 Jul 2026 17:46:00 +0000</pubDate>
      <link>https://dev.to/jkballa/the-api-docs-pipeline-that-runs-itself-week-1-recap-5ok</link>
      <guid>https://dev.to/jkballa/the-api-docs-pipeline-that-runs-itself-week-1-recap-5ok</guid>
      <description>&lt;p&gt;One week in. Let's connect the dots, because the tools are useful alone but the real win is chaining them.&lt;/p&gt;

&lt;p&gt;Here's the pipeline:&lt;/p&gt;

&lt;p&gt;You build and test an endpoint. You verify it with cURL. You run that through cURL to Markdown (&lt;a href="https://markdown.co.in/tools/curl-to-markdown.html" rel="noopener noreferrer"&gt;https://markdown.co.in/tools/curl-to-markdown.html&lt;/a&gt;), or generate from your OpenAPI spec (&lt;a href="https://markdown.co.in/tools/openapi-to-markdown.html" rel="noopener noreferrer"&gt;https://markdown.co.in/tools/openapi-to-markdown.html&lt;/a&gt;) if you're spec-driven. You add the human layer: a plain description and a working first example. Then you keep it honest by regenerating in the same PR.&lt;/p&gt;

&lt;p&gt;The whole point is that accuracy stops depending on memory. Your docs come from the things you actually ran. That's the difference between docs you trust and docs you tolerate.&lt;/p&gt;

&lt;p&gt;Mindset shift for the week: documentation isn't a chore you do after the real work. It's a byproduct of doing the real work well.&lt;/p&gt;

&lt;p&gt;Next week: conversion and migration. Moving between HTML, Markdown, and PDF without losing your weekend.&lt;/p&gt;

</description>
      <category>api</category>
      <category>documentation</category>
      <category>tooling</category>
      <category>devops</category>
    </item>
    <item>
      <title>Your docs don't rot because you're lazy</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Tue, 14 Jul 2026 17:44:00 +0000</pubDate>
      <link>https://dev.to/jkballa/your-docs-dont-rot-because-youre-lazy-1bok</link>
      <guid>https://dev.to/jkballa/your-docs-dont-rot-because-youre-lazy-1bok</guid>
      <description>&lt;p&gt;Every stale doc has the same origin story. The code changed. The docs didn't. And the reason isn't laziness. It's distance.&lt;/p&gt;

&lt;p&gt;When docs live far from your code, updating them is a separate task with its own friction. You have to remember they exist, switch context, find the page, make the edit. Every step is a chance to just not bother.&lt;/p&gt;

&lt;p&gt;Shrink the distance. Keep docs in the repo, and update them in the same pull request that changes the behavior.&lt;/p&gt;

&lt;p&gt;This is where generated docs pay off twice. Since your API docs come from your cURL commands or OpenAPI spec, "updating the docs" becomes "regenerating the docs." Mechanical. Fast. Actually doable in the same PR.&lt;/p&gt;

&lt;p&gt;One habit that beats all good intentions: add a line to your PR checklist that says "Docs regenerated and reviewed?" That single checkbox does more for doc quality than anything else.&lt;/p&gt;

&lt;p&gt;And when docs and code change together, reviewers catch mismatches before they reach a user.&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>devops</category>
      <category>git</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Great API docs don't lead with a parameter table</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Mon, 13 Jul 2026 17:41:00 +0000</pubDate>
      <link>https://dev.to/jkballa/great-api-docs-dont-lead-with-a-parameter-table-5a43</link>
      <guid>https://dev.to/jkballa/great-api-docs-dont-lead-with-a-parameter-table-5a43</guid>
      <description>&lt;p&gt;Hot take: complete API docs are not the same as good API docs.&lt;/p&gt;

&lt;p&gt;Everyone thinks great docs means listing every endpoint, every parameter, every response code. Sure, that's necessary. But it's not what makes docs good.&lt;/p&gt;

&lt;p&gt;What makes them good is answering the first question a developer actually has: how do I make one successful request?&lt;/p&gt;

&lt;p&gt;Nobody opens your docs wanting a reference manual. They want to get something working. Give them a copy-pasteable example that succeeds on the first try and you've earned their trust. Then they'll happily dig into the details.&lt;/p&gt;

&lt;p&gt;My structure for any endpoint:&lt;/p&gt;

&lt;p&gt;One plain sentence on what it does. Not "retrieves the resource" but "gets the details for a single order."&lt;br&gt;
A working example. This is where your generated Markdown shines.&lt;br&gt;
The reference details. Parameters, edge cases, errors. Dense is fine here.&lt;/p&gt;

&lt;p&gt;Most docs get this backwards and open with a wall of parameter tables before you've seen a single working call. Flip it.&lt;/p&gt;

</description>
      <category>api</category>
      <category>documentation</category>
      <category>webdev</category>
      <category>coding</category>
    </item>
    <item>
      <title>Swagger vs OpenAPI, explained in 30 seconds</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Sun, 12 Jul 2026 17:38:00 +0000</pubDate>
      <link>https://dev.to/jkballa/swagger-vs-openapi-explained-in-30-seconds-3e3g</link>
      <guid>https://dev.to/jkballa/swagger-vs-openapi-explained-in-30-seconds-3e3g</guid>
      <description>&lt;p&gt;People say "Swagger" and "OpenAPI" like they're two different things. Here's the actual story.&lt;/p&gt;

&lt;p&gt;Swagger came first. It was a spec plus tooling for describing REST APIs. It got so popular the spec was donated to a foundation and renamed OpenAPI. So today, "Swagger" sometimes means the old spec, sometimes the tools, and sometimes just OpenAPI out of habit.&lt;/p&gt;

&lt;p&gt;The practical bit: if you have a Swagger file, it's almost certainly OpenAPI-compatible, and you can turn it into docs the same way.&lt;/p&gt;

&lt;p&gt;Swagger to Markdown handles either: &lt;a href="https://markdown.co.in/tools/swager-to-markdown.html" rel="noopener noreferrer"&gt;https://markdown.co.in/tools/swager-to-markdown.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bigger lesson from this week: if a machine-readable version of your API already exists in any form, you should almost never write docs from scratch. Generate first, polish second.&lt;/p&gt;

&lt;p&gt;One tiny tip: pick one name, Swagger or OpenAPI, and use it consistently across your team. Saves new folks a surprising amount of confusion.&lt;/p&gt;

</description>
      <category>swagger</category>
      <category>api</category>
      <category>backend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Your OpenAPI spec is already your documentation</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Sat, 11 Jul 2026 17:36:00 +0000</pubDate>
      <link>https://dev.to/jkballa/your-openapi-spec-is-already-your-documentation-4bch</link>
      <guid>https://dev.to/jkballa/your-openapi-spec-is-already-your-documentation-4bch</guid>
      <description>&lt;p&gt;If your team defines APIs with an OpenAPI spec, you're closer to good docs than you think.&lt;/p&gt;

&lt;p&gt;That spec already describes every endpoint, parameter, and response. Machines love it. Humans reading raw YAML? Not so much. And that gap is where docs die. Someone hand-writes a "readable" version that immediately drifts out of sync with the spec.&lt;/p&gt;

&lt;p&gt;Close the gap. Feed your spec into OpenAPI to Markdown and get formatted docs out: &lt;a href="https://markdown.co.in/tools/openapi-to-markdown.html" rel="noopener noreferrer"&gt;https://markdown.co.in/tools/openapi-to-markdown.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The best part is it kills the "two sources of truth" problem. Update the spec, regenerate the docs. They can't drift apart because one comes from the other.&lt;/p&gt;

&lt;p&gt;Pro move: keep the generated docs in your repo next to the spec. When the spec changes in a PR, regenerate in the same PR. Reviewers see both change together, and nothing slips through.&lt;/p&gt;

&lt;p&gt;Stop maintaining docs by hand next to a perfectly good spec. Let the spec do the work.&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Stop retyping your API. Turn cURL into docs instantly.</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Fri, 10 Jul 2026 17:35:00 +0000</pubDate>
      <link>https://dev.to/jkballa/stop-retyping-your-api-turn-curl-into-docs-instantly-38kb</link>
      <guid>https://dev.to/jkballa/stop-retyping-your-api-turn-curl-into-docs-instantly-38kb</guid>
      <description>&lt;p&gt;Here's an absurd thing I did for years.&lt;/p&gt;

&lt;p&gt;I'd test an endpoint with a cURL command. It worked. Then, to document it, I'd open a Markdown file and retype the whole thing by hand. The method, the URL, the headers, the body, a sample response. Information I already had, typed twice, in a format I hated.&lt;/p&gt;

&lt;p&gt;If that's you, today's a good day.&lt;/p&gt;

&lt;p&gt;The cURL to Markdown tool takes your cURL command and turns it into clean, formatted API docs. Paste, get Markdown, done: &lt;a href="https://markdown.co.in/tools/curl-to-markdown.html" rel="noopener noreferrer"&gt;CURL to Markdown&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why it matters: the cURL command is the thing you actually ran and verified. When your docs come straight from it, they're accurate by default. No translating from memory, which is exactly where mistakes creep in.&lt;/p&gt;

&lt;p&gt;My flow now: test the endpoint, paste the cURL, tidy up the description, ship. Fifteen minutes of formatting became two.&lt;/p&gt;

&lt;p&gt;Try it on the last endpoint you built. Watch the boring part disappear.&lt;/p&gt;

</description>
      <category>api</category>
      <category>markdown</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Nobody writes bad docs on purpose. It just happens.</title>
      <dc:creator>Jitendra Balla</dc:creator>
      <pubDate>Thu, 09 Jul 2026 17:32:32 +0000</pubDate>
      <link>https://dev.to/jkballa/nobody-writes-bad-docs-on-purpose-it-just-happens-2kna</link>
      <guid>https://dev.to/jkballa/nobody-writes-bad-docs-on-purpose-it-just-happens-2kna</guid>
      <description>&lt;p&gt;Every project I've worked on had bad docs at some point. Not once was it a decision.&lt;/p&gt;

&lt;p&gt;It happens slowly. A feature ships without docs because the deadline was tight. The next one skips docs too, because last time nothing broke. Six months later someone opens the wiki and finds three pages that contradict each other and a README that still says "coming soon."&lt;/p&gt;

&lt;p&gt;Here's the reframe that changed things for me: docs are not a writing problem. They're a systems problem. Good docs come from removing the friction that makes people skip writing, not from trying harder.&lt;/p&gt;

&lt;p&gt;That's what this series is about. 30 days of making documentation less painful, using free tools you can start with today. No enterprise platform. No approval process. Just less busywork.&lt;/p&gt;

&lt;p&gt;Tomorrow we start with the one that fixed my whole workflow: turning API tests into docs without retyping anything.&lt;/p&gt;

&lt;p&gt;If your docs are held together with hope and copy-paste right now, welcome. Let's fix it.&lt;/p&gt;

</description>
      <category>markdown</category>
      <category>documentation</category>
      <category>webdev</category>
      <category>100daysofcode</category>
    </item>
  </channel>
</rss>
